@font-face{font-family:JianZiPu;src:url('/assets/JianZiPu.ttf') format('truetype');font-weight:400;font-style:normal;font-display:block}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f5f2e9;color:#292d28;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;font-size:15px;line-height:1.65}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Noto Serif CJK SC','Songti SC','STSong',Georgia,serif;font-weight:500}h1{font-size:46px;line-height:1.4;letter-spacing:.045em}h2{font-size:25px;line-height:1.5}h3{font-size:20px;line-height:1.5}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #9d3f32;outline-offset:4px}button{border:0}a,button{touch-action:manipulation}input,select,textarea{background:#fbf9f3;color:#292d28;border:1px solid #d7d2c5;border-radius:6px}select{max-width:100%;padding:8px 10px}textarea{display:block;width:100%;margin:14px 0;padding:16px;resize:vertical}.icon{width:21px;height:21px;flex-shrink:0}.skip{position:fixed;left:20px;top:-100px;background:#fff;padding:10px;z-index:99}.skip:focus{top:10px}.sidebar{width:226px;position:fixed;inset:0 auto 0 0;z-index:20;border-right:1px solid #dedace;background:#eeece2;padding:40px 25px;display:flex;flex-direction:column}.brand{display:flex;gap:16px;align-items:center;font-family:serif;font-size:26px;letter-spacing:.14em}.seal{background:#9d3f32;color:#f9f4e9;font-family:serif;font-size:20px;line-height:1.1;padding:8px 9px;border-radius:3px;letter-spacing:0;transform:rotate(-3deg)}.brand small{display:block;font:9px/2 sans-serif;letter-spacing:.16em;margin-top:6px}.sidebar-caption{font-size:12px;color:#73766a;margin:28px 0 34px;letter-spacing:.04em}.sidebar nav{display:grid;gap:9px}.nav-link{display:flex;align-items:center;gap:16px;padding:12px 15px;min-height:48px;color:#6d7066;border-radius:5px;position:relative}.nav-link.active{background:#e1e4d8;color:#354538;font-weight:600}.nav-link:hover{background:#e7e7dc}.nav-dot{width:5px;height:5px;border-radius:50%;background:#687457;margin-left:auto}.sidebar-bottom{margin-top:auto;padding-top:35px;display:grid;gap:17px;font-size:12px;color:#707367}.sidebar-bottom p{font:20px/1.9 serif;letter-spacing:.25em;color:#92917e;margin-bottom:15px}.sidebar-bottom a{display:flex;gap:9px;align-items:center}.sidebar-bottom .icon{width:17px}.local-label{font-size:10px;color:#7d8176;display:flex;gap:6px;align-items:center}.local-label i{width:5px;height:5px;border-radius:50%;background:#6a785e}.workspace{margin-left:226px}.topbar{height:83px;border-bottom:1px solid #e2dfd4;padding:0 46px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#76796d}.breadcrumb span{padding:0 15px;color:#b6b5aa}.top-actions{display:flex;align-items:center;gap:20px}.text-button{border:0;background:none;padding:8px 0;display:inline-flex;align-items:center;gap:7px;color:#715044;font-size:13px;min-height:40px}.text-button:hover,.quiet-link:hover{color:#9d3f32;text-decoration:underline;text-underline-offset:5px}.settings-link{display:flex}.mobile-brand,.mobile-nav{display:none}main{max-width:1220px;margin:auto;padding:44px 46px 64px;min-height:calc(100vh - 165px)}main:focus{outline:0}.page-heading{margin-bottom:32px}.eyebrow{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#777b69;display:block;margin-bottom:13px;font-weight:500}.lede{color:#74776c;max-width:700px;margin-top:14px;font-size:14px}.panel{background:#fbf9f3;border:1px solid #dedbcf;border-radius:9px}.panel-top{display:flex;justify-content:space-between;align-items:center;gap:14px}.small-label{color:#7d8071;font-size:11px;letter-spacing:.08em}.badge{font-size:10px;color:#59654f;border:1px solid #d1d9c7;background:#edf0e5;padding:3px 10px;border-radius:30px;white-space:nowrap}.home-grid{display:grid;grid-template-columns:1.17fr 1fr;gap:25px}.hero-notation{padding:23px 29px 19px;position:relative;background:radial-gradient(ellipse at 50% 55%,#eae6d94d,transparent 70%),#fbf9f3}.hero-symbol{height:199px;display:flex;align-items:center;justify-content:center;position:relative}.glyph{font-family:JianZiPu,sans-serif;font-size:110px;font-weight:400;font-feature-settings:'liga' 1,'calt' 1,'kern' 1;line-height:1.6;white-space:pre;display:inline-flex;min-width:1.08em;justify-content:center;letter-spacing:0;text-align:left}.glyph>span{display:inline-block;white-space:pre}.hero-symbol .glyph{font-size:125px}.vertical-note{position:absolute;right:0;top:44px;writing-mode:vertical-rl;letter-spacing:.4em;font:12px/2 serif;color:#aaa28e}.hero-caption{text-align:center;margin-top:2px}.hero-caption h2{font-size:22px;letter-spacing:.14em}.hero-caption p{font-size:11px;margin-top:7px;color:#828174}.quiet-link{display:inline-flex;align-items:center;gap:10px;font-size:12px;min-height:35px;color:#676e58}.hero-notation>.quiet-link{width:100%;border-top:1px solid #e7e3d8;justify-content:space-between;margin-top:22px;padding-top:13px}.quiet-link .icon{width:17px}.daily-stack{display:flex;flex-direction:column;gap:18px}.daily-card{background:#e7eadf;padding:26px 29px;border:1px solid #d9ddce;border-radius:9px;flex:1;position:relative}.daily-card .eyebrow{margin-bottom:18px}.daily-number{position:absolute;top:22px;right:25px;font:23px/1.4 serif;color:#79816b}.daily-number span{display:block;font:7px/2 sans-serif;letter-spacing:.1em;text-align:center}.daily-card h2{font-size:25px;max-width:85%;margin-top:33px}.daily-card>p{font-size:12px;color:#707763;margin:9px 0 23px}.button{border:1px solid transparent;min-height:44px;padding:11px 21px;display:inline-flex;justify-content:center;align-items:center;gap:14px;border-radius:5px;font-size:13px;font-weight:500;line-height:1.5;transition:background .15s,transform .15s}.button:active{transform:translateY(1px)}.primary{background:#9d3f32;color:#fff9ed}.primary:hover{background:#84372e}.secondary{background:transparent;border-color:#d4cebe;color:#5a614f}.secondary:hover{background:#eeeade}.daily-card .button{width:100%;justify-content:space-between}.caption{color:#848474;font-size:10px;line-height:1.7}.daily-card>.caption{display:block;margin-top:10px;text-align:center}.stats-strip{display:flex;border:1px solid #dedbcf;border-radius:7px;padding:15px 10px;background:#fbf9f3}.stats-strip>div{flex:1;text-align:center;border-right:1px solid #e2ded1}.stats-strip>div:last-child{border:0}.stats-strip strong{display:block;font:26px/1.2 Georgia,serif;color:#535e4b}.stats-strip small{font-size:13px;color:#9a9b8a}.stats-strip span{display:block;font-size:10px;color:#848474;margin-top:7px}.section{margin-top:36px}.section-title{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:17px}.section-title .eyebrow{margin-bottom:4px}.section-title h2{font-size:25px}.lesson-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.lesson-card{border:1px solid #dedbcf;background:#fbf9f3;border-radius:7px;padding:22px;display:flex;align-items:center;gap:22px;transition:background .15s}.lesson-card:hover{background:#efeee3}.lesson-number{font:26px/1.1 Georgia,serif;color:#8d9580}.lesson-card .icon{margin-left:auto;width:18px;color:#7f896e}.lesson-card p{font-size:12px;color:#7c8072;margin-top:6px}.lesson-card h3{font-size:22px;margin-top:5px}.lesson-card.compact{display:block;position:relative;padding:18px 20px;min-height:164px}.compact .lesson-number{display:block;font-size:21px;margin-bottom:20px}.compact .small-label{position:absolute;right:18px;top:18px;font-size:9px}.compact h3{font-size:17px}.compact p{font-size:10px;padding-right:10px;max-width:180px}.compact .icon{position:absolute;right:16px;bottom:20px;width:14px}.phrase-banner{display:flex;align-items:center;gap:22px;border-top:1px solid #dcd8cb;border-bottom:1px solid #dcd8cb;margin-top:28px;padding:22px 5px}.phrase-banner>.icon{margin-left:auto}.banner-icon{font:36px serif;color:#8b957d}.phrase-banner h3{font-size:20px;margin:4px 0}.phrase-banner p{font-size:11px;color:#898879}footer{font-size:10px;color:#969686;display:flex;justify-content:space-between;gap:15px;padding:25px 46px;border-top:1px solid #e0ddd1;max-width:1300px;margin:auto}.lesson-list{display:grid;gap:16px}.tip-box{display:flex;gap:15px;padding:23px;background:#e8ebdf;border-radius:6px;color:#68745e;font-size:12px;margin-top:26px}.back-link{margin-bottom:20px}.lesson-workspace{display:grid;grid-template-columns:1fr 1.05fr;gap:24px}.lesson-copy{padding:28px;display:flex;flex-direction:column;align-items:flex-start}.step-tabs{display:flex;gap:10px;width:100%;border-bottom:1px solid #e0dccf;padding-bottom:22px;margin-bottom:34px}.step-tab{background:#edeadf;border-radius:50%;width:37px;height:37px;color:#8b897b;font-size:12px}.step-tab.selected{background:#505d45;color:#fff}.lesson-copy h2{font-size:26px}.lesson-body{margin:20px 0;color:#626858;font-size:15px;line-height:2.1}.lesson-controls{margin-top:28px;margin-bottom:15px}.source-links{font-size:9px;line-height:1.8;color:#8a8c7d;margin-top:19px}.source-links a{text-decoration:underline;text-underline-offset:3px}.pairs{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;margin:10px 0}.pairs span{padding:10px;background:#eeeee3;font-family:serif;font-size:20px;text-align:center;border-radius:5px}.pairs small{display:block;font:11px sans-serif;color:#7c826f;margin-top:5px}.example-panel{padding:24px}.example-glyph{height:170px;display:flex;justify-content:center;align-items:center}.anatomy-parts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.part{background:#f2efe5;border:1px solid #e0dccf;padding:9px 3px;border-radius:5px}.part.selected{border-color:#a46555;background:#f4e9dd}.part-label{display:block;font-size:9px;color:#8a887a}.part strong{font-size:12px;font-weight:500;margin-top:6px;display:block;white-space:nowrap}.part-explanation{min-height:95px;background:#f0f1e7;padding:14px 17px;border-radius:6px;margin:13px 0}.part-explanation p{font-size:12px;margin-top:5px;line-height:1.9}.english{font-size:12px;color:#888779;margin-top:5px}.qin-diagram{display:block;width:100%;height:auto;margin-top:12px}.qin-diagram+.caption{text-align:center;font-size:9px}.explorer-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start}.explorer-main{padding:25px}.explorer-symbol{display:flex;justify-content:center;align-items:center;position:relative;height:185px}.explorer-symbol .glyph{font-size:125px}.explorer-plain{text-align:center;margin-bottom:24px;font:20px serif;letter-spacing:.12em}.explain-sentence{font-size:12px;color:#646c57;border-top:1px solid #e3ded0;padding-top:15px;margin:15px 0}.dictionary{padding:26px}.dictionary h2{font-size:24px}.searchbox{display:flex;align-items:center;gap:10px;border:1px solid #d7d3c6;background:#f6f4eb;border-radius:5px;margin:20px 0 13px;padding:0 12px}.searchbox .icon{width:16px;color:#8d917e}.searchbox input{min-width:0;width:100%;border:0;background:none;min-height:44px;font-size:12px}.filters{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:17px}.filter{font-size:10px;padding:6px 9px;border-radius:4px;background:transparent;min-height:33px;color:#7c8270}.filter.active{background:#e5e9da;color:#4b5941}.term-row{width:100%;padding:15px 0;display:flex;align-items:center;gap:17px;background:none;border-top:1px solid #e4e0d4;text-align:left}.term-char{min-width:38px;font:27px serif;color:#5e634d}.term-row strong{font-size:10px;color:#838773;font-weight:400}.term-row small{display:block;font-size:11px;color:#606851;line-height:1.8;margin-top:5px}.term-arrow{margin-left:auto;color:#a6aa97}.empty-message{font-size:12px;padding:30px 0;color:#8a8c7c}.practice-start{padding:40px;text-align:center;max-width:680px;margin:auto}.practice-emblem,.text-emblem{font:70px/1.5 serif;color:#a9ad95;display:block}.practice-start h2{font-size:30px;margin:10px 0}.practice-start p{font-size:13px;color:#7e8470;margin:15px 0 25px}.practice-start .caption{display:block;margin-top:15px}.practice-options{display:grid;grid-template-columns:1fr 1fr;gap:30px;max-width:680px;margin:30px auto}.practice-options p{font-size:12px;color:#858975;margin:9px 0}.practice-top{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#7b816d;gap:10px}.session-bar{height:3px;background:#dfdfd0;margin:20px 0 35px}.session-bar span{height:100%;display:block;background:#788564}.question-panel{max-width:710px;margin:auto;text-align:center}.question-panel h1{font-size:26px;letter-spacing:0;max-width:640px;margin:auto}.question-glyphs{min-height:160px;display:flex;flex-wrap:wrap;gap:15px;align-items:center;justify-content:center;margin:10px 0}.question-glyphs .glyph{font-size:92px}.answers{display:grid;grid-template-columns:1fr 1fr;gap:12px}.answer{background:#fbf9f3;border:1px solid #d8d7c6;border-radius:6px;min-height:61px;padding:14px 18px;text-align:left;display:flex;align-items:center;gap:16px;font-size:13px}.answer:not(:disabled):hover{border-color:#8c967a;background:#f0f0e4}.answer-number{font:12px Georgia;color:#9b9e8a;border:1px solid #dedecf;padding:1px 6px;border-radius:3px}.answer.correct{border-color:#758367;background:#e7ecde}.answer.incorrect{border-color:#b8715f;background:#f4e7dc}.answer.dim{opacity:.55}.answer>.icon{margin-left:auto;width:16px}.hint-row{margin-top:17px}.hint-text{font-size:12px;color:#8b7765;background:#eeeadd;padding:13px;text-align:left;border-radius:5px}.feedback{margin-top:20px;text-align:left;padding:21px 24px;border-radius:6px;background:#e8ecdf}.feedback.retry{background:#f0e7db}.feedback strong{font-size:14px}.feedback p{font-size:13px;color:#6b705d;margin:9px 0 19px}.session-summary{text-align:center;padding:40px;max-width:700px;margin:auto}.summary-score{font:76px Georgia;color:#5a6b4b}.summary-score span{font-size:30px;color:#9caa8e}.session-summary p{font-size:13px;color:#7a816b;margin:15px 0 24px}.term-chips{display:flex;flex-wrap:wrap;gap:9px}.session-summary .term-chips{justify-content:center}.chip{background:#e8ebdd;border:1px solid #d7deca;padding:7px 13px;border-radius:5px;font-size:12px;display:inline-block;min-height:36px}.chip.selected{background:#566648;color:#fff;border-color:#566648}.summary-actions{display:flex;justify-content:center;gap:15px;margin-top:30px}.phrase-chooser{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}.phrase-panel{padding:28px}.phrase-panel .panel-top p{font-size:12px;color:#7e846c}.phrase-panel>.caption{margin-top:20px}.phrase-notes{display:flex;gap:13px;margin:27px 0 24px;justify-content:center;flex-wrap:wrap}.phrase-note{background:#f2f0e5;border:1px solid #dfdece;border-radius:6px;min-width:100px;padding:12px;display:flex;flex-direction:column;align-items:center}.phrase-note .glyph{font-size:67px}.phrase-note.selected{border-color:#9c6756;background:#f1e8da}.phrase-note small{font-size:11px;color:#7a775f;margin-top:6px}.phrase-detail{background:#edf0e4;border-radius:6px;padding:23px;min-height:145px}.phrase-detail h2{font-size:23px}.phrase-detail p{font-size:13px;margin:10px 0;color:#6c775e}.phrase-detail .qin-diagram{max-width:620px;margin:auto}.phrase-controls{display:flex;justify-content:space-between;margin-top:22px}.progress-totals{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid #d8d9c9;padding:23px 0;margin-bottom:30px}.progress-totals>div{border-right:1px solid #daddcc;text-align:center}.progress-totals>div:last-child{border:0}.progress-totals strong{font:33px Georgia;color:#637452;display:block}.progress-totals span{display:block;font-size:11px;color:#808b6e;margin-top:7px}.recommendation-box{padding:23px 27px;background:#e5eada;border-radius:6px;position:relative;margin-bottom:28px}.recommendation-box h2{font-size:25px}.recommendation-box p{font-size:12px;color:#788269;margin:9px 0 18px}.concept-table{padding:24px}.table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.table-header h2{font-size:23px}.concept-row{width:100%;display:grid;grid-template-columns:1.2fr 1fr 60px 18px;gap:20px;align-items:center;text-align:left;padding:17px 0;background:none;border-top:1px solid #e1e0d1}.concept-row strong{font-size:13px;font-weight:500}.concept-row small{display:block;font-size:10px;color:#969d86;margin-top:4px}.mastery-bar{height:5px;background:#e7eadb;border-radius:10px;overflow:hidden}.mastery-bar i{display:block;height:100%;background:#899874}.status-label{font-size:11px;color:#869276;text-align:right}.concept-row .icon{width:17px;color:#8b977b}.empty-state{padding:40px;text-align:center}.empty-state p{font-size:13px;color:#828c73;margin:16px 0 22px}.settings-list{padding:12px 30px}.settings-list section{padding:28px 0;border-bottom:1px solid #dfdfcd}.settings-list section:last-child{border:0}.settings-list p{font-size:13px;color:#7d846e;margin:13px 0 22px}.settings-buttons{display:flex;gap:14px;flex-wrap:wrap}.sources-list{display:grid;grid-template-columns:1fr 1fr;gap:18px}.source-card{padding:24px;border:1px solid #dbdecd;border-radius:7px;background:#fbf9f3}.source-card h2{font-size:21px;line-height:1.5}.source-card p{font-size:12px;color:#7d846d;margin-top:14px}.method-copy{margin-top:26px;padding:28px}.method-copy h2{font-size:23px;margin:15px 0}.method-copy p{font-size:13px;color:#7b846d;margin:15px 0;line-height:2}.method-copy a{font-size:12px;color:#955044;text-decoration:underline}.muted{color:#838977;font-size:13px;line-height:1.9}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(30px);background:#374330;color:#fff;padding:13px 22px;border-radius:6px;z-index:100;opacity:0;pointer-events:none;font-size:12px;max-width:90%;box-shadow:0 5px 20px #26301f22;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translateX(-50%)}.storage-warning{background:#f2e4d4;color:#8e4b37;padding:12px 28px;font-size:12px}.storage-warning a{text-decoration:underline}dialog{border:1px solid #dddaca;border-radius:10px;background:#fbf9f3;padding:28px;color:#343c2d;max-width:480px;width:calc(100% - 32px);max-height:88vh;overflow:auto;box-shadow:0 20px 80px #1a201533}dialog::backdrop{background:#25301e66;backdrop-filter:blur(3px)}.dialog-top{display:flex;justify-content:space-between;align-items:center}.close-dialog{font:28px sans-serif;background:none;min-width:44px;min-height:44px;color:#7e886c}.term-dialog-glyph{display:flex;justify-content:center;align-items:center;height:170px}.term-dialog h2{font-size:32px;margin-bottom:6px}.term-dialog h2 small{font:15px sans-serif;color:#8d947b}.term-dialog>p{margin:15px 0;font-size:14px}.dialog-actions{display:flex;gap:12px;margin-top:25px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.visually-hidden:focus+label{outline:3px solid #9d3f32}
@media(min-width:1440px){.sidebar{width:248px;padding:42px 34px}.workspace{margin-left:248px}main{padding-top:51px}.home-grid{grid-template-columns:1.1fr 1fr}.hero-symbol{height:240px}.daily-card{padding:32px}.daily-card h2{margin-top:44px}.daily-card>p{margin-bottom:29px}}
@media(max-width:1100px){.sidebar{width:190px;padding:30px 20px}.brand{font-size:22px;gap:12px}.brand small{font-size:8px}.workspace{margin-left:190px}.topbar{padding:0 28px}main{padding:32px 28px 45px}h1{font-size:38px}.home-grid{gap:17px}.daily-card{padding:22px}.daily-number{font-size:20px;right:18px;top:20px}.daily-card h2{font-size:22px}.hero-notation{padding:20px}.lesson-preview{gap:10px}.compact h3{font-size:16px}.lesson-card.compact{padding:16px 13px}.compact .small-label{right:12px}.lesson-workspace,.explorer-layout{gap:17px;grid-template-columns:1fr 1fr}.lesson-copy,.example-panel,.explorer-main,.dictionary{padding:20px}.anatomy-parts{grid-template-columns:repeat(2,1fr)}.part strong{font-size:12px}.lesson-copy h2{font-size:23px}.phrase-note{min-width:90px}.phrase-note .glyph{font-size:60px}footer{padding:22px 28px}}
/* Keep reading panels usable on portrait tablets before switching navigation. */
@media (min-width: 761px) and (max-width: 1000px) {
  .home-grid, .lesson-workspace, .explorer-layout { grid-template-columns: minmax(0, 1fr); }
  .lesson-preview { grid-template-columns: 1fr; }
  .lesson-card.compact { min-height: auto; }
  .compact .lesson-number { margin-bottom: 10px; }
  .anatomy-parts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.dictionary-shortcut, .swipe-hint { display: none; }
/* Phone layouts preserve notation size instead of shrinking a desktop grid. */
@media (max-width: 760px) {
  html { scroll-padding-bottom: calc(92px + env(safe-area-inset-bottom)); }
  .sidebar { display: none; }
  .workspace { margin: 0; }
  .topbar { min-height: 68px; height: auto; padding: 8px max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left)); gap: 12px; }
  .mobile-brand { display: block; flex-shrink: 0; font: 24px serif; color: #424b38; }
  .mobile-brand span { display: none; }
  .breadcrumb { display: none; }
  .top-actions { gap: 8px; }
  .top-actions .text-button { font-size: 12px; padding-inline: 8px; }
  .settings-link { min-width: 44px; min-height: 44px; align-items: center; justify-content: center; }
  main { padding: 28px max(20px, env(safe-area-inset-right)) 36px max(20px, env(safe-area-inset-left)); min-height: calc(100dvh - 177px); }
  h1 { font-size: clamp(28px, 8vw, 36px); letter-spacing: .025em; }
  .page-heading { margin-bottom: 24px; }
  .eyebrow, .small-label, .caption, .badge { font-size: 12px; }
  .lede { font-size: 14px; line-height: 1.9; margin-top: 12px; }
  .button, .text-button, .quiet-link, .filter, .chip, .step-tab { min-height: 44px; }
  .button { font-size: 14px; padding: 12px 16px; }
  .text-button, .quiet-link { font-size: 14px; }
  input, select, textarea, .searchbox input { font-size: 16px; }
  select { min-height: 44px; min-width: 0; }
  .home-grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .hero-notation { padding: 20px 22px; }
  .hero-symbol { height: 190px; }
  .hero-symbol .glyph { font-size: 120px; }
  .vertical-note { display: none; }
  .hero-caption h2 { font-size: 24px; }
  .hero-caption p { font-size: 13px; line-height: 1.8; }
  .hero-notation > .quiet-link { margin-top: 18px; padding-top: 12px; }
  .daily-stack { gap: 16px; }
  .daily-card { padding: 23px; }
  .daily-card .eyebrow { margin-bottom: 14px; }
  .daily-number { display: none; }
  .daily-card h2 { font-size: 26px; margin-top: 0; max-width: none; }
  .daily-card > p { font-size: 14px; margin: 10px 0 20px; }
  .daily-card > .caption { font-size: 12px; }
  .stats-strip { padding: 18px 4px; }
  .stats-strip strong { font-size: 26px; }
  .stats-strip small, .stats-strip span { font-size: 12px; }
  .lesson-preview { grid-template-columns: 1fr; gap: 12px; }
  .lesson-card, .lesson-card.compact { display: flex; align-items: center; min-height: 110px; gap: 16px; padding: 18px; }
  .lesson-card > div { min-width: 0; }
  .compact .lesson-number { margin: 0; min-width: 25px; font-size: 26px; }
  .compact .small-label { position: static; font-size: 12px; }
  .lesson-card h3, .compact h3 { font-size: 20px; margin-top: 3px; }
  .lesson-card p, .compact p { max-width: none; padding: 0; font-size: 13px; margin-top: 5px; }
  .compact .icon { position: static; margin-left: auto; }
  .section { margin-top: 30px; }
  .section-title { gap: 12px; flex-wrap: wrap; }
  .section-title h2 { font-size: 25px; }
  .phrase-banner { gap: 15px; padding: 23px 0; margin-top: 24px; }
  .phrase-banner h3 { font-size: 20px; }
  .phrase-banner p { font-size: 13px; }
  .banner-icon { font-size: 32px; }
  footer { padding: 22px max(20px, env(safe-area-inset-right)) calc(108px + env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left)); font-size: 12px; flex-wrap: wrap; }
  footer a { display: inline-flex; align-items: center; min-height: 44px; }
  .mobile-nav { position: fixed; inset: auto 0 0; display: flex; background: #f5f2e9f5; backdrop-filter: blur(12px); border-top: 1px solid #d9ddc9; z-index: 25; padding: 8px max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); min-height: calc(72px + env(safe-area-inset-bottom)); }
  .mobile-nav a { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 3px; font-size: 12px; color: #6f765e; min-height: 48px; }
  .mobile-nav a.active { color: #963f32; }
  .mobile-nav .icon { width: 22px; height: 22px; }
  .lesson-workspace, .explorer-layout { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .lesson-copy, .example-panel, .explorer-main, .dictionary { padding: 20px; min-width: 0; }
  .lesson-body { font-size: 16px; line-height: 1.95; }
  .step-tabs { margin-bottom: 24px; padding-bottom: 18px; gap: 14px; }
  .step-tab { width: 44px; height: 44px; font-size: 14px; }
  .lesson-controls { margin-top: 12px; width: 100%; }
  .lesson-controls .button { width: 100%; }
  .source-links { font-size: 12px; line-height: 2; overflow-wrap: anywhere; }
  .source-links a { display: inline-block; padding-block: 5px; }
  .pairs small { font-size: 13px; }
  .anatomy-parts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .part { min-height: 70px; padding: 12px 6px; }
  .part-label { font-size: 12px; }
  .part strong { font-size: 15px; white-space: normal; }
  .part-explanation { padding: 16px; }
  .part-explanation p, .english, .explain-sentence { font-size: 14px; }
  .example-glyph, .explorer-symbol { height: 190px; }
  .explorer-symbol .glyph { font-size: 120px; }
  .qin-diagram + .caption { font-size: 12px; }
  .dictionary-shortcut { display: inline-flex; margin: -8px 0 20px; }
  .dictionary { scroll-margin-top: 20px; }
  .term-row { min-height: 80px; gap: 14px; }
  .term-row strong { font-size: 12px; }
  .term-row small { font-size: 14px; }
  .searchbox { margin-top: 18px; }
  .searchbox input { min-height: 48px; }
  .filters { gap: 7px; }
  .filter { padding: 9px 12px; font-size: 13px; }
  .practice-start { padding: 28px 20px; }
  .practice-start h2 { font-size: 28px; }
  .practice-start p, .practice-options p { font-size: 14px; }
  .practice-options { gap: 24px; }
  .practice-options h3 { font-size: 20px; }
  .practice-top { font-size: 12px; flex-wrap: wrap; }
  .practice-top .badge { white-space: normal; }
  .session-bar { margin: 16px 0 28px; }
  .question-panel h1 { font-size: 25px; line-height: 1.6; }
  .question-glyphs { min-height: 160px; gap: 12px; margin: 12px 0; }
  .question-glyphs .glyph { font-size: 92px; }
  .answers { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .answer { padding: 16px; gap: 14px; font-size: 16px; min-height: 64px; }
  .answer-number { font-size: 13px; flex-shrink: 0; }
  .hint-text, .feedback p { font-size: 14px; }
  .feedback { padding: 20px; scroll-margin-bottom: calc(100px + env(safe-area-inset-bottom)); }
  .feedback .button { width: 100%; }
  .phrase-panel { padding: 20px; min-width: 0; }
  .phrase-panel .panel-top { align-items: flex-start; flex-wrap: wrap; }
  .phrase-panel .panel-top p { font-size: 14px; }
  .phrase-panel .panel-top .button { min-height: 44px; font-size: 14px; }
  .swipe-hint { display: block; margin-top: 18px; }
  .phrase-notes { position: relative; flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; gap: 12px; margin: 12px -4px 22px; padding: 4px 4px 12px; }
  .phrase-note { flex: 0 0 112px; min-width: 112px; padding: 12px 8px; scroll-snap-align: center; }
  .phrase-note .glyph { font-size: 70px; }
  .phrase-note small { font-size: 12px; }
  .phrase-detail { padding: 18px; min-height: 120px; }
  .phrase-detail h2 { font-size: 23px; }
  .phrase-detail p { font-size: 14px; }
  .phrase-controls { gap: 12px; flex-wrap: wrap; }
  .phrase-controls .button { flex: 1; white-space: nowrap; }
  .phrase-chooser { gap: 8px; }
  .phrase-chooser .chip { font-size: 13px; padding: 10px 12px; }
  .progress-totals { grid-template-columns: 1fr 1fr; row-gap: 24px; }
  .progress-totals > div:nth-child(2) { border: 0; }
  .progress-totals strong { font-size: 30px; }
  .progress-totals span { font-size: 13px; }
  .concept-table { padding: 20px; }
  .table-header { display: block; }
  .table-header .caption { display: block; margin-top: 8px; }
  .concept-row { grid-template-columns: minmax(0, 1fr) 55px; gap: 12px; }
  .concept-row .mastery-bar, .concept-row > .icon { display: none; }
  .concept-row strong { font-size: 15px; }
  .concept-row small, .status-label { font-size: 12px; }
  .recommendation-box { padding: 23px; }
  .recommendation-box p { font-size: 14px; }
  .settings-list { padding: 4px 20px; }
  .settings-list h2 { font-size: 24px; }
  .settings-list p { font-size: 14px; }
  .sources-list { grid-template-columns: minmax(0, 1fr); }
  .source-card, .method-copy { padding: 22px; }
  .source-card p, .method-copy p { font-size: 14px; }
  .source-card, .method-copy { overflow-wrap: anywhere; }
  .session-summary { padding: 28px 20px; }
  .summary-actions { flex-wrap: wrap; gap: 12px; }
  .session-summary p { font-size: 14px; }
  .toast { bottom: calc(90px + env(safe-area-inset-bottom)); width: max-content; max-width: calc(100% - 32px); font-size: 13px; }
  dialog { max-height: calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); overscroll-behavior: contain; }
  .term-dialog { padding: 22px; }
  .dialog-actions { flex-wrap: wrap; }
  .tip-box { padding: 20px; font-size: 14px; }
  .storage-warning { padding: 14px 20px; font-size: 14px; }
  .empty-state { padding: 28px 20px; }
  .empty-state p, .muted { font-size: 14px; }
}
@media (max-width: 370px) {
  main { padding-inline: max(16px, env(safe-area-inset-left)) max(16px, env(safe-area-inset-right)); }
  .hero-notation, .daily-card, .lesson-copy, .example-panel, .explorer-main, .dictionary, .phrase-panel { padding: 16px; }
  .stats-strip span { font-size: 11px; }
  .practice-options { grid-template-columns: 1fr; }
  .explorer-main .panel-top { flex-wrap: wrap; }
  .explorer-main select { width: 100%; }
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
