:root{color:#e2e8f0;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f172a;font-family:Inter,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html{background:#0f172a}body{min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button{appearance:none}#root{min-height:100vh}.classroom-shell{--classroom-ink:#172b2a;--classroom-muted:#607572;--classroom-paper:#f2f5ef;--classroom-green:#176b55;min-height:100svh;color:var(--classroom-ink);background-color:var(--classroom-paper);background-image:radial-gradient(#cbd8ce .7px,#0000 .7px);background-size:16px 16px;padding:clamp(16px,3vw,40px)}.classroom-header,.classroom-toolbar,.classroom-section-heading,.classroom-participant,.classroom-join-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.classroom-header{max-width:1240px;margin:0 auto 28px}.classroom-header h1,.classroom-entry h2,.classroom-section-heading h2,.classroom-roster h2{letter-spacing:0;color:var(--classroom-ink);margin:0}.classroom-header h1{font-size:clamp(1.6rem,4vw,2.3rem)}.classroom-course-context{color:var(--classroom-muted);margin:3px 0 0;font-size:.85rem}.classroom-eyebrow{color:var(--classroom-green);letter-spacing:.08em;margin:0 0 7px;font-size:.7rem;font-weight:800}.classroom-exit,.classroom-secondary,.classroom-primary{cursor:pointer;border:1px solid #afc2b8;border-radius:4px;min-height:42px;padding:9px 14px;font-weight:750}.classroom-exit,.classroom-secondary{color:var(--classroom-ink);background:#fff}.classroom-primary{color:#fff;border-color:var(--classroom-green);background:var(--classroom-green)}.classroom-entry,.classroom-toolbar,.classroom-layout{max-width:1240px;margin:0 auto}.classroom-entry{border-top:1px solid #c8d4ca;border-bottom:1px solid #c8d4ca;grid-template-columns:minmax(0,1fr) minmax(280px,.72fr);align-items:center;gap:36px;padding:clamp(28px,6vw,72px) 0;display:grid}.classroom-entry h2{max-width:680px;font-size:clamp(2rem,5vw,4rem);line-height:1.04}.classroom-entry p:not(.classroom-eyebrow){max-width:520px;color:var(--classroom-muted);font-size:1.05rem}.classroom-entry-actions{gap:16px;display:grid}.classroom-entry-actions form{gap:7px;display:grid}.classroom-entry-actions label,.classroom-challenge-form label{color:var(--classroom-muted);gap:6px;font-size:.8rem;font-weight:750;display:grid}.classroom-entry-actions input,.classroom-challenge-form input{min-width:0;min-height:42px;color:var(--classroom-ink);background:#fff;border:1px solid #bdcbc1;border-radius:4px;padding:9px 10px}.classroom-challenge-form input[aria-invalid=true]{border-color:#b6443d}.classroom-fen-error{color:#a63e36;font-size:.72rem;font-weight:600}.classroom-toolbar{min-height:54px;color:var(--classroom-muted);justify-content:flex-start;margin-bottom:16px;font-size:.85rem}.classroom-toolbar .classroom-secondary{margin-left:auto}.classroom-live-dot{background:#aab5ad;border-radius:50%;width:9px;height:9px}.classroom-live-dot.live{background:#16976c;box-shadow:0 0 0 4px #16976c20}.classroom-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:28px;display:grid}.classroom-main{min-width:0}.classroom-section-heading{align-items:end;margin-bottom:14px}.classroom-section-heading h2{font-size:1.35rem}.classroom-section-heading>span{color:var(--classroom-muted);font-size:.8rem}.classroom-pgn-editor{border-bottom:1px solid #c8d4ca;margin-bottom:26px;padding-bottom:24px}.classroom-editor-players{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:min(100%,640px);margin-bottom:10px;display:grid}.classroom-editor-players label{color:var(--classroom-muted);gap:4px;font-size:.72rem;font-weight:750;display:grid}.classroom-editor-players input{min-width:0;min-height:36px;color:var(--classroom-ink);background:#fff;border:1px solid #bdcbc1;border-radius:4px;padding:7px 9px}.classroom-editor-actions{flex-wrap:wrap;align-items:center;gap:7px;width:min(100%,640px);margin-top:12px;display:flex}.classroom-editor-actions>span{color:var(--classroom-muted);flex:100%;font-size:.78rem;font-weight:750}.classroom-editor-actions button:disabled{cursor:not-allowed;opacity:.45}.classroom-presentation{border-bottom:1px solid #c8d4ca;margin-bottom:26px;padding-bottom:24px}.classroom-pgn-upload{color:var(--classroom-muted);gap:5px;margin-bottom:14px;font-size:.76rem;font-weight:750;display:inline-grid}.classroom-pgn-upload input{max-width:100%;color:var(--classroom-ink);font-size:.76rem}.classroom-presentation-controls{justify-content:space-between;align-items:center;gap:10px;width:min(100%,640px);margin-top:12px;display:flex}.classroom-presentation-controls>span{color:var(--classroom-muted);text-align:center;font-size:.78rem;font-weight:750}.classroom-presentation-step{aspect-ratio:1;color:#fff;background:var(--classroom-green);cursor:pointer;border:1px solid #9eb7a8;border-radius:4px;flex:none;place-items:center;width:42px;font-size:1.35rem;line-height:1;display:grid}.classroom-presentation-step:disabled{color:#91a29a;cursor:not-allowed;background:#e2e8e2;border-color:#bdcbc1}.classroom-board{aspect-ratio:1;border:6px solid #173c34;border-radius:3px;grid-template-columns:repeat(8,minmax(0,1fr));width:min(100%,640px,max(260px,100svh - 260px));display:grid;overflow:hidden;box-shadow:0 12px 30px #1a45331a}.classroom-square{aspect-ratio:1;cursor:pointer;border:0;place-items:center;min-width:0;padding:5%;display:grid;position:relative}.classroom-square.light{background:#e5ebd9}.classroom-square.dark{background:#71947c}.classroom-square.selected{box-shadow:inset 0 0 0 4px #f4ca55}.classroom-square:disabled{cursor:default}.classroom-square svg{width:88%;height:88%}.classroom-legal-dot{z-index:1;aspect-ratio:1;pointer-events:none;background:#174e3e80;border-radius:50%;width:24%;position:absolute}.classroom-coordinate,.classroom-file{z-index:1;color:#315643;font-size:clamp(.48rem,1.3vw,.72rem);font-weight:800;line-height:1;position:absolute}.classroom-coordinate{top:3px;left:4px}.classroom-file{bottom:2px;right:4px}.classroom-challenge-form{grid-template-columns:minmax(120px,1fr) minmax(180px,2fr) 90px 90px auto;align-items:end;gap:10px;max-width:900px;margin-top:16px;display:grid}.classroom-activity-choice{gap:4px;margin-top:16px;display:flex}.classroom-activity-choice button{min-height:36px;color:var(--classroom-muted);cursor:pointer;background:#fff;border:1px solid #bdcbc1;border-radius:3px;padding:7px 11px;font-size:.8rem;font-weight:700}.classroom-activity-choice button.active{border-color:var(--classroom-green);color:#fff;background:var(--classroom-green)}.classroom-roster{border-left:1px solid #c8d4ca;padding-left:20px}.classroom-roster h2{margin-bottom:16px;font-size:1.2rem}.classroom-video-panel{border-bottom:1px solid #c8d4ca;margin-bottom:24px;padding-bottom:18px}.classroom-video-heading{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.classroom-video-heading h2{margin:0;font-size:1.08rem}.classroom-media-status{color:var(--classroom-muted);white-space:nowrap;border:1px solid #bdcbc1;border-radius:3px;padding:4px 7px;font-size:.68rem;font-weight:750}.classroom-media-status.active{color:#176b55;background:#e5f4eb;border-color:#8ab8a3}.classroom-video-grid{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;display:grid}.classroom-media-tile{background:#163d36;border:1px solid #c8d4ca;border-radius:5px;min-width:0;overflow:hidden}.classroom-media-tile video,.classroom-media-placeholder{aspect-ratio:16/10;object-fit:cover;background:#163d36;width:100%;display:block}.classroom-media-placeholder{color:#d8e9df;place-content:center;justify-items:center;gap:5px;display:grid}.classroom-media-placeholder span,.classroom-video-idle>span{aspect-ratio:1;border:1px solid #99bca8;border-radius:50%;place-items:center;width:34px;font-size:.78rem;font-weight:800;display:grid}.classroom-media-placeholder small{color:#bfd2c7;font-size:.66rem}.classroom-media-tile>strong{color:#edf7f0;text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;font-size:.72rem;display:block;overflow:hidden}.classroom-video-idle{min-height:110px;color:var(--classroom-muted);text-align:center;border:1px dashed #bdcbc1;border-radius:5px;grid-column:1/-1;align-content:center;justify-items:center;gap:8px;display:grid}.classroom-video-idle p{max-width:220px;margin:0;font-size:.75rem}.classroom-media-controls{grid-template-columns:1fr 1fr;gap:6px;margin-top:10px;display:grid}.classroom-media-controls>.classroom-primary{grid-column:1/-1}.classroom-media-toggle,.classroom-media-stop{min-height:38px;color:var(--classroom-ink);cursor:pointer;background:#fff;border:1px solid #bdcbc1;border-radius:4px;padding:7px 8px;font-size:.73rem;font-weight:750}.classroom-media-toggle.active{background:#e5f4eb;border-color:#8ab8a3}.classroom-media-stop{color:#9e443e;grid-column:1/-1}.classroom-media-error{color:#a63e36;margin:8px 0 0;font-size:.74rem;line-height:1.4}.classroom-media-notice{color:var(--classroom-muted);gap:5px;margin:8px 0 0;font-size:.74rem;line-height:1.4;display:grid}.classroom-media-retry{color:var(--classroom-green);font-size:inherit;cursor:pointer;background:0 0;border:0;justify-self:start;padding:0;font-weight:800;text-decoration:underline}.classroom-chat{border-bottom:1px solid #c8d4ca;margin-bottom:22px;padding-bottom:18px}.classroom-chat h2{margin:0;font-size:1.08rem}.classroom-chat-messages{gap:7px;max-height:260px;margin-bottom:10px;display:grid;overflow-y:auto}.classroom-chat-message{background:#e7eee7;border-left:2px solid #8aac98;padding:6px 8px}.classroom-chat-message.own{background:#deeee5;border-left-color:#176b55}.classroom-chat-message>div{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.classroom-chat-message strong{color:var(--classroom-ink);font-size:.72rem}.classroom-chat-message time{color:var(--classroom-muted);font-size:.65rem}.classroom-chat-message p{overflow-wrap:anywhere;color:#334a45;margin:3px 0 0;font-size:.78rem;line-height:1.4}.classroom-chat-form{grid-template-columns:minmax(0,1fr) auto;gap:6px;display:grid}.classroom-chat-form input{min-width:0;color:var(--classroom-ink);background:#fff;border:1px solid #bdcbc1;border-radius:4px;padding:8px 9px;font-size:.77rem}.classroom-chat-form .classroom-primary{min-height:38px;padding:7px 10px;font-size:.75rem}.classroom-chat-form button:disabled{cursor:not-allowed;opacity:.55}.classroom-tournament{border-bottom:1px solid #c8d4ca;margin:18px 0 22px;padding-bottom:18px}.classroom-tournament h2{margin:0;font-size:1.08rem}.classroom-tournament>.classroom-secondary,.classroom-tournament>.classroom-primary{width:100%;margin-top:6px}.classroom-tournament-bye{color:var(--classroom-green);margin:0 0 8px;font-size:.75rem;font-weight:750}.classroom-tournament-matches{gap:6px;margin:8px 0 12px;display:grid}.classroom-tournament-match{border-top:1px solid #d3ddd5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:44px;padding:5px 0;display:grid}.classroom-tournament-match>span{color:var(--classroom-ink);flex-wrap:wrap;align-items:baseline;gap:5px;font-size:.73rem;display:flex}.classroom-tournament-match small{color:var(--classroom-muted)}.classroom-tournament-match select{max-width:120px;min-height:32px;color:var(--classroom-ink);background:#fff;border:1px solid #bdcbc1;border-radius:4px;padding:4px;font-size:.68rem}.classroom-tournament-result{color:var(--classroom-green);font-size:.7rem}.classroom-tournament-table-wrap{overflow-x:auto}.classroom-tournament-table{border-collapse:collapse;width:100%;color:var(--classroom-ink);font-size:.72rem}.classroom-tournament-table th{color:var(--classroom-muted);text-align:left;font-weight:750}.classroom-tournament-table th,.classroom-tournament-table td{border-top:1px solid #d3ddd5;padding:6px 5px}.classroom-tournament-table td:nth-child(n+3),.classroom-tournament-table th:nth-child(n+3){text-align:right}.classroom-grade-status{color:var(--classroom-muted);margin:8px 0 0;font-size:.74rem;line-height:1.4}.classroom-participant{border-top:1px solid #d3ddd5;justify-content:flex-start;min-height:58px}.classroom-rank{width:28px;color:var(--classroom-green);font-size:.75rem;font-weight:800}.classroom-participant-name{flex:1;font-size:.88rem;font-weight:750}.classroom-participant-name small{color:var(--classroom-muted);margin-top:2px;font-size:.72rem;font-weight:500;display:block}.classroom-participant>strong{text-align:right;min-width:28px}.classroom-empty,.classroom-score-note,.classroom-feedback{color:var(--classroom-muted);font-size:.85rem;line-height:1.5}.classroom-score-note{border-top:1px solid #d3ddd5;margin-top:20px;padding-top:12px}.classroom-feedback{min-height:24px;font-weight:700}@media (width<=800px){.classroom-entry{grid-template-columns:1fr;gap:24px}.classroom-layout{grid-template-columns:1fr}.classroom-roster{border-top:1px solid #c8d4ca;border-left:0;padding:18px 0 0}.classroom-challenge-form{grid-template-columns:repeat(2,minmax(0,1fr))}.classroom-fen-field{grid-column:1/-1}}@media (width<=480px){.classroom-header{align-items:flex-start}.classroom-exit{white-space:nowrap;padding:8px 10px;font-size:.78rem}.classroom-section-heading{flex-direction:column;align-items:flex-start;gap:4px}.classroom-toolbar{flex-wrap:wrap}.classroom-toolbar .classroom-secondary{margin-left:0}.classroom-challenge-form{grid-template-columns:1fr 1fr}}.app-shell{background:radial-gradient(circle at top,#60a5fa38,#0000 35%),linear-gradient(135deg,#0f172a 0%,#111827 52%,#1f2937 100%);place-items:start center;min-height:100svh;padding:clamp(6px,1.2vw,14px);display:grid}.auth-shell{background:radial-gradient(circle at top,#60a5fa38,#0000 35%),linear-gradient(135deg,#0f172a 0%,#111827 52%,#1f2937 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:#0f172ae6;border:1px solid #94a3b833;border-radius:22px;width:min(92vw,420px);padding:28px;box-shadow:0 28px 80px #0f172ab3}.auth-card h1{margin-bottom:10px}.auth-copy{color:#cbd5e1;line-height:1.5}.author-line{color:#94a3b8;margin:6px 0 0;font-size:.78rem}.login-form{gap:14px;margin-top:22px;display:grid}.login-form label{color:#cbd5e1;gap:6px;font-size:.82rem;font-weight:700;display:grid}.login-form input{color:#f8fafc;background:#0206178c;border:1px solid #94a3b840;border-radius:10px;padding:11px}.math-challenge-row{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.auth-error{color:#fca5a5;margin-bottom:0}.logged-user{color:#bfdbfe;align-self:center;font-size:.8rem;font-weight:700}.download-app-link{color:#93c5fd;white-space:nowrap;align-self:center;font-size:.78rem;font-weight:700;text-decoration:none}.download-app-link:hover{color:#dbeafe;text-decoration:underline}.game-panel{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172adb;border:1px solid #94a3b833;border-radius:28px;width:min(100%,1680px);padding:22px;box-shadow:0 28px 80px #0f172ab3}.game-panel-inner{width:100%}.board-resize-handle{display:none}@media (width>=1024px){.app-shell{height:100dvh;min-height:0;padding:12px;overflow:hidden}.game-panel{height:100%;min-height:0;padding:clamp(12px,1.2vw,18px);display:flex;overflow:hidden}.game-panel-inner{flex-direction:column;height:100%;min-height:0;display:flex}.topbar{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px;margin-bottom:12px;display:grid}.topbar h1{font-size:1.65rem}.topbar .author-line{display:none}.actions{justify-content:flex-end;gap:6px;width:auto}.mode-switch{gap:3px}.mode-switch .secondary-btn,.actions>.primary-btn,.actions>.secondary-btn{padding:8px 10px;font-size:.76rem}.game-body{flex:1;grid-template:"status profile"min-content"board tools"minmax(0,1fr)"board chat"min-content/minmax(0,1fr) minmax(280px,min(25vw,340px));gap:8px clamp(12px,1.2vw,18px);min-height:0;overflow:hidden}.board-panel{display:contents}.game-tools-grid{grid-area:tools;grid-template-columns:minmax(0,1fr);align-content:start;gap:8px;height:100%;min-height:0;padding-right:3px;overflow-y:auto}.board-status-panel{grid-area:status;grid-template-columns:repeat(2,minmax(0,1fr)) minmax(150px,.8fr);align-content:start;align-items:stretch;gap:6px;min-width:0;display:grid}.game-tools-grid .card{padding:10px}.player-strips{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:contents}.player-strip{gap:5px;min-width:0;padding:7px 8px}.player-name{overflow-wrap:anywhere;min-width:0}.turn-banner{align-items:center;min-width:0;padding:7px 8px;font-size:.76rem;display:flex}.board-frame{grid-area:board;align-content:center;height:100%}.board-area,.board-coordinates-bottom{width:min(100%, max(220px, calc((100dvh - 300px) * var(--board-scale,1))), 860px)}.board-resize-handle{z-index:4;cursor:nwse-resize;touch-action:none;-webkit-user-select:none;user-select:none;background:repeating-linear-gradient(135deg,#0000 0 3px,#e2e8f09e 3px 4px,#0000 4px 7px),#0f172aeb;border:1px solid #e2e8f0b8;border-radius:5px;width:22px;height:22px;display:block;position:absolute;bottom:-8px;right:-8px}.board-resize-handle:focus-visible{outline-offset:2px;outline:2px solid #93c5fd}.game-body>.sidebar{display:contents}.profile-card{grid-area:profile;width:100%;min-height:0;overflow-y:auto}.chat-card{grid-area:chat;width:100%;min-height:0;overflow-y:auto}.card{border-radius:12px;padding:12px}.card h2{margin-bottom:8px;font-size:1rem}.profile-summary{grid-template-columns:44px minmax(0,1fr);align-items:center;column-gap:10px;display:grid}.profile-summary .card-heading{grid-area:1/2}.profile-summary .profile-avatar{grid-area:1/1/span 2;width:44px;height:44px;margin:0}.profile-summary>strong{color:#cbd5e1;grid-area:2/2;font-size:.82rem}.profile-editor{border-top:1px solid #94a3b829;margin-top:10px;padding-top:8px}.profile-editor summary{color:#93c5fd;cursor:pointer;font-size:.78rem;font-weight:700}.profile-editor[open]{max-height:min(55dvh,520px);overflow-y:auto}.game-info-card{gap:7px}.game-info-card .card-heading{align-items:flex-start}.captures-block{gap:4px}.captured-row{gap:3px;min-height:30px;padding:3px 5px}.captured-row .piece{width:24px;height:24px}.compact-history{max-height:min(19dvh,140px)}.history-list{gap:4px}.history-list li{padding:5px 7px}.history-action{margin-top:4px}.score-grid{gap:5px;margin-top:8px}.score-grid div{padding:7px 3px}.score-grid strong{font-size:1.1rem}.rating-summary{gap:2px;margin-top:8px;padding-top:8px}.rating-summary strong{font-size:1.2rem}.admin-panel{flex:0 auto;max-height:20dvh;margin-bottom:10px;overflow:auto}}@media (width>=1024px) and (width<=1199px){.game-body{grid-template-columns:minmax(0,1fr) minmax(250px,300px)}.topbar{grid-template-columns:minmax(180px,.6fr) minmax(0,1.4fr)}.topbar h1{font-size:1.4rem}.actions{flex-wrap:wrap}}.topbar{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:20px;display:flex}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:#93c5fd;margin:0 0 8px;font-size:.72rem}h1{color:#f8fafc;margin:0;font-size:2.25rem;line-height:1.1}.actions{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.mode-switch{background:#0f172abf;border:1px solid #94a3b833;border-radius:999px;gap:8px;padding:4px;display:inline-flex}.primary-btn,.secondary-btn,.level-select{cursor:pointer;border:1px solid #0000;border-radius:999px;padding:10px 16px;font-weight:700;transition:transform .15s,opacity .15s}.primary-btn:hover,.secondary-btn:hover{transform:translateY(-1px)}.primary-btn{color:#fff;background:linear-gradient(135deg,#60a5fa,#2563eb)}.secondary-btn{color:#e2e8f0;background:#94a3b814;border-color:#94a3b833}.secondary-btn.active{color:#dbeafe;background:#60a5fa2e;border-color:#60a5fa80}.level-select{color:#e2e8f0;background:#0f172abf;border-color:#94a3b833;outline:none}.player-color-label{color:#bfdbfe;white-space:nowrap;font-size:.78rem;font-weight:700}.admin-panel{background:#0f172aad;border:1px solid #60a5fa47;border-radius:18px;gap:16px;margin-bottom:22px;padding:18px;display:grid}@media (width>=1024px){.admin-panel{max-height:34vh;overflow:auto}}.admin-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-heading h2,.account-list h3{color:#f8fafc;margin:0}.admin-note,.account-message{color:#bfdbfe;font-size:.8rem}.account-form{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:10px;display:grid}.account-form label{color:#cbd5e1;gap:5px;font-size:.78rem;font-weight:700;display:grid}.account-form input{color:#f8fafc;background:#02061780;border:1px solid #94a3b840;border-radius:9px;min-width:0;padding:10px}.account-message{margin:0}.account-list{gap:8px;display:grid}@media (width>=1024px){.account-list{max-height:22vh;padding-right:4px;overflow:auto}}.account-row{border-top:1px solid #94a3b824;justify-content:space-between;align-items:center;gap:12px;padding-top:9px;display:flex}.account-row div{gap:2px;display:grid}.account-row span{color:#94a3b8;font-size:.78rem}.account-actions{align-items:center;gap:10px;display:flex}.profile-avatar{object-fit:cover;border:2px solid #60a5fa8c;border-radius:50%;width:72px;height:72px;margin-bottom:12px}.profile-form{gap:9px;margin-top:12px;display:grid}.profile-form label{color:#cbd5e1;gap:4px;font-size:.75rem;font-weight:700;display:grid}.profile-form input{color:#f8fafc;background:#02061780;border:1px solid #94a3b83d;border-radius:8px;min-width:0;padding:8px}.piece-style-control{border-top:1px solid #94a3b829;gap:9px;margin-top:16px;padding-top:14px;display:grid}.piece-style-heading{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.piece-style-heading h3{color:#e2e8f0;margin:0;font-size:.88rem}.piece-style-heading span{color:#94a3b8;font-size:.68rem}.piece-attribution{color:#94a3b8;text-underline-offset:2px;justify-self:end;font-size:.62rem;text-decoration:underline}.piece-attribution:hover{color:#dbeafe}.piece-style-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.piece-style-option{color:#cbd5e1;cursor:pointer;background:#02061747;border:1px solid #94a3b833;border-radius:8px;justify-items:center;gap:4px;min-width:0;padding:6px 3px;font-size:.68rem;font-weight:700;display:grid}.piece-style-option:hover:not(:disabled){border-color:#60a5fa8c}.piece-style-option.active{color:#eff6ff;background:#60a5fa1f;border-color:#60a5fa}.piece-style-option:disabled{cursor:wait;opacity:.72}.piece-style-preview{background:linear-gradient(90deg,#f0d9b5 50%,#8b684d 50%);border-radius:5px;justify-content:center;align-items:center;gap:3px;width:100%;height:42px;display:flex}.chat-messages{gap:6px;max-height:220px;margin-bottom:10px;display:grid;overflow-y:auto}.chat-message{color:#dbeafe;background:#94a3b81a;border-radius:9px;margin:0;padding:7px 9px;font-size:.8rem}.chat-message.own{text-align:right;background:#2563eb47}.chat-form{grid-template-columns:1fr auto;gap:7px;display:grid}.chat-form input{color:#f8fafc;background:#02061780;border:1px solid #94a3b83d;border-radius:8px;min-width:0;padding:8px}.online-controls{background:#0f172a8c;border:1px solid #60a5fa38;border-radius:14px;flex-basis:100%;grid-template-columns:repeat(2,minmax(120px,1fr));align-items:end;gap:8px;padding:12px;display:grid}.online-controls label{color:#cbd5e1;gap:4px;font-size:.72rem;font-weight:700;display:grid}.online-controls input,.online-controls select{color:#f8fafc;background:#0206178c;border:1px solid #94a3b83d;border-radius:8px;width:100%;min-width:0;padding:8px}.online-status,.online-color{color:#bfdbfe;grid-column:1/-1;font-size:.8rem}@media (width>=1024px){.online-controls{order:1;grid-template-columns:minmax(150px,.8fr) minmax(130px,.75fr) minmax(160px,1fr) auto minmax(160px,1fr) auto;gap:6px;padding:8px}.online-status{grid-column:auto;align-self:center;font-size:.72rem;line-height:1.2}.online-color{display:none}.online-controls label{gap:3px;font-size:.66rem}.online-controls input,.online-controls select{padding:6px;font-size:.74rem}.online-controls>.secondary-btn{min-width:0;padding:7px 10px;font-size:.72rem}.online-controls>.text-btn{font-size:.7rem}.online-color{font-size:.72rem}}@media (width<=620px){.online-controls{grid-template-columns:1fr}.online-status,.online-color{grid-column:auto}}.game-body{grid-template-columns:minmax(0,1fr) clamp(280px,27%,400px);align-items:start;gap:clamp(16px,2vw,28px);display:grid}@media (width>=1024px){.game-body{grid-template-columns:minmax(0,1fr) minmax(280px,min(25vw,340px))}}@media (width>=1024px) and (width<=1199px){.game-body{grid-template-columns:minmax(0,1fr) minmax(250px,300px)}}@media (width>=1024px){.game-body{min-height:0}}.board-panel{flex-direction:column;gap:16px;min-width:0;display:flex}@media (width>=1024px){.game-body>.board-panel{display:contents}}.game-tools-grid{grid-template-columns:minmax(0,1fr);gap:16px;min-width:0;display:grid}.game-tools-grid>.card{min-width:0}.player-strips{gap:8px;display:grid}.player-strip{background:#1e293bc7;border:1px solid #94a3b833;border-radius:12px;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.player-strip.active{background:#1e40af2e;border-color:#60a5fa8c}.player-name{color:#dbeafe;font-size:.82rem;font-weight:700}.player-clock{color:#f8fafc;letter-spacing:.03em;font-size:1rem}.turn-banner{color:#e2e8f0;background:#1e293bf2;border:1px solid #94a3b833;border-radius:14px;padding:12px 16px;font-weight:700}.turn-banner.check{color:#fecaca;background:#7f1d1d47;border-color:#f87171bf}.board-frame{grid-template-rows:auto;grid-template-columns:minmax(0,1fr);place-items:center;gap:0;width:100%;margin:0;display:grid}.board-area{grid-area:1/1;width:min(100%,860px);position:relative}.board{aspect-ratio:1;border:10px solid #5b4030;border-radius:18px;grid-template-rows:repeat(8,minmax(0,1fr));grid-template-columns:repeat(8,minmax(0,1fr));width:100%;display:grid;overflow:hidden;box-shadow:inset 0 0 0 4px #00000026}@media (width>=1024px){.board-area{width:min(100%, max(220px, calc((100dvh - 320px) * var(--board-scale,1))), 860px)}}.square{aspect-ratio:1;appearance:none;cursor:pointer;border:none;place-items:center;width:100%;min-width:0;min-height:0;padding:0;font-size:clamp(2rem,4vw,3.1rem);line-height:1;transition:filter .15s,box-shadow .15s;display:grid;position:relative}.square-coordinate{z-index:2;pointer-events:none;font-size:.58rem;font-weight:700;line-height:1;position:absolute}.square-coordinate.rank{top:3px;left:3px}.square-coordinate.file{bottom:3px;left:3px}.square.light .square-coordinate{color:#0f172ab8}.square.dark .square-coordinate{color:#fff8e7e0}.square:hover{filter:brightness(1.06)}.square.light{background:#f0d9b5}.square.dark{background:#b58863}.square.selected{box-shadow:inset 0 0 0 4px #3b82f6e6}.square.last-move{box-shadow:inset 0 0 0 999px #facc1533}.square.legal:after{content:"";background:#0f766e1f;position:absolute;inset:0}.dot{background:#11182761;border-radius:50%;width:22%;height:22%;position:absolute}.piece{z-index:1;-webkit-user-select:none;user-select:none;pointer-events:none;place-items:center;width:100%;height:100%;line-height:1;display:grid;position:relative}.piece-illustration{filter:drop-shadow(0 1px 1px #0f172a4d);width:82%;height:82%;display:block;overflow:visible}.piece-main{fill:var(--piece-fill);stroke:var(--piece-stroke);stroke-width:3.5px}.piece-main .piece-detail{fill:none;stroke:var(--piece-detail);stroke-width:2.5px}.piece-main .piece-eye{fill:var(--piece-stroke);stroke:none}.piece-knight-illustration .piece-main{stroke-width:1.5px}.piece-knight-illustration .piece-main .piece-highlight{fill:var(--piece-detail);stroke:none}.piece.white{--piece-fill:#f7edda;--piece-stroke:#594630;--piece-detail:#a88b60}.piece.black{--piece-fill:#303943;--piece-stroke:#0b1117;--piece-detail:#d1ba91}.piece-style-modern .piece.white,.piece-preview-modern .piece.white{--piece-fill:#f0f7fb;--piece-stroke:#326d8b;--piece-detail:#68a7c4}.piece-style-modern .piece.black,.piece-preview-modern .piece.black{--piece-fill:#19445a;--piece-stroke:#071923;--piece-detail:#9bd0e3}.piece-style-outline .piece.white,.piece-preview-outline .piece.white{--piece-fill:transparent;--piece-stroke:#403426;--piece-detail:#403426}.piece-style-outline .piece.black,.piece-preview-outline .piece.black{--piece-fill:transparent;--piece-stroke:#fff0d2;--piece-detail:#fff0d2}.piece-style-outline .piece-main,.piece-preview-outline .piece-main{stroke-width:4.8px}.sidebar{flex-direction:column;gap:16px;width:min(100%,420px);min-width:0;display:flex}.game-info-card{gap:10px;display:grid}.game-import{border-bottom:1px solid #94a3b829;padding-bottom:7px}.game-import summary{color:#93c5fd;cursor:pointer;font-size:.76rem;font-weight:700}.game-import-form{gap:6px;margin-top:8px;display:grid}.game-import-form label{color:#cbd5e1;gap:4px;min-width:0;font-size:.7rem;font-weight:700;display:grid}.game-import-form input,.game-import-form textarea{color:#f8fafc;background:#02061780;border:1px solid #94a3b83d;border-radius:8px;width:100%;min-width:0;padding:7px;font-size:.72rem}.game-import-form input[type=file]{padding:5px}.game-import-form textarea{resize:vertical}.game-import-form>.secondary-btn{padding:7px 10px}.import-message{color:#bfdbfe;margin:0;font-size:.72rem}.captures-block{gap:6px;display:grid}.captures-block p{color:#93c5fd;margin:0;font-size:.72rem;font-weight:700}.captured-row{background:#0f172ab8;border:1px solid #93c5fd47;border-radius:9px;flex-wrap:wrap;align-items:center;gap:6px;min-height:40px;padding:6px 8px;display:flex}.captured-row .piece{width:30px;height:30px}.compact-history{max-height:210px}@media (width>=1024px){.sidebar{min-height:0}}@media (width<=1100px){.game-panel{padding:clamp(16px,2vw,22px)}}@media (height<=760px) and (width>=821px){.game-panel{padding:16px}.topbar{margin-bottom:14px}.board-area{width:min(100%, max(220px, calc((100dvh - 320px) * var(--board-scale,1))), 860px)}}.card-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.score-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;display:grid}.score-grid div{background:#94a3b814;border-radius:10px;justify-items:center;gap:3px;padding:10px 4px;display:grid}.score-grid strong{color:#f8fafc;font-size:1.35rem}.score-grid span{color:#94a3b8;font-size:.7rem}.rating-summary{color:#bfdbfe;border-top:1px solid #94a3b826;gap:3px;margin-top:14px;padding-top:12px;display:grid}.rating-summary strong{color:#f8fafc;font-size:1.4rem}.rating-summary span,.rating-summary small{color:#94a3b8;font-size:.72rem}.danger-btn{color:#fca5a5}.text-btn{color:#93c5fd;cursor:pointer;background:0 0;border:0;padding:4px 0;font-size:.78rem;font-weight:700}.text-btn:hover{color:#dbeafe}.history-action{width:100%;margin-top:14px}.history-action:disabled{cursor:not-allowed;opacity:.45}.promotion-backdrop{z-index:10;background:#020617b8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.promotion-dialog{background:#172033;border:1px solid #94a3b847;border-radius:18px;width:min(92vw,460px);padding:22px;box-shadow:0 24px 70px #02061799}.promotion-dialog h2,.promotion-dialog p{margin-top:0}.promotion-dialog p{color:#cbd5e1}.promotion-options{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.promotion-option{color:#e2e8f0;cursor:pointer;background:#94a3b814;border:1px solid #94a3b83d;border-radius:12px;justify-items:center;gap:6px;padding:10px 6px;display:grid}.promotion-option:hover{background:#60a5fa29;border-color:#60a5fab3}.promotion-option .piece{width:58px;height:58px}.card{background:#0f172acc;border:1px solid #94a3b833;border-radius:18px;padding:18px}.card h2{color:#f8fafc;margin:0 0 14px;font-size:1.15rem}.history-list{color:#dbeafe;gap:8px;max-height:420px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.history-list li{background:#1e293bcc;border:1px solid #94a3b81f;border-radius:10px;align-items:center;gap:8px;padding:8px 10px;display:flex}.empty-history{color:#cbd5e1;margin:0}.analysis-review{border-bottom:1px solid #94a3b829;gap:7px;padding-bottom:8px;display:grid}.game-export-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.game-export-actions .secondary-btn{white-space:normal;min-width:0;padding:7px 6px;font-size:.72rem;line-height:1.25}.game-export-actions .auth-error{grid-column:1/-1;font-size:.72rem}.analysis-review>.secondary-btn{width:100%;padding:7px 10px}.analysis-navigation{grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;gap:6px;display:grid}.analysis-navigation .secondary-btn{min-width:0;padding:6px 4px}.analysis-navigation span{color:#cbd5e1;text-align:center;font-size:.72rem}.analysis-result{background:#1e293bb8;border-radius:8px;gap:3px;padding:7px 8px;display:grid}.analysis-result p{color:#cbd5e1;margin:0;font-size:.74rem;line-height:1.4}.analysis-result strong{color:#f8fafc}.current-review-move{background:#1e40af4d!important;border-color:#60a5faa6!important}@media (width>=1024px){.game-tools-grid{gap:8px;height:100%;min-height:0;overflow-y:auto}.game-tools-grid .card{gap:5px;padding:10px}.game-tools-grid .card h2{margin-bottom:5px;font-size:1rem}.game-tools-grid .card-heading{gap:6px}.game-info-card .captures-block p{font-size:.68rem}.game-info-card .captured-row{gap:2px;min-height:27px;padding:2px 4px}.game-info-card .compact-history{max-height:min(14dvh,100px)}.game-info-card .history-list li{gap:5px;padding:4px 6px}.game-info-card .history-action{margin-top:2px;padding:7px 10px}.game-tools-grid .score-card>.secondary-btn{padding:7px 10px}.game-body{gap:8px clamp(12px,1.2vw,18px)}.profile-card{padding:8px}.profile-summary{grid-template-columns:36px minmax(0,1fr);column-gap:7px}.profile-summary .profile-avatar{width:36px;height:36px}.profile-summary .card-heading h2{margin:0;font-size:.88rem}.profile-summary>strong{font-size:.72rem}.profile-editor{margin-top:5px;padding-top:5px}.profile-editor summary{font-size:.68rem}.game-info-card,.score-card{gap:4px;padding:8px}.game-tools-grid .game-info-card .card-heading,.game-tools-grid .score-card .card-heading{align-items:center;min-height:20px}.game-tools-grid .game-info-card .card-heading h2,.game-tools-grid .score-card .card-heading h2{margin:0;font-size:.9rem}.game-info-card .game-import{padding-bottom:3px}.game-info-card .game-import summary{font-size:.66rem}.game-info-card .captures-block{gap:2px}.game-info-card .captures-block p{font-size:.62rem;line-height:1.1}.game-info-card .captured-row{min-height:20px;padding:1px 3px}.game-info-card .captured-row .piece{width:18px;height:18px}.game-info-card>.empty-history{font-size:.68rem}.game-info-card .history-action{min-height:0;padding:4px 8px;font-size:.68rem}.game-tools-grid .score-grid{gap:3px;margin-top:2px}.game-tools-grid .score-grid div{padding:3px 1px}.game-tools-grid .score-grid strong{font-size:.92rem}.game-tools-grid .score-grid span{font-size:.58rem}.game-tools-grid .score-card>.secondary-btn{min-height:0;padding:4px 8px;font-size:.68rem}.game-tools-grid .rating-summary{gap:1px;margin-top:3px;padding-top:3px}.game-tools-grid .rating-summary strong{font-size:1rem}.game-tools-grid .rating-summary span,.game-tools-grid .rating-summary small{font-size:.6rem;line-height:1.25}}@media (width<=900px){.app-shell{height:auto;min-height:100vh;overflow:visible}.game-panel{height:auto;min-height:0;padding:clamp(14px,3vw,22px)}.game-body{grid-template:auto/1fr;overflow:visible}.game-body>.board-panel{display:flex}.game-tools-grid,.player-strips,.turn-banner,.board-frame,.sidebar{grid-area:auto}.sidebar{width:100%;max-width:none}.topbar{flex-direction:column;align-items:flex-start}.topbar h1{font-size:1.65rem}.actions{width:100%}.primary-btn,.secondary-btn{flex:1;justify-content:center}.account-form{grid-template-columns:1fr 1fr}.account-form .primary-btn{grid-column:1/-1}.game-panel{width:100%}.board-area{width:min(100%,760px)}.board-frame{grid-template-rows:auto;grid-template-columns:minmax(0,1fr);justify-items:center;width:100%}.square{font-size:clamp(1.8rem,9vw,2.7rem)}.account-row{flex-direction:column;align-items:flex-start}.account-actions{flex-wrap:wrap}}@media (height<=500px) and (width<=900px){.topbar{gap:8px;margin-bottom:12px}.topbar h1{font-size:1.55rem}.actions{gap:6px}.board-area{width:min(100%,100svh - 170px,480px)}}@media (width<=520px){.app-shell,.auth-shell{padding:max(8px, env(safe-area-inset-left)) max(8px, env(safe-area-inset-right))}.game-panel,.auth-card{border-radius:16px;padding:14px}.board-area,.actions,.mode-switch{width:100%}.mode-switch{border-radius:14px;flex-wrap:wrap;justify-content:center;gap:2px}.mode-switch .secondary-btn{flex:1;min-width:0;padding:8px 4px;font-size:.68rem}.mode-switch{flex:1 0 100%}.actions>.primary-btn,.actions>.secondary-btn{flex:none;width:auto}.actions>.text-btn,.actions .level-select,.player-color-label,.logged-user,.download-app-link{text-align:left;width:auto}.promotion-options{gap:6px}.promotion-option .piece{font-size:2rem}.admin-heading{flex-direction:column;align-items:flex-start}.account-form{grid-template-columns:1fr}}@media (width<=360px){.mode-switch .secondary-btn{flex-basis:calc(50% - 4px)}.player-strip{gap:8px;padding:8px}.player-name{overflow-wrap:anywhere;min-width:0}}
