:root{--bg:#fbf8f3;--paper:#fffdf9;--fg:#2b2622;--muted:#7a7068;--line:#e7ded3;--accent:#e2725b;--accent-soft:#fbe3dc;--mate:#2f8a83;--mate-soft:#d9efec;--gold:#c99a2e;--gold-soft:#f7ecd0;--miss:#9a8f86;--c-red:#df5a4e;--c-blue:#3b7bc8;--c-yellow:#e6b42c;--c-green:#46a05a;--c-gray:#b7afa6;--radius:14px;--serif:"Gowun Batang", "Nanum Myeongjo", serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif;line-height:1.5}main{max-width:480px;min-height:100dvh;margin:0 auto;padding:20px 16px 48px}h1,h2,h3{margin:0;line-height:1.3}p{margin:0}a{color:inherit}button{font:inherit;color:inherit}.brand{justify-content:space-between;align-items:baseline;margin-bottom:18px;display:flex}.brand .logo{font-family:var(--serif);letter-spacing:-.5px;font-size:22px;font-weight:700}.brand .logo b{color:var(--accent)}.brand .who{color:var(--muted);font-size:13px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;padding:18px 16px}.stack>*+*{margin-top:12px}.muted{color:var(--muted)}.small{font-size:13px}.center{text-align:center}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.btn{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:6px;min-height:48px;padding:0 18px;font-weight:600;text-decoration:none;transition:transform 80ms,background .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn[disabled]{opacity:.45;cursor:default;transform:none}.btn.primary{background:var(--fg);color:#fff;border-color:var(--fg)}.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.ghost{background:0 0}.btn.block{width:100%}.btn.sm{border-radius:10px;min-height:36px;padding:0 12px;font-size:14px}input[type=text],input[type=password]{border:1px solid var(--line);width:100%;min-height:48px;font:inherit;background:#fff;border-radius:12px;padding:0 14px;font-size:16px}input:focus-visible,.btn:focus-visible,.opt:focus-visible{outline:3px solid var(--accent-soft);outline-offset:1px}.check{align-items:flex-start;gap:10px;font-size:14px;display:flex}.check input{width:18px;height:18px;accent-color:var(--accent);margin-top:3px}.error{color:#b3261e;font-size:14px}.notice{background:var(--mate-soft);color:#1f5e59;border-radius:12px;padding:10px 12px;font-size:14px}.notice.warm{background:var(--accent-soft);color:#8a3b2b}.hero{padding:28px 4px 22px}.hero h1{font-family:var(--serif);letter-spacing:-1px;font-size:30px}.hero h1 em{color:var(--accent);font-style:normal}.hero p{color:var(--muted);margin-top:10px}.how{counter-reset:how;margin:0;padding:0;list-style:none}.how li{counter-increment:how;gap:10px;padding:4px 0;font-size:14px;display:flex}.how li:before{content:counter(how);background:var(--fg);color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;margin-top:1px;font-size:12px;display:grid}.linkbox{border:1px dashed var(--line);word-break:break-all;background:#fff;border-radius:12px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.tabs{background:#f1ebe3;border-radius:12px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:14px;padding:4px;display:grid}.tabs button{cursor:pointer;min-height:40px;color:var(--muted);background:0 0;border:0;border-radius:9px;font-weight:600}.tabs button[aria-selected=true]{background:var(--paper);color:var(--fg);box-shadow:0 1px 2px #0000000f}.days{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:14px;display:grid}.day{aspect-ratio:1;border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:10px;padding:0;font-size:13px;font-weight:700;position:relative}.day[disabled]{color:#cbc2b8;cursor:default;background:0 0;border-style:dashed}.day[aria-current=true]{border-color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}.day.opened{background:var(--gold-soft);border-color:#e8d39b}.day .dots{justify-content:center;gap:3px;display:flex;position:absolute;bottom:4px;left:0;right:0}.day .dot{background:#e3dbd1;border-radius:50%;width:5px;height:5px}.day .dot.me{background:var(--accent)}.day .dot.mate{background:var(--mate)}.status{background:var(--paper);border:1px solid var(--line);border-radius:12px;align-items:center;gap:10px;margin-bottom:14px;padding:12px 14px;font-size:14px;display:flex}.avatar{color:#fff;background:var(--mate);border-radius:50%;flex:none;place-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:grid}.avatar.me{background:var(--accent)}.pill{color:var(--muted);white-space:nowrap;background:#f1ebe3;border-radius:99px;padding:2px 8px;font-size:12px}.pill.done{background:var(--mate-soft);color:#1f5e59}.puzzle-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.puzzle-head .tag{background:var(--fg);color:#fff;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700}.puzzle-head .tag.p2{background:var(--mate)}.prompt{margin-bottom:14px;font-size:15px}.seq{font-family:var(--serif);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin:6px 0 16px;font-size:28px;font-weight:700;display:flex}.seq .qmark{color:var(--accent)}.seq .arrow{background:#f4efe8;border-radius:10px;place-items:center;width:40px;height:40px;font-size:26px;display:grid}.seq .arrow.qmark{background:var(--accent-soft)}.opts{grid-template-columns:1fr 1fr;gap:8px;display:grid}.opts.one{grid-template-columns:1fr}.opt{border:1.5px solid var(--line);cursor:pointer;text-align:center;background:#fff;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:64px;padding:10px;display:flex}.opt .big{font-family:var(--serif);font-size:24px;font-weight:700;line-height:1.1}.opt .sub{color:var(--muted);font-size:12px}.opt.text{text-align:left;align-items:flex-start;min-height:52px;font-size:15px}.opt[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.opt[disabled]{cursor:default}.opt.chosen-mine{border-color:var(--accent);background:var(--accent-soft)}.opt.chosen-mate{border-color:var(--mate);background:var(--mate-soft)}.opt.is-answer{box-shadow:inset 0 0 0 2px var(--gold)}.tiles{grid-template-columns:repeat(8,1fr);gap:4px;margin:4px 0 16px;display:grid}.tile{aspect-ratio:1;background:#f4efe8;border:1px solid #0000;border-radius:8px;place-items:center;display:grid;overflow:hidden}.tile.blank{background:0 0;border:1.5px dashed #cfc5ba}.tile.blank.lit{border-color:var(--gold);background:var(--gold-soft)}.tile svg{width:86%;height:86%}.tile.colored{position:relative}.tile.colored:after{content:"?";color:#ffffffd9;font-size:14px;font-weight:800;position:absolute}.pair-mini{gap:4px;display:flex}.pair-mini .tile{width:40px}.waiting{text-align:center;padding:22px 8px}.waiting .pulse{background:var(--mate-soft);border-radius:50%;place-items:center;width:56px;height:56px;margin:0 auto 12px;font-size:24px;animation:1.8s ease-in-out infinite pulse;display:grid}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.summary{font-family:var(--serif);text-align:center;padding:6px 4px 2px;font-size:18px;line-height:1.5}.reveal-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ans{border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px;animation:.5s both rise}.ans+.ans{animation-delay:.15s}.ans .who{align-items:center;gap:6px;margin-bottom:6px;font-size:13px;font-weight:700;display:flex}.ans .who i{background:var(--accent);border-radius:50%;width:8px;height:8px}.ans.mate .who i{background:var(--mate)}.ans .val{font-family:var(--serif);word-break:keep-all;font-size:20px;font-weight:700}.ans .val.long{font-size:15px;line-height:1.4}.ans .verdict{margin-top:4px;font-size:12px}.ans .verdict.ok{color:#2f7d4a}.ans .verdict.no{color:var(--miss)}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.grid5{grid-template-columns:24px repeat(5,1fr);gap:4px;font-size:15px;display:grid}.grid5 .h{color:var(--muted);place-items:center;font-size:12px;font-weight:700;display:grid}.grid5 .c{aspect-ratio:1;font-family:var(--serif);background:#f4efe8;border-radius:8px;place-items:center;font-weight:700;display:grid}.grid5 .c.r{background:var(--accent-soft)}.grid5 .c.k{background:var(--mate-soft)}.grid5 .c.x{background:var(--fg);color:#fff;transform:scale(1.06)}.grid5 .c.ans{box-shadow:inset 0 0 0 2px var(--gold)}.piece-glimpse{border-top:1px dashed var(--line);margin-top:12px;padding-top:12px}.board{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.board .cell{aspect-ratio:3/4;border:1px solid var(--line);color:#c4b9ad;perspective:600px;background:repeating-linear-gradient(45deg,#f3ede5,#f3ede5 6px,#efe8df 6px 12px);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.board .cell .ch{font-family:var(--serif);color:var(--fg);font-size:34px;font-weight:700;line-height:1}.board .cell .d{color:var(--muted);margin-top:6px;font-size:11px;font-weight:600}.board .cell.open{background:#fff;border-color:#e8d39b}.board .cell.open.gold{background:linear-gradient(160deg, #fff8e6, var(--gold-soft))}.board .cell.open.gold .ch{color:#8a6514}.board .cell.fresh{animation:.8s cubic-bezier(.2,.8,.2,1) both flip}@keyframes flip{0%{opacity:0;transform:rotateY(90deg)scale(.9)}60%{opacity:1;transform:rotateY(-10deg)scale(1.04)}to{transform:none}}.board .cell.last{grid-column:span 1}.sentence{font-family:var(--serif);letter-spacing:6px;text-align:center;padding:8px 0;font-size:30px;font-weight:700}.legend{color:var(--muted);justify-content:center;gap:14px;margin-top:10px;font-size:12px;display:flex}.legend span:before{content:"";vertical-align:-1px;background:#fff;border:1px solid #e8d39b;border-radius:3px;width:10px;height:10px;margin-right:5px;display:inline-block}.legend span.g:before{background:var(--gold-soft)}.q{margin-bottom:8px;font-size:15px;font-weight:600}.choice-row{gap:6px;display:flex}.choice-row .opt{flex:1;min-height:44px;font-size:14px}.dev{color:var(--muted);border:1px dashed #c9bfb4;border-radius:12px;margin-top:28px;padding:10px 12px;font-size:12px}.admin{max-width:1100px}.metrics{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin:14px 0 20px;display:grid}.metric{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.metric .v{font-size:28px;font-weight:800}.metric .v.pass{color:#2f7d4a}.metric .v.fail{color:#b3261e}.table-wrap{border:1px solid var(--line);background:var(--paper);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:8px 10px}th{background:#f4efe8;font-weight:700}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.stage-steps{gap:6px;margin:0 0 12px;padding:0;list-style:none;display:flex}.stage-steps li{text-align:center;border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:8px;flex:1;padding:6px 0;font-size:12px;font-weight:700}.stage-steps li.done{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent)}.stage-steps li.now{border-color:var(--fg);color:var(--fg)}.stage-block{border-top:1px solid var(--line);padding-top:12px}.stage-block:first-of-type{border-top:0;padding-top:0}.stage-block .stage-title{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.stage-block .stage-title .final{color:var(--gold)}.linklike{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.mylink{border-style:dashed}
