﻿#monopolyGame {
    position: absolute;
    top: -10px;
    width: 1875px;
    height: 1015px;
    overflow: hidden;
    display: none;
    /* margin-left: auto; */
    /* margin-right: auto; */
    left: -10px;
    /* right: 0px; */
    border: 1px solid white;
}

#monopolyBoard {
    width: 1875px;
    height: 800px;
    overflow-y: auto;
    position: absolute;
    top: 0px;
    left: 0px;
    overflow-x: hidden;
    /* border: 1px solid white;*/
}

#monopolyChatDiv {
    position: absolute;
    width: 530px;
    height: 205px;
    overflow: hidden;
    top: 805px;
    left: 1340px;
    border: 1px solid white;
}

#monopolyChatMessages {
    position: absolute;
    overflow-x: hidden;
    overflow-y: auto;
    width: 530px;
    height: 160px;
    top: 0px;
    left: 0px;
    border-right: 1px solid white;
}

#monopolyChatMessageInput {
    position: absolute;
    width: 400px;
    height: 30px;
    top: 165px;
    left: 0px;
    font-size: 20px;
}

#monopolyChatMessageSend {
    position: absolute;
    width: 110px;
    height: 30px;
    top: 165px;
    font-size: 20px;
    left: 415px;
}

#monopolyHand {
    display: block;
    width: 1335px;
    height: 205px;
    overflow-y: auto;
    overflow-x: hidden;
    position: absolute;
    top: 805px;
    left: 0px;
    border: 1px solid white;
}


#mTopLeftPlayer {
    top: 50px;
    left: 0px;
}

#mTopRighttPlayer {
    top: 50px;
    left: 1250px;
}

#mTopCentertPlayer {
    top: 0px;
    left: 625px;
}

#mBottomLeftPlayer {
    top: 440px;
    left: 0px;
}

#mBottomRightPlayer {
    top: 440px;
    left: 1250px;
}

#monopolyOptions {
    position: absolute;
    top: 770px;
    left: 0px;
    width: 1335px;
    height: 80px;
    overflow: hidden;
    border: 1px solid white;
}

#monopolyGlobalCards {
    display: block;
    position: absolute;
    top: 550px;
    left: 800px;
    width: 250px;
    height: 205px;
    border: 1px solid white;
    overflow: hidden;
}

#monopolyDeck {
    border: 1px solid white;
    position: absolute;
    width: 220px;
    height: 75px;
    top: 0px;
    left: 225px;
}

#monopolyDiscardDiv {
    display: block;
    position: absolute;
    top: 420px;
    left: 760px;
    width: 350px;
    height: 240px;
    /* border: 1px solid white; */
    overflow: hidden;
}

#monopolyDiscard {
width: 130px;
    height: 110px;
    display: block;
    position: absolute;
    left: 80px;
    top: 70px;
}

/* A non-interactive copy of the property pile a played rent card is charging
 * from, shown just to the right of the discard pile so players can see the
 * source of the rent amount. */
#monopolyRentSource {
    position: absolute;
    /* Vertically centered on the discard card (#monopolyDiscard sits at design y
     * 490 and the card is 157.5 tall -> center 568.75); translateY keeps it
     * centered no matter how tall the previewed pile is. */
    top: 569px;
    transform: translateY(-50%);
    left: 1020px;
    width: 210px;
    z-index: 50;
    pointer-events: none;
    text-align: center;
}

/* Looping semi-transparent red arrows drawn from a played charging card (in the
 * discard) to each player who still owes rent.  The shaft's dashes flow toward
 * the target to convey direction; the solid arrowhead sits on the board edge. */
#mRentArrowSvg {
    position: absolute;
    top: 0;
    left: 0;
    width: 1875px;
    height: 1015px;
    pointer-events: none;
    z-index: 60;
}

.mRentArrowLine {
    stroke: rgba(255, 40, 40, 0.45);
    stroke-width: 8px;
    stroke-linecap: round;
    stroke-dasharray: 18 14;
    animation: mRentArrowFlow 0.55s linear infinite;
}

.mRentArrowHeadFill {
    fill: rgba(255, 40, 40, 0.5);
}

@keyframes mRentArrowFlow {
    to {
        stroke-dashoffset: -32;
    }
}

#monopolyRentSourceLabel {
    font-size: 16px;
    line-height: 18px;
    margin-bottom: 4px;
}

#monopolyRentSourcePile {
    display: inline-block;
}

#monopolyTurnInfo {
    display: block;
    position: absolute;
    top: 5px;
    left: 5px;
    /*border: 1px solid white;*/
    width: 610px;
    height: 40px;
}

#monopolyActivePlayerDiv {
    display: block;
    position: absolute;
    top: 0px;
    left: 115px;
    width: 500px;
    height: 40px;
    line-height: 40px;
    text-align: center;
    font-size: 18px;
}

#monopolyChanceDeck {
    border: 1px solid white;
    position: absolute;
    width: 220px;
    height: 75px;
    top: 85px;
    left: 225px;
}

#monopolyOptionsDiv {
    display: block;
    border: 1px solid white;
    top: 610px;
    left: 0px;
    position: absolute;
    width: 1335px;
    height: 85px;
    overflow-x: hidden;
    overflow-y: auto;
}

#monopolyControlPanel {
    position: absolute;
    top: 5px;
    left: 1250px;
    /*border: 1px solid white;*/
    width: 615px;
    height: 40px;
}


#monopolyTurnNumber {
    display: block;
    position: absolute;
    top: 0px;
    left: 5px;
    width: 100px;
    height: 40px;
    font-size: 20px;
    line-height: 40px;
}

/* The End Turn button sits in the center of the board, just below the action
 * prompt ("select a card to play..."), and is only shown on your turn
 * (toggled by mUpdateMyTurnUI).  It is a child of #monopolyControlPanel (anchored
 * top-left at 1250,5), so these offsets place it under #monopolyGameMessageDiv. */
#monopolyEndTurnButton {
    display: none;
    position: absolute;
    top: 443px;
    left: -440px;
    width: 250px;
    height: 35px;
    font-size: 30px;
    line-height: 30px;
}

#monopolySettingsButton {
    display: block;
    position: absolute;
    top: 0px;
    width: 100px;
    height: 40px;
    font-size: 30px;
    line-height: 30px;
    right: 0px;
}

#monopolySelectOptionDiv {
width: 620px;
    display: block;
    position: absolute;
    top: 700px;
    left: 625px;
    overflow-x: hidden;
    overflow-y: auto;
    border: 1px solid white;
    height: 100px;
    align-content: center;
    font-size: 17px;
    line-height: 20px;
}

#monopolyGameMessageDiv {
    width: 620px;
    display: block;
    position: absolute;
    top: 370px;
    left: 625px;
    overflow: hidden;
    border: 1px solid white;
    height: 70px;
    text-align: center;
    font-size: 20px;
    line-height: 20px;
    align-content: center;
}

#monopolyDialog {
    position: absolute;
    width: 801px;
    height: 340px;
    top: 170px;
    left: 50%;
    margin-left: -400px;
    border-radius: 15px;
    box-shadow: 0px 0px 15px 5px black;
    padding: 10px;
    cursor: all-scroll;
    overflow: hidden;
    z-index: 100;
    display: none;
}

.mPlayerDiv {
    width: 610px;
    height: 350px;
    margin-right: 5px;
    overflow-y: auto;
    overflow-x: hidden;
    /* float: left; */
    border: 5px solid whitesmoke;
    position: absolute;
    scrollbar-width: none;
}

/* Badge over a player who has blocked the current charge with a Just Say No
   (the symbol + the card name), shown to everyone while the charge resolves. */
.mJsnBlockBadge {
    position: absolute;
    top: 6px;
    left: 50%;
    transform: translateX(-50%);
    padding: 4px 14px;
    background: rgba(0, 0, 0, 0.78);
    border: 2px solid red;
    border-radius: 8px;
    font-size: 24px;
    font-weight: 1000;
    color: red;
    white-space: nowrap;
    z-index: 60;
    pointer-events: none;
}

.mJsnBlockBadge .mNoSymbol {
    color: red;
}

.mPropertyContainer {
    width: 200px;
    max-height: 180px;
    /*float: left;*/
    display: inline-block;
    overflow: hidden;
}

.mHandContainer {
    width: 610px;
    height: 30px;
    overflow: hidden;
    display: block;
}

.mHandCard {
    width: 50px;
    height: 25px;
    border: 1px solid whitesmoke;
    font-style: italic;
    color: rgba(255,255,255,0.3);
    margin-left: 1px;
    margin-right: 1px;
    float: left;
    line-height: 20px;
    text-align: center;
    font-size: 20px;
}

.mPlayerMoneyDiv {
    width: 610px;
    height: 55px;
    overflow-x: hidden;
    overflow-y: auto;
    scrollbar-width: none;
}

.mPlayerPropertyDiv {
    width: 610px;
    height: 235px;
    overflow-x: hidden;
    overflow-y: auto;
    scrollbar-width: none;
}

.monopolySymbol {
    display: inline-block;
    transform: rotate(180deg);
    -webkit-transform: rotate(180deg);
}

/* The per-player monopoly count, pinned to the top-left corner of the player's
 * board in bright pink (one rotated-won "M" per completed monopoly). */
.mMonopolyCountDiv {
    position: absolute;
    top: 3px;
    left: 6px;
    z-index: 6;
    font-size: 26px;
    line-height: 26px;
    color: #ff1493;
    font-weight: 1000;
    pointer-events: none;
}

.mPlayerStatsDiv {
    display: block;
    width: 610px;
    height: 30px;
    font-size: 23px;
    line-height: 30px;
    text-align: center;
}

/* ---- Monopoly dialogs ----------------------------------------------------
   Every dialog is sized to its content (no fixed width/height) and positioned
   by JS (mShowDialog) centered over the discard pile.  max-width/height keep a
   large dialog on-canvas; the card/data area scrolls if it would overflow. */
#mSelectCardDialog {
    position: absolute;
    width: auto;
    height: auto;
    max-width: 1000px;
    border-radius: 15px;
    box-shadow: 0px 0px 15px 5px black;
    padding: 10px;
    cursor: all-scroll;
    z-index: 100;
}

#mSelectCardDialogText {
    width: auto;
    max-width: 980px;
    border-radius: 15px;
    text-align: center;
}


#mSelectCardDialogData {
    width: auto;
    max-width: 980px;
    max-height: 620px;
    margin-top: 5px;
    text-align: center;
    overflow: auto;
}

#mGeneralDialog {
    position: absolute;
    width: auto;
    height: auto;
    max-width: 1000px;
    border-radius: 15px;
    box-shadow: 0px 0px 15px 5px black;
    padding: 10px;
    cursor: all-scroll;
    z-index: 100;
}

#mGeneralDialogText {
    width: auto;
    max-width: 980px;
    border-radius: 15px;
    text-align: center;
}

#mGeneralDialogData {
    width: auto;
    max-width: 980px;
    max-height: 620px;
    margin-top: 5px;
    text-align: center;
    overflow: auto;
}

#mGeneralDialogButtonsDiv {
    width: auto;
    margin-top: 5px;
    text-align: center;
}

#mSelectMonopolyCardsDialog {
    position: absolute;
    width: auto;
    height: auto;
    max-width: 1000px;
    border-radius: 15px;
    box-shadow: 0px 0px 15px 5px black;
    padding: 10px;
    cursor: all-scroll;
    z-index: 100;
}

#mSelectMonopolyCardsDialogText {
    width: auto;
    max-width: 980px;
    border-radius: 15px;
    text-align: center;
}


#mSelectMonopolyCardsDialogData {
    width: auto;
    max-width: 980px;
    max-height: 620px;
    margin-top: 5px;
    text-align: center;
    overflow: auto;
}


#mSelectMonopolyCardsDialogButtonsDiv {
    width: auto;
    margin-top: 5px;
    text-align: center;
}

#mVictoryDialog {
    position: absolute;
    width: auto;
    height: auto;
    max-width: 1000px;
    border-radius: 15px;
    box-shadow: 0px 0px 15px 5px black;
    padding: 10px;
    cursor: all-scroll;
    z-index: 100;
    display: none;
}

#mVictoryDialogMessage {
    width: auto;
    max-width: 980px;
    height: 25px;
    border-radius: 15px;
    text-align: center;
    font-size: 22px;
}

#mVictoryDialogData {
    width: auto;
    max-width: 980px;
    min-height: 120px;
    margin-top: 5px;
    text-align: center;
    overflow: hidden;
}

#mVictoryDialogButtons {
    width: auto;
    margin-top: 5px;
    text-align: center;
}

/* The winner's monopolies, drawn as property piles inside the victory dialog. */
#mVictoryDialogMonopolies {
    position: relative;
    z-index: 1;
    text-align: center;
}

.mVictoryMonopolyPile {
    display: inline-block;
    vertical-align: top;
    margin: 5px;
    text-align: left;
}

/*.mOptionButton {
    display: inline-block;
    width: 200px;
    height: 25px;
    text-align: center;
    font-size: 20px;
    line-height: 20px;
    margin-right: 25px;
}*/

.mConfirmSelectedCards {
    height: 30px;
    display: block;
    position: absolute;
    top: 40px;
    left: 440px;
    width: 200px;
    font-size: 20px;
}

.mPlayerDivButton {
    display: block;
    position: absolute;
    top: 0px;
    left: 0px;
    width: 610px;
    height: 350px;
    opacity: 0.0;
}

.mSelectedCardMessage {
display: block;
    position: absolute;
    top: 0px;
    left: 0px;
    text-align: center;
    overflow: hidden;
    width: 620px;
    height: 60px;
    font-size: 20px;
    line-height: 25px;
}

/* Red, client-side rent auto-pay countdown shown just above the selected-cards
   options box (which is full -- message + buttons), in the free space below the
   game message.  If it reaches zero the selection is sent automatically (see
   mStartPayTimer).  Positioned in the board's design coordinate space, like its
   sibling #monopolySelectOptionDiv (top:700) and #monopolyGameMessageDiv. */
.mPayTimer {
    display: block;
    position: absolute;
    top: 658px;
    left: 625px;
    width: 620px;
    text-align: center;
    font-size: 26px;
    font-weight: 1000;
    color: red;
    z-index: 50;
}

.mOptionButton {
    display: block;
    position: absolute;
    top: 60px;
    width: 400px;
    height: 35px;
    font-size: 20px;
    left: 130px;
}

/* The "Select All" pay shortcut shares the options row with "Send Selected
 * Cards" (.mOptionButton at left:130), so sit it to the left so they don't
 * overlap. */
#mSelectAllCardsButton {
    left: 0px;
    width: 120px;
    font-size: 18px;
}

.mDialogButton{
    display: inline-block;
    margin-left: auto;
    margin-right: auto;
    padding-left: 10px;
    font-size: 20px;
    height: 30px;
    width: 300px;
}

.mUnexpectedOptionButton{
    display: block;
    margin-left: auto;
    margin-right: auto;
    font-size: 20px;
    width: 300px;
    height: 35px;
}

/* ---- Just Say No reaction dialog ---------------------------------------- */
#mJustSayNoDialog {
    position: absolute;
    width: auto;
    height: auto;
    max-width: 720px;
    border-radius: 15px;
    box-shadow: 0px 0px 15px 5px black;
    padding: 14px;
    cursor: all-scroll;
    z-index: 110;
    display: none;
    text-align: center;
}

#mJustSayNoDialogText {
    max-width: 690px;
    font-size: 22px;
    line-height: 26px;
}

#mJustSayNoDialogTimer {
    margin-top: 12px;
    font-size: 28px;
    font-weight: 1000;
    color: #ffcc00;
}

#mJustSayNoDialogButtons {
    margin-top: 14px;
    white-space: nowrap;
}

.mJsnButton {
    display: inline-block;
    margin: 0px 6px;
    height: 42px;
    min-width: 170px;
    font-size: 20px;
    cursor: pointer;
}

.mJsnBlockButton {
    color: #ffffff;
    background-color: #b30000;
    font-weight: 1000;
}

.mJsnMoreTimeButton {
    color: #003300;
    background-color: #ffcc00;
}

.mActivePlayer {
    animation: activePlayer 2s infinite;
}

.mTurnPlayer {
    animation: turnPlayer 2s infinite;
}

@keyframes activePlayer {
    0% {
        border: 5px solid red;
    }

    50% {
        border: 5px solid whitesmoke;
    }

    100% {
        border: 5px solid red;
    }
}

@keyframes turnPlayer {
    0% {
        border: 5px solid dodgerblue;
    }

    50% {
        border: 5px solid whitesmoke;
    }

    100% {
        border: 5px solid dodgerblue;
    }
}
