:root{color:#eee8dc;font-synthesis:none;background:#15130f;font-family:Noto Serif JP,Yu Mincho,serif}*{box-sizing:border-box}body{background:radial-gradient(at 50% -10%,#413323 0,#211b14 38%,#100f0d 78%);min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}#app{min-height:100vh}.shell{max-width:1440px;margin:0 auto;padding:28px clamp(14px,3vw,42px) 24px}.brand{color:#dfc27d;align-items:center;gap:14px;display:flex}.brand-crown{color:#d8b86d;border:1px solid #d3b26799;border-radius:50%;place-items:center;width:48px;height:48px;font-size:30px;display:grid;box-shadow:inset 0 0 14px #9c772b35,0 0 18px #0008}.brand-title{letter-spacing:.17em;font:700 27px/1 Cormorant Garamond,serif}.brand-subtitle{letter-spacing:.22em;color:#a18e68;margin-top:5px;font:11px/1.2 Cormorant Garamond,serif}.lobby-shell{max-width:1100px}.hero-card{background:linear-gradient(135deg,#31271b 0%,#1f1a14 50%,#171512 100%);border:1px solid #8d7144;border-radius:18px;margin-top:38px;padding:clamp(25px,5vw,58px);position:relative;overflow:hidden;box-shadow:0 22px 70px #0009,inset 0 1px #ffffff12}.hero-card:before{content:"♛";color:#c49f4b0b;pointer-events:none;font-size:clamp(240px,36vw,470px);line-height:1;position:absolute;top:-110px;right:4%}.eyebrow{color:#bc9c58;letter-spacing:.22em;margin:0 0 8px;font:600 11px/1.3 Cormorant Garamond,serif}h1{letter-spacing:.05em;margin:12px 0;font-size:clamp(32px,5vw,54px);font-weight:600;line-height:1.35}.intro{color:#c4b9a7;letter-spacing:.04em}.lobby-grid{z-index:1;grid-template-columns:1fr 1fr;gap:18px;margin-top:34px;display:grid;position:relative}.panel{background:linear-gradient(145deg,#29231b,#1b1915);border:1px solid #76603f;border-radius:13px;box-shadow:inset 0 1px #ffffff0b,0 10px 26px #0004}.lobby-grid .panel{padding:22px}h2,h3{letter-spacing:.06em;margin:0 0 18px;font-weight:500}h2{font-size:20px}h3{font-size:17px}.field-label{color:#b9aa8d;margin:12px 0 7px;font-size:12px;display:block}.field{color:#f0e8d8;background:#15130f;border:1px solid #5d503b;border-radius:8px;outline:none;width:100%;padding:12px 13px}.field:focus{border-color:#c8a75e;box-shadow:0 0 0 2px #c8a75e22}.code-input{text-transform:uppercase;letter-spacing:.13em}.primary-button,.secondary-button{letter-spacing:.04em;border:1px solid #ba9854;border-radius:8px;padding:12px 17px;font-weight:600;transition:all .18s}.primary-button{color:#21190d;background:linear-gradient(135deg,#e3c77f,#b58d41);width:100%;margin-top:20px;box-shadow:0 5px 14px #0006,inset 0 1px #fff8}.primary-button:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.secondary-button{color:#e5d5ae;background:linear-gradient(135deg,#41341f,#2b2419)}.secondary-button:hover:not(:disabled){background:#4a3b24;border-color:#e4c577}.secondary-button:disabled,.primary-button:disabled{opacity:.5}.compact{white-space:nowrap;padding:8px 12px;font-size:12px}.hint,.small-muted{color:#998d78;font-size:12px;line-height:1.7}footer{text-align:center;color:#71634d;letter-spacing:.2em;padding:25px 0 0;font:11px Cormorant Garamond,serif}.notice{color:#e3d2a6;background:#32291a;border:1px solid #8a7449;border-radius:8px;max-width:850px;margin:15px auto 0;padding:11px 15px;font-size:13px}.notice.error{color:#f3b5a0;background:#391e19;border-color:#995d4c}.waiting-card{text-align:center;max-width:740px;margin:32px auto;padding:30px}.waiting-card h2{margin-bottom:10px}.room-code{color:#edcf83;letter-spacing:.22em;margin:22px auto 10px;font:700 clamp(28px,6vw,42px) Cormorant Garamond,serif}.invite-row{gap:8px;margin:18px 0;display:flex}.invite-row input{color:#d8c9a8;background:#15130f;border:1px solid #645238;border-radius:7px;flex:1;min-width:0;padding:10px;font-size:12px}.seat-list{grid-template-columns:1fr 1fr;gap:10px;margin:22px 0;display:grid}.seat{color:#b7a98e;border:1px solid #554832;border-radius:8px;align-items:center;gap:9px;padding:13px;font-size:13px;display:flex}.seat b{color:#8f8167;margin-left:auto;font-size:11px}.occupied-seat{color:#ead9ae;border-color:#9d824a}.seat-dot,.connection-dot{border-radius:50%;width:9px;height:9px;display:inline-block}.black-dot{background:#171717;border:1px solid #847a65;box-shadow:0 0 6px #000}.white-dot{background:#eee8d9;box-shadow:0 0 5px #fff6}.game-shell{max-width:1600px}.game-header{justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px;display:flex}.compact-brand .brand-crown{width:39px;height:39px;font-size:24px}.compact-brand .brand-title{font-size:23px}.header-status{color:#b7a98d;align-items:center;gap:9px;font-size:12px;display:flex}.connection-dot{background:#72b27b;box-shadow:0 0 8px #72b27b}.phase-pill{color:#d8bd7c;border:1px solid #78613a;border-radius:20px;padding:5px 10px}.text-button{color:#a99c83;background:0 0;border:0;font-size:12px}.text-button:hover{color:#e7d19b}.game-layout{grid-template-columns:minmax(150px,210px) minmax(420px,1fr) minmax(190px,260px);align-items:start;gap:18px;display:grid}.player-column{gap:12px;display:grid}.player-card{background:linear-gradient(145deg,#2b261e,#191714);border:1px solid #67573b;border-radius:10px;padding:15px}.player-card.is-me{box-shadow:0 0 0 1px #c8a75e55,0 0 20px #c8a75e12}.player-name{align-items:center;gap:10px;display:flex}.player-name b{letter-spacing:.15em;font:700 15px Cormorant Garamond,serif;display:block}.player-name small{color:#a09176;font-size:10px;display:block}.player-disc{border-radius:50%;width:29px;height:29px;box-shadow:inset 0 2px 3px #fff5,inset 0 -4px 6px #0009,0 2px 5px #0008}.black-disc{background:radial-gradient(circle at 32% 24%,#63605a,#181715 52%,#050505);border:1px solid #686051}.white-disc{background:radial-gradient(circle at 32% 24%,#fffef4,#d5d0c2 60%,#8b8578);border:1px solid #fff2d1}.crown-status{color:#a89a80;border-top:1px solid #ffffff12;justify-content:space-between;margin-top:15px;padding-top:10px;font-size:11px;display:flex}.crown-status b{color:#e4c67d;font:600 16px Cormorant Garamond,serif}.settings-mini{color:#9d9078;background:#1c1914;border:1px solid #51442f;border-radius:8px;flex-direction:column;gap:4px;padding:11px 13px;font-size:10px;display:flex}.settings-mini b{color:#d4c39d;font-size:12px;font-weight:500}.board-section{min-width:0}.turn-banner{background:#211d17;border:1px solid #554832;border-radius:10px;justify-content:space-between;align-items:center;gap:15px;min-height:68px;margin-bottom:14px;padding:12px 16px;display:flex}.turn-banner.my-turn{background:linear-gradient(110deg,#33291a,#211d17);border-color:#a4874e}.turn-banner b,.turn-banner small{display:block}.turn-banner b{font-size:14px;font-weight:500}.turn-banner small{color:#9c907b;margin-top:4px;font-size:11px}.board-frame{background:linear-gradient(135deg,#76502d 0%,#3d2818 24%,#69472a 48%,#2d1c11 74%,#795333 100%);border:8px solid #24170f;border-radius:12px;padding:clamp(9px,1.6vw,18px);position:relative;box-shadow:0 20px 42px #000b,inset 0 0 0 2px #d1ad6b88,inset 0 0 0 5px #160d07,inset 0 0 22px #100804}.board-frame:before{content:"";pointer-events:none;border:1px solid #d9b97688;border-radius:5px;position:absolute;inset:3px}.board-grid{aspect-ratio:1;background:linear-gradient(145deg,#21160e,#4a301c 50%,#1c120b);border:1px solid #1c120b;grid-template-rows:repeat(7,minmax(0,1fr));grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;width:100%;padding:5px;display:grid;box-shadow:inset 0 2px 9px #000c,0 1px #e3c17b55}.board-cell{appearance:none;background:linear-gradient(145deg,#805b37 0%,#684627 48%,#4d321d 100%);border:1px solid #795b39;border-radius:2px;place-items:center;width:100%;min-width:0;height:100%;min-height:0;padding:2px;line-height:1;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 1px 1px #f4d6a34d,inset 0 -4px 8px #1c100b99,0 1px 1px #0008}.board-cell:nth-child(odd){background:linear-gradient(145deg,#67472b 0%,#4c321e 52%,#382317 100%);border-color:#654a2f}.board-cell:disabled{opacity:1}.board-cell.actionable{cursor:pointer;outline-offset:-3px;outline:2px solid #dfbd72;box-shadow:inset 0 0 18px #f5d98b3b,0 0 8px #d9b86a55}.board-cell.actionable:hover{filter:brightness(1.18)}.coordinate{color:#e0c99a66;pointer-events:none;font:8px/1 Cormorant Garamond,serif;position:absolute;bottom:2px;right:3px}.chip{aspect-ratio:1;pointer-events:none;border-radius:50%;place-items:center;width:82%;min-width:0;max-width:100%;max-height:100%;display:grid;position:relative;transform:none;box-shadow:0 3px 5px #090604b8,inset 0 2px 3px #fff5,inset 0 -5px 8px #000a}.chip:before{content:"";border:1px solid #ffffff38;border-radius:50%;position:absolute;inset:7%;box-shadow:inset 0 0 5px #fff2}.chip.face-down.black,.chip.revealed.black{background:radial-gradient(circle at 30% 22%,#46443f 0%,#242321 46%,#080808 86%);border:2px solid #9b895e}.chip.face-down.white,.chip.revealed.white{background:radial-gradient(circle at 30% 20%,#fffef8 0%,#e5dfd2 53%,#aaa18f 90%);border:2px solid #d8c99f}.chip.gray{background:radial-gradient(circle at 30% 20%,#c8ccca,#646d70 48%,#283238 88%);border:2px solid #bcc0c0}.chip-mark{z-index:1;color:#0000;-webkit-text-fill-color:transparent;-webkit-text-stroke:1.25px #d8b65f;text-shadow:0 0 3px #c99d3d88;font:700 clamp(13px,2.4vw,28px)/1 Cormorant Garamond,serif}.chip.gray .chip-mark{color:#e0e4e2;-webkit-text-fill-color:#e0e4e2;-webkit-text-stroke:.5px #fff}.chip.revealed.blank .chip-mark{display:none}.inventory{margin-top:16px;padding:16px}.section-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.section-heading h3{margin:0}.inventory-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;display:grid}.inventory-piece{color:#d8c8a5;background:#1a1712;border:1px solid #594b33;border-radius:8px;flex-direction:column;align-items:center;gap:5px;padding:7px 3px;font-size:10px;display:flex}.inventory-piece.selected{background:#382d1b;border-color:#d5b263;box-shadow:0 0 0 1px #d5b26355}.inventory-piece:disabled{opacity:.35}.inventory-piece b{color:#a28e65;font:600 12px Cormorant Garamond,serif}.inventory-disc{color:#d5b66b;background:radial-gradient(circle at 30% 20%,#4f4c45,#111);border:1px solid #9e8c66;border-radius:50%;place-items:center;width:30px;height:30px;font-size:12px;display:grid;box-shadow:0 3px 5px #000}.inventory-disc.gray{color:#ddd;background:radial-gradient(circle at 30% 20%,#aab0ad,#333d40)}.log-column{padding:15px}.icon-button{color:#d9c28a;background:#292217;border:1px solid #665337;border-radius:6px;font-size:20px;line-height:1}.action-log{gap:0;max-height:410px;margin:15px 0;padding:0;list-style:none;display:grid;overflow:auto}.action-log li{color:#c6b99f;border-bottom:1px solid #ffffff10;gap:8px;padding:9px 0;font-size:11px;line-height:1.6;display:flex}.action-log time{color:#90794b;flex:0 0 38px;font:11px Cormorant Garamond,serif}.privacy-note{color:#c8b17a;background:#292316;border:1px solid #5e5138;border-radius:7px;gap:8px;margin-top:16px;padding:10px;display:flex}.privacy-note p{color:#9f927a;margin:0;font-size:10px;line-height:1.6}.result-banner{background:linear-gradient(100deg,#44351d,#211a10);border:1px solid #c09c53;border-radius:10px;justify-content:space-between;align-items:center;margin-top:14px;padding:15px 18px;display:flex}.result-banner span{color:#e1c17a;letter-spacing:.15em;font:700 20px Cormorant Garamond,serif}.result-banner b{font-weight:500}.busy-overlay{z-index:100;color:#e5d2a4;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080706b8;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.spinner{border:3px solid #695735;border-top-color:#e1c27c;border-radius:50%;width:35px;height:35px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1050px){.game-layout{grid-template-columns:1fr minmax(0,2.5fr)}.log-column{grid-column:1/-1}.player-column{grid-template-columns:1fr 1fr}.settings-mini{display:none}}@media (width<=680px){.lobby-grid{grid-template-columns:1fr}.game-layout{flex-direction:column;display:flex}.player-column,.board-section,.log-column{width:100%}.game-header{flex-wrap:wrap}.header-status{order:3;width:100%}.turn-banner{flex-direction:column;align-items:flex-start}.inventory-grid{grid-template-columns:repeat(4,1fr)}.invite-row{flex-direction:column}.seat-list{grid-template-columns:1fr}.waiting-card{padding:20px 14px}}
