:root{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif;color:#182339;background:#fafaf9;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #3f7cdd;outline-offset:4px}a{color:inherit;text-decoration:none}.app{max-width:1260px;margin:auto;padding:28px 32px 40px}.header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:25px}.back{font-size:14px;color:#5a6474}.title{display:flex;align-items:center;gap:15px;margin-top:16px}.title h1{font-size:36px;letter-spacing:-.06em;margin:0}.title>span{font-size:14px;border:1px solid #d8dde5;border-radius:30px;padding:6px 11px}.title b{font-size:12px;color:#8b919a;margin:0 5px}.intro{font-size:17px;color:#536077;margin:8px 0 0}.other{font-size:14px;color:#526078}.layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}.game{min-width:0}.scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:12px}.player{display:flex;align-items:center;gap:10px;border:1px solid #e0e4e9;background:#fff;padding:14px 16px;border-radius:12px}.player i{width:12px;height:12px;border-radius:50%;background:#2869d2;box-shadow:0 3px 4px #2869d233}.player.red i{background:#dd3e40;box-shadow:0 3px 4px #dd3e4033}.player strong{display:block;font-size:15px}.player small{display:block;font-size:13px;color:#657083;margin-top:4px}.player>span{margin-left:auto;white-space:nowrap;font-size:13px;color:#697487}.player b{font-size:21px;font-weight:650;color:#26354c;margin-left:3px}.boardStage{overflow:hidden;border-radius:17px;background:#eeeae4;border:1px solid #e1ded7}.viewbar{padding:14px 18px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;color:#6a6d71}.viewbar button{background:#ffffffb5;border:1px solid #d3d2ce;border-radius:20px;padding:7px 12px;font-size:13px;color:#3e454f}#board{display:block;width:100%;height:auto;touch-action:manipulation}.boardCaption{display:flex;justify-content:center;gap:24px;padding:0 12px 16px;font-size:13px}.blueText{color:#235fc0}.redText{color:#bd3338}.status{display:flex;align-items:center;justify-content:center;gap:8px;text-align:center;font-size:19px;margin:20px 0 5px;min-height:29px}.hint{font-size:14px;line-height:1.6;text-align:center;color:#626e80;margin:5px 0 17px;min-height:23px}.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.mode{background:#fff;color:#546176;border:1px solid #d9dfe8;border-radius:10px;min-height:50px;font-weight:600;font-size:15px}.mode span{margin-right:6px;color:#7c8899}.mode.active{background:#182339;color:#fff;border-color:#182339}.mode.active span{color:#a9c8ff}.placement{display:flex;align-items:center;gap:12px;margin-top:12px;background:#f0f4fa;border-radius:12px;padding:12px 14px}.placement p{font-size:14px;line-height:1.5;flex:1;margin:0}.primary{background:#182339!important;color:#fff!important;border:1px solid #182339!important;font-weight:650;border-radius:9px;padding:13px 17px;white-space:nowrap}.panel{background:#fff;border:1px solid #e0e4e9;border-radius:15px;padding:22px;margin-bottom:16px}.panelTitle{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:17px;margin-bottom:22px}.tag{font-size:11px;letter-spacing:.1em;color:#69768b;border:1px solid #d9e0e9;padding:4px 7px;border-radius:4px}label{display:block;font-size:14px;font-weight:600;margin:17px 0 8px}select{width:100%;border:1px solid #ccd4e0;background:#fff;color:#253249;padding:12px 7px;border-radius:7px;font-size:14px;min-height:44px}.settingNote{font-size:12px;color:#6a7586;line-height:1.6;margin:10px 0 20px}.secondaryActions{display:grid;gap:9px}.secondaryActions button{border:1px solid #d9dfe8;background:#fff;border-radius:8px;padding:12px 6px;color:#34445b;font-size:14px}.secondaryActions button:last-child{color:#775253;background:#faf8f7;border-color:#e5dcd7}.rules{font-size:14px;line-height:1.7;padding:19px 21px}.rules summary{cursor:pointer;font-weight:700;font-size:16px}.rules ol{padding-left:19px;margin:17px 0 0}.rules li{padding-left:3px;margin:0 0 13px;color:#667183}.rules li:last-child{margin-bottom:0}.rules strong{color:#334157;font-weight:600}.credit{font-size:12px;line-height:1.8;color:#7b8491;padding:0 8px}dialog{border:1px solid #e1e6ee;border-radius:20px;padding:34px;max-width:420px;width:calc(100% - 36px);text-align:center;color:#182339;box-shadow:0 24px 100px #12203b33}dialog::backdrop{background:#18233977;backdrop-filter:blur(4px)}dialog h2{font-size:25px;margin:14px 0 10px}dialog p{font-size:16px;line-height:1.8;color:#606c80}.dialogMark{font-size:42px;color:#2d70d3}.dialogActions{display:grid;gap:10px;margin-top:25px}.dialogActions button{padding:13px;border:1px solid #dce2ea;background:#f6f7f9;border-radius:9px;color:#667184}#hourglass{display:inline-block;animation:thinking 1.6s ease-in-out infinite}[hidden]{display:none!important}@keyframes thinking{0%,30%{transform:rotate(0)}70%,100%{transform:rotate(180deg)}}.cellHit,.wallHit{cursor:pointer;outline:none}.cellHit:focus-visible .focusOutline,.wallHit:focus-visible .focusOutline{stroke:#72a6ff;stroke-width:3}.cellHit:hover .tileFace{fill:#edf4ff}.wallHit:hover .wallDot{fill:#5490ea;opacity:1}@media(prefers-reduced-motion:reduce){#hourglass{animation:none}}@media(max-width:950px){.layout{grid-template-columns:minmax(0,1fr) 260px;gap:18px}.app{padding:24px 20px}.panel{padding:18px}.player{padding:12px 10px;gap:7px}.player small{font-size:12px}}@media(max-width:760px){.layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:14px}.credit{grid-column:1/-1}.header{margin-bottom:22px}.boardStage{max-width:700px;margin:auto}.panel{margin-bottom:0}.placement{flex-direction:column;align-items:stretch}.placement p{text-align:center}}@media(max-width:500px){.app{padding:19px 12px 28px}.title h1{font-size:31px}.title{gap:12px}.intro{font-size:15px}.other{font-size:12px;align-self:flex-start;margin-top:3px}.scoreboard{gap:8px}.player strong{font-size:14px}.player b{font-size:19px}.player small{font-size:11px}.player i{width:10px;height:10px;flex-shrink:0}.sidebar{grid-template-columns:1fr}.status{margin-top:17px;font-size:18px}.hint{font-size:13px}.mode{font-size:14px;min-height:48px}.mode span{margin-right:3px}.viewbar{padding:12px 12px 0;font-size:12px}.boardCaption{font-size:12px;gap:20px;padding-bottom:13px}.rules{font-size:14px}.credit{margin-bottom:0}.header{gap:8px}}
/* Othello: dark green playing surface, traditional black and ivory discs. */
.player.black i{background:#242c2e;box-shadow:0 2px 5px #1116}.player.white i{background:#faf9f2;border:1px solid #9ca59f;box-shadow:0 2px 5px #1112}.player.current{border-color:#658775;box-shadow:inset 0 0 0 1px #658775}.cellHit:hover .tileFace{fill:#417b61}.cellHit:focus-visible .focusOutline{stroke:#f3dba2;stroke-width:2.5}.scoreStrip{display:flex;height:5px;overflow:hidden;background:#e0e5e1;border-radius:5px;margin:0 4px 13px}.scoreStrip span{transition:width .4s}.scoreBlack{background:#27312e}.scoreWhite{background:#d8d4c6}.boardCaption{color:#5b695e}.legendDot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#b9904e;margin-right:6px}.gameControls{display:flex;align-items:center;justify-content:center;gap:10px;border-top:1px solid #e1e6e1;padding-top:17px;margin-top:17px}.gameControls span{font-size:14px;color:#6b756e}.gameControls button{border:1px solid #d2ddd5;background:#fff;color:#284939;padding:10px 14px;border-radius:8px;font-size:14px}.status{font-size:18px}.hint{min-height:24px;color:#53685d}.historyNote{font-size:13px;color:#6f7b73;line-height:1.6;min-height:21px;text-align:center;margin:10px 0}.panelTitle .tag{color:#39624a}.dialogMark{color:#315d47}.primary{background:#203c2f!important;border-color:#203c2f!important}.viewbar button{color:#30513e}.flipOld,.flipNew,.placed{transform-box:fill-box;transform-origin:center}.flipOld{animation:oldFace .48s ease-in both}.flipNew{animation:newFace .48s ease-out both}.placed{animation:placeDisc .24s ease-out both}@keyframes oldFace{0%{transform:scaleY(1);opacity:1}48%{transform:scaleY(.02);opacity:1}49%,100%{transform:scaleY(.02);opacity:0}}@keyframes newFace{0%,48%{transform:scaleY(.02);opacity:0}49%{transform:scaleY(.02);opacity:1}100%{transform:scaleY(1);opacity:1}}@keyframes placeDisc{from{transform:translateY(-6px);opacity:0}to{transform:translateY(0);opacity:1}}@media(prefers-reduced-motion:reduce){.flipOld{display:none}.flipNew,.placed{animation:none}.scoreStrip span{transition:none}}@media(max-width:500px){.status{font-size:17px}.gameControls{flex-wrap:wrap}.player small{font-size:12px}}
