:root{
  --board-forest:#164233;
  --board-mint:#dfeee3;
  --board-gold:#d8ad4a;
  --board-paper:#fffdf4;
  --board-navy:#102d47;
}

.board-page{
  background:
    radial-gradient(circle at 15% 10%,rgba(216,173,74,.18),transparent 28%),
    radial-gradient(circle at 85% 85%,rgba(47,117,181,.16),transparent 30%),
    #d9e6df;
}

.board-topbar{
  position:relative;
  background:linear-gradient(110deg,#0c2942 0%,#123d59 58%,#164233 100%);
  border-bottom:3px solid var(--board-gold);
  box-shadow:0 7px 24px rgba(5,25,38,.28);
}

.board-topbar::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.12;
  background-image:linear-gradient(45deg,transparent 45%,#fff 48%,transparent 51%);
  background-size:22px 22px;
}

.board-brand{display:flex;align-items:center;gap:11px;z-index:1}.board-brand b{font-size:.94rem}.mini-crest{
  width:42px;height:42px;display:grid;place-items:center;border-radius:50%;
  color:#fff;font:800 23px Georgia,serif;background:linear-gradient(145deg,#2f75b5,#153f67);
  border:2px solid var(--board-gold);box-shadow:inset 0 0 0 3px #ffffff22,0 3px 9px #0004;
}

.turn-banner{
  z-index:1;padding:9px 22px;border:1px solid #ffffff35;border-radius:999px;
  background:#ffffff12;box-shadow:inset 0 1px #ffffff22;font-weight:800;letter-spacing:.02em;
}

.board-topbar .dice{z-index:1}.board-topbar .dice span{
  position:relative;width:44px;height:44px;border:2px solid #e9d59d;
  background:linear-gradient(145deg,#fff,#f6ead0);box-shadow:inset -3px -3px 7px #c7b98f88,0 4px 10px #0004;
  color:var(--board-navy);font-family:Georgia,serif;border-radius:11px;
}
.board-topbar .dice.rolling span{animation:dice-tumble .26s linear infinite;box-shadow:0 0 0 5px #d8ad4a55,0 8px 18px #0005}
@keyframes dice-tumble{0%{transform:rotate(0) scale(1)}35%{transform:rotate(13deg) scale(.86)}70%{transform:rotate(-12deg) scale(1.12)}100%{transform:rotate(0) scale(1)}}

.board-layout{gap:12px;padding:12px;background:transparent}.board{
  border:5px solid var(--board-forest);border-radius:8px;
  outline:2px solid var(--board-gold);outline-offset:-8px;
  background:var(--board-mint);box-shadow:0 16px 38px rgba(16,45,35,.28),inset 0 0 0 2px #fff8;
}

.board .space{
  border-color:#53685d;background:linear-gradient(155deg,#fffef8 0%,#f7f2e4 100%);
  color:#17291f;text-shadow:none;isolation:isolate;transition:filter .2s ease;
}

.board .space::after{
  content:"";position:absolute;inset:3px;border:1px solid rgba(22,66,51,.1);pointer-events:none;z-index:-1;
}

.board .space-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:100%;height:100%;padding:2px 4px}.board .has-band .space-content{padding-top:16%}
.board .space-icon{font-size:clamp(9px,.82vw,14px);line-height:1;color:#315948;opacity:.82}
.board .space-name{font-family:ui-sans-serif,system-ui,sans-serif;font-size:clamp(7px,.66vw,11px);line-height:1.08;font-weight:850;letter-spacing:-.01em}
.board .price{margin-top:1px;padding:1px 5px;border-radius:999px;background:#173f3312;color:#345447;font-size:clamp(6px,.53vw,9px);font-weight:800}
.board .band{height:18%;border-bottom:2px solid #28473a;background:linear-gradient(90deg,color-mix(in srgb,var(--group),#fff 12%),var(--group),color-mix(in srgb,var(--group),#000 10%));box-shadow:inset 0 2px #ffffff55}
.board .owner-dot{width:13px;height:13px;right:4px;top:4px;border:2px solid #fff;box-shadow:0 1px 4px #0006;z-index:4}
.board .houses{margin-top:2px;background:linear-gradient(90deg,#166534,#22a35a);box-shadow:0 1px 4px #0002;font-size:clamp(5px,.48vw,8px)}
.board .tokens{font-size:clamp(13px,1.25vw,22px);gap:0;bottom:1px;z-index:5}.board .tokens span{filter:drop-shadow(0 2px 1px #fff) drop-shadow(0 1px 2px #0005)}

.board .corner{background:linear-gradient(145deg,#edf6e9,#cde3cc);box-shadow:inset 0 0 22px rgba(22,66,51,.08)}
.board .corner .space-icon{font-size:clamp(18px,1.7vw,30px);color:var(--board-navy);opacity:1}
.board .corner .space-name{font-family:Georgia,serif;font-size:clamp(8px,.82vw,13px);color:#173d32}
.board .type-start{background:linear-gradient(145deg,#fff9dc,#e6d08b)}.board .type-start .space-icon{color:#9a6b00}
.board .type-jail{background:linear-gradient(145deg,#f2efe7,#d4cbb7)}.board .type-gotojail{background:linear-gradient(145deg,#ffe8e2,#eab3a7)}
.board .type-free{background:linear-gradient(145deg,#e8f5e4,#bcd9b9)}.board .type-chance .space-icon{color:#7551a8;font-weight:1000}.board .type-community .space-icon{color:#bd3d62}.board .type-tax .space-icon{color:#9a4b36}.board .type-utility .space-icon{color:#d19000}.board .type-transport .space-icon{color:#35526e}

.board-center{
  position:relative;overflow:hidden;background:
    radial-gradient(circle at center,#f0f6e9 0%,#d7e9d9 57%,#c9dfce 100%);
  border:1px solid #749481;box-shadow:inset 0 0 60px rgba(22,66,51,.12);
}

.center-grid{position:absolute;inset:0;opacity:.16;background-image:linear-gradient(#275b4630 1px,transparent 1px),linear-gradient(90deg,#275b4630 1px,transparent 1px);background-size:28px 28px;mask-image:radial-gradient(circle,#0000 22%,#000 100%)}
.value-ribbon{position:absolute;top:4%;left:50%;transform:translateX(-50%);width:max-content;max-width:86%;padding:5px 15px;border-radius:999px;border:1px solid #315d4840;background:#ffffff70;color:#315d48;font-size:clamp(5px,.55vw,9px);font-weight:900;letter-spacing:.12em;box-shadow:0 4px 14px #214a3420}.value-ribbon i{color:var(--board-gold);font-style:normal}
.center-brand{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:min(58%,590px);padding:clamp(12px,2.1vw,30px);background:linear-gradient(145deg,#fffef8dd,#f7efd9d9);border:2px solid #fff;border-radius:20px;box-shadow:0 20px 44px rgba(21,58,44,.2),inset 0 0 0 1px #b894443e;backdrop-filter:blur(5px);transform:rotate(-2deg)}
.center-crest{width:clamp(42px,4.2vw,68px);height:clamp(42px,4.2vw,68px);display:grid;place-items:center;margin-top:calc(clamp(42px,4.2vw,68px)*-.75);border-radius:50%;background:linear-gradient(145deg,#2f75b5,#102d47);border:3px double var(--board-gold);color:#fff;font:800 clamp(22px,2.5vw,40px) Georgia,serif;box-shadow:0 7px 16px #0e2d4250}
.center-brand p{margin:7px 0 4px;color:#38604e;font-size:clamp(6px,.67vw,11px);font-weight:900;letter-spacing:.2em}.center-brand h1{transform:none!important;margin:0!important;color:var(--board-navy)!important;text-shadow:2px 2px 0 #fff!important;font:900 clamp(25px,4.1vw,66px)/.92 Georgia,serif!important;white-space:nowrap}.center-brand h1 em{display:block;color:#2f75b5;font-size:.76em;font-style:normal;letter-spacing:.2em}.brand-rule{width:68%;height:3px;margin:9px 0 6px;background:linear-gradient(90deg,transparent,var(--board-gold),transparent)}.center-brand>small{color:#385b4c;font-size:clamp(5px,.58vw,10px);font-weight:900;letter-spacing:.13em}
.deck-card{position:absolute;z-index:2;width:clamp(72px,8vw,130px);aspect-ratio:1.55;display:flex;flex-direction:column;align-items:center;justify-content:center;border:3px double #ffffffbb;border-radius:10px;color:#fff;box-shadow:0 12px 24px #12342642,inset 0 0 18px #0002;letter-spacing:.08em}.deck-card::before{content:"";position:absolute;inset:6px;border:1px solid #fff5;border-radius:5px}.deck-card span{font-size:clamp(16px,2.1vw,34px);line-height:1}.deck-card b{font-size:clamp(5px,.62vw,10px)}.deck-card small{font-size:clamp(4px,.5vw,8px)}.deck-heart{left:8%;bottom:14%;transform:rotate(9deg);background:linear-gradient(145deg,#ca406c,#7b274b)}.deck-chance{right:8%;top:17%;transform:rotate(9deg);background:linear-gradient(145deg,#6f5bb8,#394783)}
.center-stats{position:absolute;z-index:2;bottom:4%;left:50%;transform:translateX(-50%);display:flex;gap:6px}.center-stats span{min-width:clamp(54px,6vw,92px);padding:5px 7px;border-radius:8px;background:#ffffffb8;border:1px solid #315d4830;color:#496b5b;font-size:clamp(5px,.48vw,8px);font-weight:850;letter-spacing:.08em}.center-stats b{display:block;color:var(--board-navy);font-size:clamp(11px,1vw,17px);letter-spacing:0}
.join-qr-card{position:absolute;z-index:3;right:2.7%;bottom:3%;display:flex;align-items:center;gap:8px;max-width:clamp(145px,16vw,255px);padding:6px 9px 6px 6px;border:1px solid #d8ad4a;border-radius:11px;background:#fffef2e8;box-shadow:0 8px 20px #163d2d35;backdrop-filter:blur(4px)}.join-qr-card img{width:clamp(46px,4.6vw,74px);height:clamp(46px,4.6vw,74px);border-radius:5px;background:#fff}.join-qr-card div{min-width:0;text-align:left}.join-qr-card b{display:block;color:#173f5d;font-size:clamp(5px,.53vw,9px);letter-spacing:.05em}.join-qr-card small{display:block;margin-top:3px;overflow-wrap:anywhere;color:#456455;font-size:clamp(4px,.45vw,8px);line-height:1.15}

.board-layout .sidebar{gap:12px}.board-layout .sidebar .panel{border:1px solid #fff;border-top:4px solid var(--board-gold);background:linear-gradient(150deg,#fffefb,#f2f5ee);box-shadow:0 12px 28px rgba(16,45,35,.12);border-radius:16px}.board-layout .sidebar h2{display:flex;align-items:center;gap:8px;font-family:Georgia,serif;font-size:1.14rem}.board-layout .sidebar h2 span{color:#b78825}.team-panel{min-height:104px}.team-score{grid-template-columns:38px 1fr auto!important;align-items:center;border:1px solid #e1e8e2;border-left:5px solid var(--team);border-radius:11px!important;padding:9px!important;background:linear-gradient(100deg,#fff,#f4f7f3)!important;box-shadow:0 3px 8px #173b2c10}.team-score.active{outline:2px solid var(--team);outline-offset:1px;box-shadow:0 5px 16px color-mix(in srgb,var(--team),transparent 75%)}.score-token{font-size:1.65rem;filter:drop-shadow(0 2px 2px #0002)}.team-score>div{min-width:0}.team-score b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.team-score small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.score-money{text-align:right}.score-money strong{display:block;color:var(--board-navy)}.empty-state{display:flex;min-height:78px;flex-direction:column;align-items:center;justify-content:center;color:#789084;text-align:center}.empty-state span{font-size:1.7rem;color:#b6c5bd}.empty-state small{display:block}.activity-panel .notice{border:1px solid #c5dcee;border-left:5px solid #2f75b5;background:linear-gradient(90deg,#eaf5ff,#f8fbfd);font-weight:700}.activity-panel .log-entry{position:relative;padding:9px 3px 9px 18px;border-left:2px solid #d9e4dd;border-bottom:0}.activity-panel .log-entry::before{content:"";position:absolute;left:-5px;top:14px;width:8px;height:8px;border-radius:50%;background:var(--board-gold);border:2px solid #fff}.activity-panel .log-entry time{display:block;font-size:.72rem}

@media(max-width:1100px){.board-layout{grid-template-columns:minmax(0,1fr) 250px}.deck-card{display:none}.center-brand{width:66%}.board .space-icon{display:none}.board-layout .sidebar{font-size:.86rem}}

/* Penyesuaian otomatis agar nama petak panjang tetap terbaca penuh. */
.board .space-name{
  display:block;max-width:100%;white-space:normal;overflow-wrap:break-word;
  text-wrap:balance;hyphens:auto;
}
.board .long-name .space-content,.board .very-long-name .space-content{gap:0;padding-left:2px;padding-right:2px}
.board .long-name .space-name{font-size:clamp(6px,.56vw,9px);line-height:1.02;letter-spacing:-.02em}
.board .very-long-name .space-name{font-size:clamp(5.5px,.49vw,8px);line-height:.98;letter-spacing:-.025em}
.board .long-name .space-icon,.board .very-long-name .space-icon{display:none}
.board .long-name .price,.board .very-long-name .price{margin-top:1px;padding:0 3px;font-size:clamp(5px,.44vw,7px);line-height:1.05}
.board .has-band.long-name .space-content,.board .has-band.very-long-name .space-content{padding-top:13%}
.board .side-left .space-content,.board .side-right .space-content{padding-top:1px;padding-bottom:1px;gap:0}
.board .side-left.type-property .space-icon,.board .side-right.type-property .space-icon{display:none}
.board .side-left .space-name,.board .side-right .space-name{font-size:clamp(6px,.56vw,9px);line-height:1.01}
.board .side-left.very-long-name .space-name,.board .side-right.very-long-name .space-name{font-size:clamp(5.3px,.46vw,7.5px);line-height:.97}
.board .side-left .price,.board .side-right .price{padding:0 3px;font-size:clamp(5px,.43vw,7px);line-height:1}
.board .corner.long-name .space-icon,.board .corner.very-long-name .space-icon{display:block;font-size:clamp(14px,1.2vw,21px)}
.board .corner.long-name .space-name,.board .corner.very-long-name .space-name{font-size:clamp(6.5px,.65vw,10px);line-height:1}

/* Mode proyektor: label ringkas dan pion tim berkontras tinggi. */
.board .space-content{gap:0;padding-left:3px;padding-right:3px}
.board .space-name{font-size:clamp(8px,.78vw,12px);line-height:1.04;font-weight:950;letter-spacing:-.018em}
.board .long-name .space-name{font-size:clamp(7.4px,.68vw,10.5px);line-height:1}
.board .very-long-name .space-name{font-size:clamp(6.8px,.61vw,9.5px);line-height:.98}
.board .type-property .space-icon{display:none}
.board .has-band .space-content,.board .has-band.long-name .space-content,.board .has-band.very-long-name .space-content{padding-top:14%}
.board .price{font-size:clamp(6px,.55vw,8.5px);font-weight:900;line-height:1.05}
.board .side-left .space-name,.board .side-right .space-name{font-size:clamp(7.5px,.68vw,10.5px);line-height:1}
.board .side-left.very-long-name .space-name,.board .side-right.very-long-name .space-name{font-size:clamp(6.8px,.59vw,9px)}
.board .tokens{inset:2px auto auto 2px;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:flex-start;gap:1px;z-index:12;filter:none}
.board .has-player{z-index:8}
.player-token{position:relative;width:clamp(21px,1.8vw,29px);height:clamp(21px,1.8vw,29px);display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,#fff,#e8edf0);border:3px solid var(--token-color);box-shadow:0 2px 6px #0007,inset 0 0 0 1px #fff;line-height:1}
.player-token i{font-style:normal;font-size:clamp(13px,1.18vw,19px);filter:none}
.player-token b{position:absolute;right:-5px;bottom:-4px;min-width:13px;height:13px;padding:0 2px;display:grid;place-items:center;border-radius:7px;background:var(--token-color);border:1.5px solid #fff;color:#fff;font:900 8px/1 ui-sans-serif,system-ui,sans-serif;box-shadow:0 1px 3px #0005}
.team-score{grid-template-columns:46px 1fr auto!important;min-height:58px}
.team-score .score-token{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#fff;border:3px solid var(--team);font-size:1.7rem;box-shadow:0 3px 8px #0002}
.team-score b{font-size:.98rem}.score-money strong{font-size:.95rem}

/* Tulisan berukuran proyektor dan animasi pion. */
.board .space-name{font-size:clamp(10px,.98vw,15px);line-height:1;font-weight:950}
.board .long-name .space-name{font-size:clamp(9px,.86vw,13px)}
.board .very-long-name .space-name{font-size:clamp(8px,.75vw,11.5px)}
.board .side-left .space-name,.board .side-right .space-name{font-size:clamp(9px,.82vw,12.5px)}
.board .side-left.very-long-name .space-name,.board .side-right.very-long-name .space-name{font-size:clamp(8px,.72vw,11px)}
.board .corner .space-name{font-size:clamp(10px,.95vw,14px)}
.board .price{font-size:clamp(7px,.64vw,10px)}
.player-token.moving{animation:pawn-hop .95s cubic-bezier(.2,.9,.25,1.25) both}
.player-token.current:not(.moving){animation:pawn-pulse 1.7s ease-in-out infinite}
@keyframes pawn-hop{0%{transform:translateY(-34px) scale(.65) rotate(-12deg);opacity:.2}45%{transform:translateY(5px) scale(1.22) rotate(7deg);opacity:1}68%{transform:translateY(-8px) scale(.95) rotate(-3deg)}100%{transform:translateY(0) scale(1) rotate(0)}}
@keyframes pawn-pulse{0%,100%{transform:scale(1);box-shadow:0 2px 6px #0007,inset 0 0 0 1px #fff}50%{transform:scale(1.16);box-shadow:0 0 0 6px color-mix(in srgb,var(--token-color),transparent 70%),0 4px 10px #0006}}
@media(prefers-reduced-motion:reduce){.player-token.moving,.player-token.current,.board-topbar .dice.rolling span{animation:none!important}}

/* Kartu detail petak saat hover/fokus. */
.board .space:hover,.board .space:focus-visible{z-index:25;outline:3px solid #e1b54a;outline-offset:-3px;filter:brightness(1.05);box-shadow:inset 0 0 0 2px #fff,0 0 16px #d8ad4a99}
.space-detail{position:fixed;z-index:100;width:min(330px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;padding:0 16px 15px;border:2px solid #fff;border-radius:16px;background:linear-gradient(150deg,#fffef9,#eef4ef);color:#1d352b;box-shadow:0 18px 50px #071c1570,inset 0 0 0 1px #becdc4;pointer-events:none;animation:detail-in .16s ease-out}
.detail-band{height:12px;margin:0 -16px 12px;border-radius:14px 14px 0 0;background:linear-gradient(90deg,color-mix(in srgb,var(--detail-color),#fff 15%),var(--detail-color),color-mix(in srgb,var(--detail-color),#000 10%))}
.space-detail header{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid #d9e2dc}.space-detail header>span{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:11px;background:#173f33;color:#fff;font-size:1.4rem}.space-detail header div{min-width:0}.space-detail header small{display:block;color:#778a80;font-size:.65rem;font-weight:900;letter-spacing:.1em}.space-detail h3{margin:2px 0 0;color:#123d59;font:800 1.14rem/1.05 Georgia,serif}.owner-line{display:flex;justify-content:space-between;gap:12px;margin:11px 0;padding:8px 10px;border-radius:8px;background:#e7efea}.owner-line span{color:#738279}.owner-line b{text-align:right}.detail-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:9px 0}.detail-facts span{padding:7px 5px;border:1px solid #d9e1dc;border-radius:8px;background:#fff;text-align:center}.detail-facts small{display:block;color:#78877f;font-size:.62rem}.detail-facts b{color:#173f5d;font-size:.9rem}.space-detail table{width:100%;border-collapse:collapse;margin-top:8px;font-size:.82rem}.space-detail th,.space-detail td{padding:5px 6px;border-bottom:1px solid #dde5e0}.space-detail th{text-align:left;font-weight:650}.space-detail td{text-align:right;font-weight:850;color:#173f5d}.detail-note{margin:9px 0 0;color:#66776e;font-size:.75rem;line-height:1.3}.special-detail{display:flex;align-items:center;gap:13px;padding:14px 5px}.special-detail>b{min-width:52px;color:#2f75b5;font-size:1.55rem;text-align:center}.special-detail span{font-size:.85rem;line-height:1.35}.mortgage-alert{margin:7px 0;padding:5px 8px;border-radius:6px;background:#fff1db;color:#9a5c00;text-align:center;font-size:.72rem;font-weight:900}.building-line{margin:7px 0;color:#187445;text-align:center;font-weight:900}@keyframes detail-in{from{opacity:0;transform:translateY(5px) scale(.97)}to{opacity:1;transform:none}}
