*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:'Inter','Noto Sans SC','PingFang SC','Segoe UI',system-ui,sans-serif}
body{background:#F5FAFF;color:#0F172A;display:flex;align-items:center;justify-content:center}
#app{width:min(1100px,95vw);margin:24px auto}
.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:8px}
.topbar h1{font-weight:800;font-size:24px;margin:0;color:#0F172A}
.nav .btn{margin-left:8px}
.screen{display:none;gap:16px}
.screen.active{display:block}
.card{background:#FFFFFF;border:1px solid #E3EAF5;border-radius:16px;padding:16px;box-shadow:0 6px 16px rgba(0,0,0,.08)}
.card.hero h2{margin-top:0}
.center{text-align:center}
.row{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0}
.btn{background:#FFFFFF;border:1px solid #CFE1F7;color:#0F172A;border-radius:14px;padding:10px 16px;cursor:pointer;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}
.btn:hover{filter:brightness(1.04)}
.btn:active{transform:scale(.98)}
.btn.primary{background:#00A3FF;border-color:#00A3FF;color:#fff}
.btn.ghost{background:transparent;border-color:#CFE1F7;color:#0F172A}
.hud{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:16px}
.tile{background:#FFFFFF;border:1px solid #E3EAF5;border-radius:12px;padding:10px;text-align:center;display:flex;flex-direction:column;gap:4px}
.tile span{font-weight:800}
.tile-elapsed{background:#EAF5FF;border-color:#CFE1F7}
.tile-score{background:#F1FFE9;border-color:#CBEFC0}
.tile-acc{background:#FFF2E6;border-color:#FFD4A8}
.tile-streak{background:#F5E9FF;border-color:#DEC9FF}
.tile-completed{background:#FFE9F0;border-color:#FFC6D6}
.tile-total{background:#EFFFFA;border-color:#C7F2E9}
.tile-content{background:#FFFDE8;border-color:#FFF1A6}
.word-area{display:flex;align-items:center;justify-content:center;margin:10px 0 16px}
.word-card{background:#FFFFFF;border:2px solid #00A3FF;border-radius:16px;padding:18px 20px;min-height:140px;min-width:60%;text-align:center;box-shadow:0 6px 16px rgba(0,0,0,.08)}
.zh{font-size:28px;font-weight:800}
.py{font-size:16px;color:#40506B;margin-bottom:6px}
.input-area{display:flex;flex-direction:column;align-items:center;gap:8px}
#typing{width:100%;max-width:820px;padding:14px 16px;border-radius:14px;border:2px solid #CFE1F7;background:#FFFFFF;color:#0F172A;font-size:18px;outline:none}
#typing:focus{border-color:#00A3FF;box-shadow:0 0 0 2px rgba(0,163,255,.25)}
.feedback{max-width:820px;margin:0 auto;font-size:14px;color:#334155}
.fb-row{display:flex;gap:8px;margin-top:2px;align-items:baseline;flex-wrap:wrap}
.fb-label{min-width:86px;color:#64748B}
.mm-bad{background:#FFECEC;border:1px solid #FFC6D6;border-radius:4px;padding:0 3px}
.mm-rest{opacity:.85}
.fb-hint{margin-top:6px;font-size:13px;color:#7A2E2E}

/* Custom Modal */
.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(2,6,23,.35);z-index:50;padding:12px}
.modal.open{display:flex}
.modal .modal-box{background:#FFFFFF;color:#0F172A;border-radius:14px;padding:16px;max-width:720px;width:min(720px,95vw);box-shadow:0 6px 16px rgba(0,0,0,.18)}
.list{max-height:50vh;overflow:auto;border:1px solid #E3EAF5;border-radius:12px;padding:8px;margin-top:8px}
.list .item{padding:8px;border-bottom:1px solid #EEF2F7;cursor:pointer}
.list .item:last-child{border-bottom:none}
.list .item:hover{background:#F6FAFF}

.result-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:10px 0}
.result-grid .r{background:#FFFFFF;border:1px solid #E3EAF5;border-radius:12px;padding:10px;text-align:center}

/* Error overlay */
.err{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:1000}
.err[hidden]{display:none}
.err-box{background:#fff;border-radius:12px;padding:16px;max-width:90vw;box-shadow:0 6px 16px rgba(0,0,0,.3)}
.err-box pre{max-height:40vh;overflow:auto}
