html{color-scheme:light}.reversi-page{--reversi-frame-width: 940px;--color-bg: #f4efe4;--color-surface: #faf7f0;--color-surface-2: #f2ead9;--color-surface-3: #ece3d2;--color-text: #241d18;--color-text-muted: #8a7c68;--color-border: rgba(36, 29, 24, .2);--color-primary: #241d18;--color-primary-strong: #120d0a;--color-on-primary: #f7f2e8;--color-accent: #8c3b2f;--ink: #241d18;--ink-soft: rgba(36, 29, 24, .3);--ink-hair: rgba(36, 29, 24, .24);--accent: #8c3b2f;--board-face: #f4eddd}.reversi-page .tool-frame{max-width:var(--reversi-frame-width)}.reversi-page .tool-header-block{max-width:660px}.reversi-page .page-subtitle{max-width:52ch}.reversi__titlebar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.reversi__wordmark{display:flex;align-items:baseline;gap:12px}.reversi__wordmark .page-title{margin:0;max-width:none;font-family:"Noto Serif TC",Songti TC,"Source Han Serif TC",Georgia,serif;font-size:clamp(2rem,4vw,2.8rem);line-height:1;letter-spacing:.06em}.reversi__en{color:var(--color-text-muted);font-size:.8rem;letter-spacing:.3em;text-transform:uppercase}.reversi-seg{display:inline-flex;gap:2px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:11px;padding:4px}.reversi-seg--grid{display:grid;grid-template-columns:repeat(4,1fr)}.reversi-seg__btn{appearance:none;border:0;background:transparent;cursor:pointer;font:inherit;font-size:.9rem;color:var(--color-text-muted);padding:8px 14px;border-radius:8px;min-height:0;letter-spacing:.04em;white-space:nowrap;transition:color .16s,background .16s}.reversi-seg--grid .reversi-seg__btn{padding:8px 4px;font-size:.84rem}.reversi-seg__btn:hover{color:var(--color-text)}.reversi-seg__btn.active{color:var(--color-text);font-weight:600;background:var(--board-face);box-shadow:inset 0 0 0 1px var(--ink-soft)}.reversi__diff .reversi-seg__btn{position:relative}.reversi__diff .reversi-seg__btn.active:after{content:"";position:absolute;left:22%;right:22%;bottom:4px;height:2.5px;border-radius:2px;background:var(--accent)}.reversi__lang{align-self:center}.reversi__sidepick{display:inline-flex}.reversi__sidepick .reversi-seg__btn{padding:7px 14px;display:flex;align-items:center;gap:7px}.reversi__side-lbl{font-size:.9rem}.reversi__stage{display:grid;grid-template-columns:auto minmax(212px,252px);gap:26px;align-items:start;justify-content:center}.reversi__board-wrap{position:relative;box-sizing:border-box;width:min(80vw,486px);padding:12px 12px 22px 22px;background:linear-gradient(158deg,#f7f1e5,#efe6d4);border:1px solid var(--color-border);border-radius:12px;box-shadow:0 18px 40px -26px #32261a80,inset 0 0 0 1px #fff6}.reversi__files{position:absolute;left:22px;right:12px;bottom:4px;display:grid;grid-template-columns:repeat(8,1fr);pointer-events:none}.reversi__files span{text-align:center;font-size:.6rem;color:var(--color-text-muted)}.reversi__ranks{position:absolute;top:12px;bottom:22px;left:4px;width:16px;display:grid;grid-template-rows:repeat(8,1fr);pointer-events:none}.reversi__ranks span{display:grid;place-items:center;font-size:.6rem;color:var(--color-text-muted)}.reversi__board{width:100%;aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);background:linear-gradient(var(--ink-hair) 1px,transparent 1px) 0 0 / 100% 12.5%,linear-gradient(90deg,var(--ink-hair) 1px,transparent 1px) 0 0 / 12.5% 100%,var(--board-face);outline:1.5px solid var(--ink-soft)}.reversi__board.is-thinking{pointer-events:none}.reversi__cell{position:relative;display:grid;place-items:center;appearance:none;border:0;padding:0;margin:0;background:transparent;cursor:default;min-height:0}.reversi__cell--playable{cursor:pointer}.reversi__cell--star:before{content:"";position:absolute;left:0;top:0;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--ink);opacity:.2;pointer-events:none}.reversi__cell--hint:after{content:"";position:absolute;inset:0;margin:auto;width:30%;height:30%;border-radius:50%;background:var(--accent);opacity:.32;pointer-events:none;transition:opacity .15s,transform .15s}.reversi__cell--playable:hover:after{opacity:.58;transform:scale(1.2)}.reversi__cell--last{box-shadow:inset 0 0 0 2px #8c3b2f80}@keyframes reversi-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}60%{transform:translate(3px)}80%{transform:translate(-2px)}}.reversi__cell--nope{animation:reversi-shake .32s ease}.reversi__disc{position:relative;width:80%;height:80%;border-radius:50%}.reversi__disc.is-black{background:radial-gradient(circle at 37% 32%,#483d34,#241c16 45%,#100c09);box-shadow:0 3px 5px -1px #140c0880,inset 0 -2px 4px #00000059,inset 0 2px 3px #ffffff1a}.reversi__disc.is-white{background:radial-gradient(circle at 38% 33%,#fffdf8,#f3ece0 60%,#e4d8c4);box-shadow:0 3px 5px -1px #3c2d1e52,inset 0 0 0 1.4px #241d186b}@keyframes reversi-drop{0%{transform:scale(.35);opacity:.25}to{transform:scale(1);opacity:1}}.reversi__disc.is-fresh{animation:reversi-drop .28s cubic-bezier(.2,.7,.3,1)}.reversi__disc.is-fresh:before{content:"";position:absolute;inset:-16%;border-radius:50%;border:2px solid var(--accent);opacity:0;animation:reversi-ring .55s ease-out;pointer-events:none}@keyframes reversi-ring{0%{opacity:.5;transform:scale(.5)}to{opacity:0;transform:scale(1.2)}}@keyframes reversi-flip{0%{transform:scaleX(1)}50%{transform:scaleX(.08)}to{transform:scaleX(1)}}.reversi__disc.is-flip{animation:reversi-flip .34s ease both}.reversi__result{position:absolute;inset:0;display:grid;place-items:center;padding:14px;background:#f4efe4e0;backdrop-filter:blur(2px);border-radius:12px;animation:reversi-fade .25s ease}@keyframes reversi-fade{0%{opacity:0}to{opacity:1}}.reversi__board-wrap .reversi__result[hidden]{display:none}.result-card{position:relative;text-align:center;padding:26px 30px;background:var(--color-surface);border:1px solid var(--ink-soft);border-radius:14px;box-shadow:0 22px 50px -24px #32261a99;max-width:86%}.reversi__result-close{position:absolute;top:6px;right:8px;appearance:none;border:0;background:transparent;cursor:pointer;font-size:1.4rem;line-height:1;color:var(--color-text-muted);padding:4px 9px;border-radius:8px;min-height:0}.reversi__result-close:hover{color:var(--color-text)}.result-card__kicker{margin:0 0 5px;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--color-text-muted)}.result-card__title{margin:0 0 8px;font-size:1.9rem;font-family:"Noto Serif TC",Songti TC,Georgia,serif}.result-card__body{margin:0 0 18px;color:var(--color-text-muted)}.result-card__actions{display:flex;justify-content:center}.reversi__side{gap:18px}.reversi__status{display:flex;align-items:center;justify-content:center;gap:9px;min-height:1.6em;font-size:1rem;color:var(--color-text)}.reversi__turn-dot{width:14px;height:14px;border-radius:50%}.reversi__turn-dot.is-black,.reversi__pip--b{background:radial-gradient(circle at 38% 34%,#3a302a,#14100d 74%);box-shadow:0 1px 2px #00000047}.reversi__turn-dot.is-white,.reversi__pip--w{background:#f4ecdf;box-shadow:inset 0 0 0 1.3px #241d186b}.reversi__spin{width:13px;height:13px;border-radius:50%;border:2px solid var(--ink-soft);border-top-color:var(--accent);animation:reversi-spin .7s linear infinite}@keyframes reversi-spin{to{transform:rotate(360deg)}}.reversi__score{display:flex;align-items:center;justify-content:center;gap:18px;padding:6px 0 2px}.reversi__score-side{display:flex;align-items:center;gap:9px}.reversi__num{font-family:"Noto Serif TC",Songti TC,Georgia,serif;font-size:1.6rem;font-weight:600;min-width:1.5ch;text-align:center}.reversi__vs{font-size:.72rem;letter-spacing:.2em;color:var(--color-text-muted)}.reversi__pip{width:17px;height:17px;border-radius:50%;display:inline-block}.reversi__owner{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.reversi__pass-tag{display:inline-block;font-size:.62rem;letter-spacing:.14em;font-weight:700;color:var(--accent);border:1px solid var(--accent);border-radius:5px;padding:1px 5px;margin-right:6px}.reversi__setting{display:flex;flex-direction:column;gap:7px}.reversi__setting-label{font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.reversi__hintrow{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--color-text-muted);cursor:pointer}.reversi__hintrow input{width:16px;height:16px;accent-color:var(--accent)}.reversi__buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.reversi__share{width:100%}.reversi__log-wrap{display:flex;flex-direction:column;gap:7px}.reversi__log-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}.reversi__live-btn{appearance:none;border:1px solid var(--accent);background:transparent;cursor:pointer;color:var(--accent);font:inherit;font-size:.72rem;letter-spacing:.04em;padding:3px 9px;border-radius:7px;min-height:0}.reversi__live-btn[hidden]{display:none}.reversi__log{list-style:none;margin:0;padding:6px;display:grid;grid-template-columns:repeat(2,1fr);gap:2px 8px;max-height:150px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px}.reversi__log:empty{display:none}.reversi__log-item{display:flex;align-items:center;gap:7px;cursor:pointer;padding:3px 6px;border-radius:6px;font-size:.82rem}.reversi__log-item:hover{background:var(--board-face)}.reversi__log-item.is-active{background:var(--board-face);box-shadow:inset 0 0 0 1px var(--accent)}.reversi__log-num{color:var(--color-text-muted);font-size:.7rem;min-width:1.6ch;text-align:right}.reversi__log .reversi__pip{width:12px;height:12px}.reversi__log-sq{font-variant-numeric:tabular-nums;letter-spacing:.02em}.reversi__board.is-review{outline-color:var(--accent)}@media(max-width:880px){.reversi-page .tool-header-block{max-width:none}.reversi__stage{grid-template-columns:1fr;gap:18px;justify-items:center}.reversi__board-wrap{width:100%;max-width:440px}.reversi__side{width:100%;max-width:440px;display:flex;flex-direction:column}.reversi__status{order:1}.reversi__score{order:2}.reversi__buttons{order:3}.reversi__share{order:4}.reversi__setting{order:5}.reversi__hintrow{order:6}.reversi__log-wrap{order:7}}@media(prefers-reduced-motion:reduce){.reversi__disc.is-fresh,.reversi__disc.is-flip,.reversi__result{animation:none}.reversi__disc.is-fresh:before{display:none}.reversi__spin{animation:none}}
