.piece{-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.piece--white{color:var(--color-piece-white)}.piece--black{color:var(--color-piece-black)}.piece--selected{filter:brightness(1.1)}.piece__image{object-fit:contain;width:85%;height:85%}@media (prefers-reduced-motion:reduce){.piece{transition:none}}.square{cursor:pointer;isolation:isolate;width:100%;min-width:0;height:100%;min-height:0;transition:filter var(--motion-fast), transform var(--motion-fast), box-shadow var(--motion-fast);border:none;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:relative}@media (width<=480px){.square__indicator{width:34%;height:34%}}.square:before{content:"";z-index:-1;background:linear-gradient(135deg, #ffffff29, transparent 38%), var(--square-bg);position:absolute;inset:0}.square--light{--square-bg:var(--color-square-light)}.square--dark{--square-bg:var(--color-square-dark)}.square:hover{filter:brightness(1.05)saturate(1.04)}.square--selected{box-shadow:inset 0 0 0 4px #f6d66fe6,inset 0 0 28px #1b0f0947}.square__indicator{pointer-events:none;background:radial-gradient(circle,#fff8e8f2,#f6d66fbf 45%,#3a4826e6 46%);border-radius:50%;width:28%;height:28%;position:absolute;box-shadow:0 0 0 5px #3948262e,0 8px 16px #1b0f0942}.square--last-move{box-shadow:inset 0 0 0 999px #d7b54a57}.square--check{box-shadow:inset 0 0 0 999px #b73a2c6b,inset 0 0 0 4px #fff8e8d1}@keyframes captureFlash{0%{transform:scale(1.025);box-shadow:inset 0 0 0 999px #b73a2c9e,0 0 #f6d66ff2}45%{transform:scale(.99);box-shadow:inset 0 0 0 999px #b73a2c3d,0 0 22px 8px #f6d66f85}to{transform:scale(1);box-shadow:inset 0 0 #b73a2c00,0 0 #f6d66f00}}.square--capture{z-index:2;animation:.26s cubic-bezier(.2,.9,.2,1) captureFlash}.square:focus-visible{outline:3px solid var(--color-ring);outline-offset:-3px;z-index:3}@media (prefers-reduced-motion:reduce){.square{transition:none}.square--capture{animation:none}}.board{grid-template-columns:var(--board-label-size) repeat(8, 1fr);grid-template-rows:repeat(8, 1fr) var(--board-label-size);width:var(--board-size);height:var(--board-size);border:clamp(3px, .9vw, 8px) solid var(--color-walnut-900);background:linear-gradient(135deg, var(--color-walnut-800), var(--color-walnut-950));border-radius:clamp(10px,2.2vw,22px);display:grid;overflow:hidden;box-shadow:0 18px 42px #00000070,inset 0 0 0 1px #fff8e829,inset 0 0 0 10px #70482b2e}.board__label{color:#fff8e8c7;font-family:var(--font-family-mono);letter-spacing:.06em;text-transform:uppercase;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:clamp(8px,1.6vw,12px);font-weight:800;display:flex}.board__label--file{grid-row:9}.board__label--rank{grid-column:1}.board__square{width:100%;min-width:0;height:100%;min-height:0}@media (width>=560px){.board{--board-label-size:26px}}@media (width<=480px){.board{border-radius:var(--radius-sm);border-width:3px;box-shadow:0 12px 28px #00000061,inset 0 0 0 1px #fff8e824}.board__label{font-size:0}}.promotion-modal__overlay{z-index:100;padding:var(--space-4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0d0704a8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.promotion-modal{align-items:center;gap:var(--space-5);width:min(100%,460px);padding:clamp(var(--space-5), 5vw, var(--space-8));border-radius:var(--radius-xl);background:linear-gradient(180deg, var(--color-surface), var(--color-surface-muted));box-shadow:var(--shadow-lg), inset 0 1px 0 #fffc;animation:modalIn var(--motion-standard);border:1px solid #f3d7858f;flex-direction:column;display:flex}.promotion-modal__title{color:var(--color-text);font-family:var(--font-family-display);text-align:center;margin:0;font-size:clamp(26px,8vw,36px);font-weight:900;line-height:1}.promotion-modal__options{gap:var(--space-3);grid-template-columns:repeat(4,minmax(58px,1fr));width:100%;display:grid}.promotion-modal__option{aspect-ratio:1;border-radius:var(--radius-lg);background:linear-gradient(135deg, #ffffff52, transparent 42%), var(--color-square-light);cursor:pointer;min-width:58px;min-height:64px;padding:var(--space-2);box-shadow:var(--shadow-sm);transition:transform var(--motion-fast), box-shadow var(--motion-fast), filter var(--motion-fast);border:1px solid #3a22158a}.promotion-modal__option:hover{filter:brightness(1.04)saturate(1.08);transform:translateY(-2px)scale(1.03);box-shadow:0 12px 26px #1b0f093d}.promotion-modal__option:active{transform:translateY(1px)scale(.98)}.promotion-modal__option:focus-visible,.promotion-modal__cancel:focus-visible{outline:3px solid var(--color-ring);outline-offset:3px}.promotion-modal__cancel{border-radius:var(--radius-md);min-height:44px;color:var(--color-text);cursor:pointer;transition:background-color var(--motion-fast), color var(--motion-fast), transform var(--motion-fast);background:0 0;border:1px solid #3a22158a;padding:10px 24px;font-weight:900}.promotion-modal__cancel:hover{background:var(--color-walnut-800);color:var(--color-text-inverse)}@media (width<=420px){.promotion-modal__options{grid-template-columns:repeat(2,minmax(88px,1fr))}}@media (prefers-reduced-motion:reduce){.promotion-modal,.promotion-modal *{transition:none;animation:none}}.game-over-overlay{z-index:50;padding:var(--space-4);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1b0f09c7;justify-content:center;align-items:center;animation:.24s ease-out overlayFade;display:flex;position:absolute;inset:0}.game-over-overlay__content{align-items:center;gap:var(--space-4);width:min(88%,380px);padding:clamp(var(--space-5), 5vw, var(--space-8));border-radius:var(--radius-xl);background:linear-gradient(180deg, var(--color-surface), var(--color-surface-muted));box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffffc7;text-align:center;border:1px solid #f3d7859e;flex-direction:column;animation:.26s cubic-bezier(.2,.9,.2,1) overlayCard;display:flex}.game-over-overlay__title{color:var(--color-text);font-family:var(--font-family-display);margin:0;font-size:clamp(30px,7vw,44px);font-weight:900;line-height:1}.game-over-overlay__subtitle{color:var(--color-text-muted);margin:0;font-size:16px;font-weight:750}.game-over-overlay__button{border-radius:var(--radius-md);background:linear-gradient(180deg, var(--color-gold-300), var(--color-gold-500));color:#24150c;cursor:pointer;min-height:44px;transition:transform var(--motion-fast), box-shadow var(--motion-fast), filter var(--motion-fast);border:1px solid #3a221594;padding:12px 32px;font-weight:900;box-shadow:0 4px #53341f73,inset 0 1px #fff8e8bf}.game-over-overlay__button:hover{filter:brightness(1.05)saturate(1.08);transform:translateY(-1px)}.game-over-overlay__button:active{transform:translateY(2px)scale(.99);box-shadow:0 2px #53341f73}.game-over-overlay__button:focus-visible{outline:3px solid var(--color-ring);outline-offset:3px}@keyframes overlayFade{0%{opacity:0}to{opacity:1}}@keyframes overlayCard{0%{opacity:0;transform:translateY(10px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.game-over-overlay,.game-over-overlay__content,.game-over-overlay__button{transition:none;animation:none}}.settings-modal__overlay{z-index:100;padding:var(--space-4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0d0704a8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.settings-modal{gap:var(--space-5);width:min(100%,420px);padding:clamp(var(--space-5), 5vw, var(--space-8));border-radius:var(--radius-xl);background:linear-gradient(180deg, var(--color-surface), var(--color-surface-muted));box-shadow:var(--shadow-lg), inset 0 1px 0 #fffc;animation:modalIn var(--motion-standard);border:1px solid #f3d7858f;flex-direction:column;display:flex}.settings-modal__title{color:var(--color-text);font-family:var(--font-family-display);text-align:center;margin:0;font-size:clamp(26px,8vw,36px);font-weight:900;line-height:1}.settings-modal__section{align-items:center;gap:var(--space-4);padding:var(--space-3);border-radius:var(--radius-lg);background:#fff8e8a8;border:1px solid #3a22151f;grid-template-columns:1fr auto;display:grid}.settings-modal__label{color:var(--color-text-muted);letter-spacing:.1em;text-transform:uppercase;font-size:14px;font-weight:900}.settings-modal__toggle-group{gap:var(--space-2);display:flex}.settings-modal__option,.settings-modal__toggle,.settings-modal__close{border-radius:var(--radius-md);min-height:44px;color:var(--color-text);cursor:pointer;transition:transform var(--motion-fast), box-shadow var(--motion-fast), background-color var(--motion-fast), color var(--motion-fast);border:1px solid #3a22158a;padding:10px 16px;font-weight:900}.settings-modal__option,.settings-modal__toggle--off{background:var(--color-surface)}.settings-modal__option:hover:not(.settings-modal__option--active),.settings-modal__toggle--off:hover,.settings-modal__close:hover{background:var(--color-walnut-800);color:var(--color-text-inverse)}.settings-modal__option--active,.settings-modal__toggle--on{background:linear-gradient(180deg, var(--color-olive-500), var(--color-olive-700));color:var(--color-text-inverse);box-shadow:inset 0 1px #fff3}.settings-modal__toggle:hover,.settings-modal__option:hover,.settings-modal__close:hover{transform:translateY(-1px)}.settings-modal__toggle:active,.settings-modal__option:active,.settings-modal__close:active{transform:translateY(1px)scale(.99)}.settings-modal__close{background:0 0}.settings-modal__close:focus-visible,.settings-modal__option:focus-visible,.settings-modal__toggle:focus-visible{outline:3px solid var(--color-ring);outline-offset:3px}@keyframes modalIn{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=420px){.settings-modal__section{grid-template-columns:1fr}.settings-modal__toggle-group,.settings-modal__option,.settings-modal__toggle,.settings-modal__close{width:100%}}@media (prefers-reduced-motion:reduce){.settings-modal,.settings-modal *{transition:none;animation:none}}.app{align-items:center;gap:clamp(var(--space-4), 2.5vw, var(--space-8));width:100%;min-height:100dvh;padding:clamp(var(--space-2), 2vw, var(--space-6));background:radial-gradient(circle at 18% 10%, #f3d7852e, transparent 30%), radial-gradient(circle at 82% 0%, #8d5a3233, transparent 34%), linear-gradient(135deg, var(--color-walnut-950), var(--color-walnut-800) 52%, var(--color-walnut-950));flex-direction:column;display:flex;overflow-x:hidden}.app:before{content:"";pointer-events:none;opacity:.24;background-image:linear-gradient(90deg,#fff8e80a 1px,#0000 1px),linear-gradient(#fff8e809 1px,#0000 1px);background-size:42px 42px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(circle,#000,#0000 82%);mask-image:radial-gradient(circle,#000,#0000 82%)}.app__header{width:min(100%,1180px);padding-top:var(--space-2);z-index:1;position:relative}.app__header:after{content:"Tournament table • single-player analysis";margin-top:var(--space-2);text-align:center;color:#fff8e8b8;letter-spacing:.18em;text-transform:uppercase;font-size:clamp(12px,2vw,14px);font-weight:700;display:block}.app__header-bar{align-items:center;gap:var(--space-3);grid-template-columns:1fr auto 1fr;display:grid}.app__title{color:var(--color-text-inverse);font-family:var(--font-family-display);letter-spacing:.08em;text-transform:uppercase;text-shadow:0 3px #00000040,0 18px 42px #00000075;grid-column:2;margin:0;font-size:clamp(36px,9vw,72px);font-weight:800;line-height:.95}.app__github-link{justify-content:center;justify-self:end;align-items:center;gap:var(--space-2);min-width:44px;min-height:44px;color:var(--color-text-inverse);letter-spacing:.08em;text-transform:uppercase;transition:background-color var(--motion-fast), border-color var(--motion-fast), transform var(--motion-fast), color var(--motion-fast);background:#fff8e81a;border:1px solid #f3d7856b;border-radius:999px;grid-column:3;padding:10px 14px;font-size:13px;font-weight:900;text-decoration:none;display:inline-flex;box-shadow:inset 0 1px #fff8e829,0 10px 24px #0d070442}.app__github-link:hover{color:var(--color-gold-300);background:#fff8e82e;border-color:#f3d785c7;transform:translateY(-1px)}.app__github-link:active{transform:translateY(1px)scale(.99)}.app__github-link:focus-visible{outline:3px solid var(--color-ring);outline-offset:3px}.app__github-icon{flex:none;width:20px;height:20px}.app__main{place-items:start center;gap:clamp(var(--space-4), 3vw, var(--space-8));z-index:1;grid-template-columns:1fr;width:min(100%,1180px);display:grid;position:relative}.app__board-stage{background:linear-gradient(145deg, #fff8e82e, #fff8e808), linear-gradient(135deg, var(--color-walnut-700), var(--color-walnut-950));width:fit-content;max-width:100%;box-shadow:var(--shadow-lg), inset 0 1px 0 #fff8e83d;border:1px solid #f3d7854d;border-radius:clamp(16px,4vw,34px);padding:clamp(6px,1.4vw,16px);position:relative}@media (width<=480px){.app{gap:var(--space-3);padding-inline:var(--space-1);padding-block:var(--space-2) var(--space-4)}.app__header{padding-top:0}.app__header-bar{grid-template-columns:1fr auto}.app__title{letter-spacing:.05em;grid-column:1;justify-self:start;font-size:clamp(30px,12vw,44px)}.app__github-link{grid-column:2;padding-inline:12px}.app__github-label,.app__header:after{display:none}.app__main{gap:var(--space-3)}.app__board-stage{border-radius:var(--radius-md);padding:4px}.app__board-stage:before{inset:8px}}.app__board-stage:before{content:"";pointer-events:none;border-radius:clamp(12px,3vw,24px);position:absolute;inset:clamp(12px,2vw,24px);box-shadow:0 0 0 1px #f3d78538,inset 0 0 42px #00000047}@media (width>=980px){.app{padding:var(--space-6)}.app__main{grid-template-columns:minmax(0,auto) minmax(320px,380px);justify-content:center}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}:root{--color-walnut-950:#1b0f09;--color-walnut-900:#27160d;--color-walnut-800:#3a2215;--color-walnut-700:#53341f;--color-walnut-600:#70482b;--color-parchment-50:#fff8e8;--color-parchment-100:#f7edcf;--color-parchment-200:#ead6a9;--color-gold-300:#f3d785;--color-gold-500:#c99632;--color-gold-700:#8b601d;--color-olive-500:#667545;--color-olive-700:#394826;--color-danger-500:#b73a2c;--color-danger-700:#7c2119;--color-app-bg:var(--color-walnut-950);--color-surface:var(--color-parchment-50);--color-surface-muted:var(--color-parchment-100);--color-surface-strong:var(--color-parchment-200);--color-text:#26170f;--color-text-muted:#654b35;--color-text-inverse:#fff7df;--color-border:#3a22158c;--color-ring:#f6d66f;--color-square-light:#efd8a6;--color-square-dark:#8d5a32;--color-square-selected:#52693a;--color-square-valid-target:#3f512b;--color-square-last-move:#d7b54a;--color-square-check:#b73a2c;--color-piece-white:#f8f1e5;--color-piece-black:#3d2817;--color-piece-outline-light:var(--color-walnut-800);--color-piece-outline-dark:var(--color-walnut-950);--color-piece-outline:var(--color-piece-outline-light);--font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-display:Georgia, "Times New Roman", serif;--font-family-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--radius-xl:30px;--shadow-sm:0 6px 18px #1b0f092e;--shadow-md:0 18px 48px #1b0f0952;--shadow-lg:0 32px 90px #0d070485;--motion-fast:.16s ease-out;--motion-standard:.24s cubic-bezier(.2, .9, .2, 1);--mobile-viewport-gutter:16px;--board-size:min(calc(100vw - var(--mobile-viewport-gutter)), 608px);--board-label-size:clamp(0px, calc((100vw - 360px) * .45), 28px);--square-size:calc(var(--board-size) / 8)}*{box-sizing:border-box}html{background:var(--color-app-bg)}body{min-width:320px;font-family:var(--font-family);color:var(--color-text);margin:0}button,select{font:inherit;touch-action:manipulation}
