:root{--paper:#f3f0e8;--sheet:#fcfbf7;--ink:#182a41;--blue:#315d88;--blue-soft:#dce6ed;--red:#c6563d;--green:#2f765d;--pink:#f7e2dd;--muted:#697582;--line:#c9c8c1;--line-dark:#8894a0;--serif:"Iowan Old Style","Noto Serif CJK SC","Songti SC","STSong",Georgia,serif;--sans:"Aptos","Microsoft YaHei UI","Microsoft YaHei",Arial,sans-serif;--ease:cubic-bezier(.16,1,.3,1)}*{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth}body{min-height:100dvh;margin:0;background-color:var(--paper);background-image:linear-gradient(rgba(24,42,65,.025) 1px,transparent 1px);background-size:100% 28px;color:var(--ink);font:16px/1.6 var(--sans);letter-spacing:.01em}::selection{background:var(--blue-soft);color:var(--ink)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{border:3px solid var(--paper);border-radius:10px;background:var(--line-dark)}header{display:flex;align-items:center;justify-content:space-between;max-width:1040px;height:82px;margin:auto;padding:0 28px;border-bottom:1px solid var(--line-dark)}header>span{color:var(--muted);font-size:12px;letter-spacing:.12em}.brand{display:inline-flex;align-items:center;gap:12px;color:var(--ink);font:700 21px/1 var(--serif);letter-spacing:.03em;text-decoration:none}.brand i{width:14px;height:22px;border:1px solid var(--red);border-radius:99px;background:var(--red);box-shadow:7px 0 0 var(--paper),8px 0 0 var(--red);transform:rotate(30deg)}.brand span{color:inherit}.page{max-width:820px;margin:auto;padding:64px 28px 118px}.page>h1{max-width:10ch;margin:0 0 18px;font:600 clamp(42px,8vw,72px)/1.08 var(--serif);letter-spacing:-.04em;text-wrap:balance}h2{margin:46px 0 14px;font:600 25px/1.25 var(--serif);letter-spacing:-.02em}.intro{max-width:39ch;margin:0 0 38px;color:var(--muted);font-size:17px}.card,.stat-card{position:relative;background:var(--sheet)}.card{padding:30px;border-top:2px solid var(--ink);border-bottom:1px solid var(--line)}label{display:block;margin-bottom:10px;font-weight:700}input[type=file]{display:block;width:100%;min-height:92px;padding:18px;border:1px dashed var(--line-dark);background:#f6f5f0;color:var(--muted);font:inherit}input[type=file]::file-selector-button{margin-right:14px;padding:8px 11px;border:1px solid var(--ink);border-radius:0;background:var(--sheet);color:var(--ink);font:700 14px var(--sans)}button{min-height:52px;margin-top:22px;padding:12px 22px;border:1px solid var(--ink);border-radius:0;background:var(--ink);box-shadow:3px 3px 0 var(--red);color:var(--sheet);cursor:pointer;font:700 16px var(--sans);letter-spacing:.04em;touch-action:manipulation;transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s var(--ease)}button:hover{background:var(--blue);box-shadow:5px 5px 0 var(--red);transform:translate(-2px,-2px)}button:active{box-shadow:1px 1px 0 var(--red);transform:translate(2px,2px)}button:disabled{border-color:var(--line-dark);background:#a7aaab;box-shadow:none;cursor:not-allowed;transform:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--red);outline-offset:4px}.status{min-height:24px;margin:14px 0 0;color:var(--muted);font-size:14px}.table-wrap{overflow:auto;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);background:var(--sheet)}table{width:100%;min-width:440px;border-collapse:collapse}th,td{padding:14px;border-bottom:1px solid var(--line);text-align:left}th{font-size:12px;letter-spacing:.08em}tr:last-child td{border-bottom:0}td input{width:100%;min-height:40px;padding:8px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);font:inherit}.save{min-height:38px;margin:0;padding:7px 11px;box-shadow:2px 2px 0 var(--red);font-size:13px}.challenge{max-width:920px}.challenge:before{position:absolute;top:140px;left:max(28px,calc(50% - 390px));width:84px;height:1px;background:var(--red);content:""}.challenge-head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;padding-left:108px}.challenge-head h1{max-width:none;margin:0;font-size:clamp(28px,4vw,40px);letter-spacing:-.03em}.score{padding:7px 0;border-bottom:1px solid var(--red);color:var(--red);font:700 14px var(--sans);white-space:nowrap}.progress{display:grid;grid-template-columns:repeat(20,1fr);gap:5px;margin:32px 0 0;padding:0 0 24px;border-bottom:1px solid var(--line-dark)}.progress i{height:6px;background:#d0d0ca}.progress i.done{background:var(--red)}.loading{margin-top:42px;padding:36px 30px;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);background:transparent;color:var(--muted);text-align:center}.prompt{margin:84px 0 12px;color:var(--muted);font-size:14px;letter-spacing:.1em;text-align:center}.word{margin:0 0 56px;color:var(--ink);font:600 clamp(68px,16vw,132px)/.95 var(--serif);letter-spacing:-.07em;text-align:center;animation:word-arrive .48s var(--ease) both}@keyframes word-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.choices{display:grid;gap:10px;max-width:640px;margin:auto;counter-reset:choice}.choice{display:grid;grid-template-columns:50px 1fr;align-items:center;gap:14px;width:100%;min-height:72px;margin:0;padding:13px 18px;border:1px solid var(--line-dark);background:var(--sheet);box-shadow:none;color:var(--ink);font-size:clamp(22px,5vw,28px);font-weight:500;text-align:left}.choice:before{counter-increment:choice;content:counter(choice,upper-alpha);color:var(--red);font:700 14px var(--sans);letter-spacing:.1em}.choice:hover{border-color:var(--ink);background:#edf1f3;box-shadow:none;transform:none}.choice.correct{border:2px solid var(--green);background:#e0ebe5;box-shadow:none;color:#174b3a}.choice.wrong{border:2px solid var(--red);background:var(--pink);box-shadow:none;color:#762d29}.choice:disabled{opacity:1}.complete{max-width:580px;margin:58px auto 0;padding:30px;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);background:transparent;text-align:center}.complete h2{margin-top:0}.stat-card{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:10px;margin:32px 0;padding:24px 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--line)}.stat-card strong{color:var(--red);font:600 72px/.85 var(--serif);letter-spacing:-.06em}.stat-card span{color:var(--muted);font-size:14px}.stat-card b{color:var(--ink)}.weekdays,.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}.weekdays{margin-bottom:10px;color:var(--muted);font-size:12px}.day{display:grid;min-height:44px;place-items:center;border:1px solid transparent;font-weight:600}.day.checked{border-color:var(--red);color:var(--red)}.day.checked:after{margin-left:2px;content:"✓";font-size:11px}.rank-list{margin:0;padding:0;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);background:var(--sheet);list-style-position:inside}.rank-list li{padding:16px 10px;border-bottom:1px solid var(--line)}.rank-list li::marker{color:var(--red);font-weight:800}.rank-list li:last-child{border-bottom:0}.rank-list small{margin-left:8px;color:var(--muted)}.skip{position:absolute;left:-9999px}.skip:focus{z-index:5;top:8px;left:8px;padding:8px;background:var(--sheet)}nav{position:fixed;z-index:2;right:0;bottom:0;left:0;display:flex;justify-content:center;gap:0;padding:0 max(12px,calc((100% - 820px)/2));border-top:1px solid var(--line-dark);background:rgba(243,240,232,.97)}nav a{display:flex;flex:1;align-items:center;justify-content:center;gap:7px;min-height:56px;color:var(--muted);text-decoration:none;touch-action:manipulation}nav b{font:600 15px var(--serif)}nav small{font-size:11px;letter-spacing:.06em}nav a.active{color:var(--red)}nav a.active:before{width:7px;height:7px;background:var(--red);content:"";transform:rotate(45deg)}@media (min-width:760px){.page{padding-top:82px;padding-bottom:42px}nav{position:static;max-width:820px;margin:auto;border-top:0;background:transparent}nav a{justify-content:flex-start;flex:0 1 auto;padding:0 18px;min-height:54px}.challenge-head{padding-left:132px}}@media (max-width:520px){header{height:70px;padding:0 18px}.brand{font-size:19px}.page{padding:48px 18px 108px}.page>h1{font-size:44px}.challenge:before{top:105px;left:18px;width:50px}.challenge-head{padding-left:64px}.challenge-head h1{font-size:30px}.score{font-size:13px}.word{margin-bottom:42px}.choice{grid-template-columns:36px 1fr;min-height:68px;padding:12px 14px}.stat-card strong{font-size:60px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
