:root{color-scheme:light;--paper: #f4efe5;--paper-deep: #e4d8bf;--ink: #1d1712;--muted: #645646;--accent: #a53824;--accent-soft: rgba(165, 56, 36, .12);--card: rgba(255, 251, 243, .82);--line: rgba(50, 36, 22, .14);--shadow: 0 24px 60px rgba(40, 21, 2, .12);font-family:PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif;background:radial-gradient(circle at top left,rgba(165,56,36,.08),transparent 30%),linear-gradient(180deg,#f6f0e6,#efe3ca);color:var(--ink)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:transparent}button{font:inherit}.shell{width:min(1120px,calc(100vw - 32px));margin:0 auto;padding:32px 0 48px}.hero{display:grid;gap:20px;background:linear-gradient(145deg,#fffcf6f2,#f9eed6e6);border:1px solid rgba(86,57,28,.14);border-radius:28px;box-shadow:var(--shadow);padding:32px}.eyebrow{margin:0 0 12px;color:var(--accent);font-size:.85rem;letter-spacing:.18em;text-transform:uppercase}.hero h1{margin:0;font-family:STKaiti,Kaiti SC,serif;font-size:clamp(2.2rem,5vw,4.2rem);line-height:1.1}.intro{max-width:38rem;color:var(--muted);font-size:1.05rem;line-height:1.7}.mode-switch{display:flex;flex-wrap:wrap;gap:12px}.mode-switch button{min-width:140px;min-height:48px;padding:12px 18px;border-radius:999px;border:1px solid rgba(79,50,26,.2);background:var(--card);color:var(--ink);cursor:pointer}.mode-switch button.is-selected,.character-chip.is-active{border-color:transparent;background:linear-gradient(135deg,#a23f28,#ba5834);color:#fff8ef;box-shadow:0 14px 24px #98361d3d}.layout{display:flex;flex-direction:column;gap:20px;margin-top:22px}.card-block,.panel{background:#fffbf3d1;border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow);padding:24px}.section-heading,.panel-header{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px;margin-bottom:18px}.section-kicker,.panel-kicker{margin:0 0 8px;color:var(--accent);font-size:.82rem;letter-spacing:.16em;text-transform:uppercase}.section-heading h2,.panel-header h2{margin:0;font-family:STKaiti,Kaiti SC,serif;font-size:clamp(1.6rem,4vw,2.4rem)}.panel-copy{margin:0;max-width:30rem;color:var(--muted);line-height:1.7}.character-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:10px}.character-chip{min-height:56px;border:1px solid rgba(79,50,26,.18);border-radius:18px;background:#fffaf1f5;color:var(--ink);cursor:pointer;font-family:STKaiti,Kaiti SC,serif;font-size:1.45rem}.practice-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.study-panel .stage-grid{display:grid;gap:16px;grid-auto-flow:column;grid-auto-columns:minmax(180px,1fr);overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}.stage-card{display:grid;gap:12px;min-width:0;padding:16px;border-radius:22px;border:1px solid rgba(67,48,27,.12);background:linear-gradient(180deg,#fff9,#faf0dcbf)}.practice-card{display:grid;gap:12px}.stage-image-wrap{aspect-ratio:1;display:grid;place-items:center;border-radius:20px;background:linear-gradient(180deg,#fff6,#c4a2711f),repeating-linear-gradient(0deg,rgba(128,93,48,.04) 0,rgba(128,93,48,.04) 1px,transparent 1px,transparent 16px);border:1px solid rgba(108,75,32,.1);overflow:hidden}.stage-image{width:100%;height:100%;object-fit:contain}.stage-empty{display:grid;place-items:center;width:100%;height:100%;font-family:STKaiti,Kaiti SC,serif;font-size:clamp(2.4rem,7vw,4.6rem);color:#5d462d9e;background:radial-gradient(circle at center,rgba(213,183,135,.25),transparent 58%),linear-gradient(180deg,#ffffff4d,#d7bc9429)}.stage-meta h3{margin:0;font-family:STKaiti,Kaiti SC,serif;font-size:1.3rem}.stage-meta p{margin:4px 0 0;color:var(--muted);font-size:.92rem}.practice-toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}.label-pill,.practice-actions button,.slot-button{min-height:48px;border-radius:16px;border:1px solid rgba(79,50,26,.18);background:#fffaf1f5;color:var(--ink);cursor:pointer;padding:12px 16px}.label-pill{min-width:104px}.label-pill.is-selected{border-color:transparent;background:linear-gradient(135deg,#2d5f61,#4f8b83);color:#f5fffb}.label-pill.is-used{opacity:.4;cursor:not-allowed}.slot-button{width:100%;font-family:STKaiti,Kaiti SC,serif;font-size:1.08rem}.slot-placeholder{color:var(--muted);font-size:.95rem}.slot-tag{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:2px 10px;border-radius:999px;background:#a538241a}.slot-button.is-correct,.slot-tag.is-correct{background:#2e774724;border-color:#2e774747;color:#1f5c33}.slot-button.is-wrong,.slot-tag.is-wrong{background:#b640271f;border-color:#b640273d;color:#8f341f}.practice-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.practice-actions button{min-width:120px}.practice-feedback{margin:16px 0 0;min-height:1.6em;color:var(--muted);line-height:1.6}.dialog-backdrop{position:fixed;inset:0;display:grid;place-items:center;padding:24px;background:#1d17125c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.feedback-dialog{width:min(420px,100%);padding:28px;border-radius:28px;border:1px solid rgba(86,57,28,.14);background:linear-gradient(180deg,#fffcf6fa,#f9eed6f5);box-shadow:0 28px 80px #28150238;text-align:center}.feedback-dialog h2{margin:0;font-family:STKaiti,Kaiti SC,serif;font-size:clamp(1.9rem,5vw,2.6rem)}.feedback-dialog p{margin:14px 0 22px;color:var(--muted);line-height:1.7}.feedback-dialog button{min-width:132px;min-height:48px;padding:12px 18px;border:none;border-radius:999px;background:linear-gradient(135deg,#2f7a43,#4c9960);color:#f5fff8;cursor:pointer;box-shadow:0 14px 26px #2f7a433d}.feedback-dialog.is-warning{background:linear-gradient(180deg,#fff9f2fa,#fce7d5f5)}.feedback-dialog.is-warning button{background:linear-gradient(135deg,#b34b2f,#cf6b42);box-shadow:0 14px 26px #b34b2f3d}@media(min-width:900px){.hero{grid-template-columns:minmax(0,1fr) auto;align-items:end}}@media(max-width:720px){.study-panel .stage-grid{grid-auto-columns:minmax(150px,76vw)}}@media(prefers-reduced-motion:no-preference){.stage-card,.character-chip,.mode-switch button{transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.stage-card:hover,.character-chip:hover,.mode-switch button:hover{transform:translateY(-2px)}}
