@layer reset,base,components,responsive;
@layer reset {
  *{box-sizing:border-box}html{color-scheme:light}body,h1,h2,h3,p{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default}a{color:inherit}svg{display:block;flex-shrink:0}button,a,input,select{ -webkit-tap-highlight-color:transparent}button{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #608b9c;outline-offset:4px}[hidden]{display:none!important}
}
@layer base {
  :root{--ink:#233d49;--muted:#6b7f85;--teal:#245b65;--teal-dark:#173b51;--gold:#ddc58c;--paper:#fcfcf6;--desk:#e9efed;--line:#dce3db;--seal:#a94752;--serif:"Iowan Old Style","Songti SC","Noto Serif CJK SC","SimSun",serif;--sans:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
  body{font-family:var(--sans);color:var(--ink);background:var(--desk);font-size:15px;line-height:1.6;background-image:radial-gradient(ellipse at 50% 5%,#fbfcf6b3,transparent 65%);min-height:100dvh}
  body.modal-open{overflow:hidden}button{color:inherit}input,select{min-height:46px;background:#fffef8;color:var(--ink);border:1px solid #c5d1cc;border-radius:10px;padding:10px 12px;max-width:100%}input[type=checkbox]{accent-color:var(--teal);width:19px;min-height:19px;height:19px}input[type=search]{width:100%}button{font-weight:400}::selection{background:#dfd19a6e}button[disabled]{opacity:.45}
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .app-shell{max-width:1440px;margin:auto;padding:0 46px}.app-header{height:108px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;font-family:var(--serif);font-size:26px;letter-spacing:3px}.brand small{display:block;font-family:var(--sans);font-size:10px;letter-spacing:3px;color:var(--muted);margin-top:1px}.brand-mark{border:1px solid #245b6540;border-radius:7px;width:41px;height:46px;display:grid;place-items:center;font-size:27px;background:#ffffff42;box-shadow:inset 0 0 0 3px #e8eddf}.header-actions{display:flex;align-items:center;gap:22px}.save-status{font-size:11px;color:var(--muted)}.save-status::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#6e9584;margin-right:7px}.profile-button{background:none;border:1px solid #cbd6cf;border-radius:30px;display:flex;gap:10px;align-items:center;padding:6px 14px 6px 6px;font-size:12px}.profile-button>span:first-child{width:30px;height:30px;background:#dde5d5;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-size:18px}.text-button{border:0;padding:8px 0;background:none;color:var(--muted);font-size:12px;text-decoration:underline;text-decoration-color:#bac9bf;text-underline-offset:4px}
  #main{min-height:calc(100dvh - 235px)}.desktop-footer{display:flex;justify-content:space-between;align-items:center;max-width:1000px;margin:15px auto 0;padding-bottom:20px;color:#7b8d8f;font-size:11px;letter-spacing:1px}
  .main-nav{display:flex;justify-content:center;gap:5px;max-width:520px;margin:24px auto 0;padding:6px;background:#ffffff70;border:1px solid #ffffff90;border-radius:22px;box-shadow:0 7px 22px #27493606}.nav-item{flex:1;border:0;background:none;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:15px;padding:12px 13px;font-size:13px;color:#6b8185;min-height:45px}.nav-item.active{background:var(--teal-dark);color:#f3ead3;box-shadow:0 3px 8px #173b5116}.nav-item:hover:not(.active){background:#e1e8e2}
  .boot-state{text-align:center;padding:100px 10px;color:var(--muted)}.boot-book{font-family:var(--serif);font-size:42px;background:var(--teal-dark);color:var(--gold);width:100px;height:135px;display:grid;place-items:center;border-radius:4px 13px 13px 4px;margin:0 auto 25px;box-shadow:8px 8px 0 #d3d8c8}.noscript{padding:30px}
}
@layer components {
  .button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:45px;padding:10px 17px;border-radius:11px;border:1px solid #cad5cc;background:#f8faf2;color:var(--teal-dark);font-size:13px;line-height:1.45;text-decoration:none;transition:background .15s,transform .15s,box-shadow .15s}.button:hover:not(:disabled){background:#eef3e7;box-shadow:0 3px 8px #173b5109}.button:active:not(:disabled){transform:translateY(1px)}.button.primary{background:var(--teal-dark);color:#fff9e8;border-color:var(--teal-dark)}.button.primary:hover:not(:disabled){background:#225367}.button.gold{background:#e4cf9b;border-color:#e4cf9b;color:#233d49}.button.danger{color:#9e3d4a;border-color:#dfbdc0;background:#fff9f5}.button.full{width:100%}.button.small{min-height:36px;padding:7px 10px;font-size:12px}.icon-button{display:inline-grid;place-items:center;border:1px solid #d0d9d0;border-radius:50%;width:40px;height:40px;background:#fafbf5}.inline-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.eyebrow{font-size:11px;letter-spacing:3px;color:#7f8e80}.muted{color:var(--muted)}.small{font-size:12px}.note{font-size:11px;color:var(--muted);line-height:1.8}.rule{height:1px;background:var(--line);margin:20px 0}.pill{font-size:10px;padding:3px 8px;border:1px solid #cbd8cd;border-radius:20px;color:#587064;white-space:nowrap}.pill.success{background:#eaf1e3;color:#3a6b50;border-color:#d3dfc6}.pill.seal{background:#f6e9e5;color:var(--seal);border-color:#e2c6c5}.empty-state{text-align:center;padding:28px 15px;color:var(--muted)}.empty-state>svg{margin:0 auto 14px;color:#9eafa5}.empty-state h3{font-family:var(--serif);font-weight:400;font-size:20px;color:var(--ink);margin-bottom:8px}.empty-state .button{margin-top:18px}.row-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.row-label h3{font-size:13px;font-weight:500}
  /* A real object sits on the desk. Cloth, foil, page edges and stitching share one geometry. */
  .cover-intro{text-align:center;padding:0 0 10px}.cover-intro p{color:#718579;font-size:12px;letter-spacing:3px}.cover-desk{perspective:1800px;padding:30px 20px 25px;min-height:545px;display:grid;place-items:center;position:relative}.cover-desk::after{content:"";position:absolute;width:280px;height:30px;border-radius:50%;background:#3e554c1f;filter:blur(19px);bottom:20px;pointer-events:none}.passport-object{position:relative;width:322px;height:444px;transform:rotateY(-9deg) rotateX(5deg) rotateZ(-5deg);transform-style:preserve-3d;transition:transform .7s cubic-bezier(.2,.7,.25,1);z-index:1}.passport-object::before{content:"";position:absolute;inset:5px -8px -7px 3px;border-radius:4px 15px 15px 4px;background:repeating-linear-gradient(0deg,#e9e8db 0 2px,#cdd0c5 2px 3px,#f5f3e9 3px 5px);border:1px solid #c0c9bf;box-shadow:14px 20px 32px #1d39352b}.passport-object::after{content:"";position:absolute;inset:8px -10px -10px -1px;border-radius:6px 16px 16px 5px;background:#173b51;z-index:-1}.passport-cover{height:100%;position:relative;display:flex;align-items:center;flex-direction:column;padding:40px 28px 26px;color:#e6d09c;border:1px solid #45666d;border-radius:5px 15px 15px 5px;background-color:var(--teal-dark);background-image:repeating-linear-gradient(18deg,transparent 0 2px,#95a39708 2px 3px),repeating-linear-gradient(103deg,transparent 0 3px,#020e180b 3px 4px),linear-gradient(90deg,#061d3370,transparent 7%,#c8e3b905 45%,#061b3330);box-shadow:inset 3px 0 7px #09273e70,inset -1px 0 2px #a4bbae2b,5px 8px 17px #213d3c14;transform-origin:0 50%;transform-style:preserve-3d}.passport-cover::before{content:"";position:absolute;inset:14px;border:1px solid #b8a77755;border-radius:2px 9px 9px 2px;pointer-events:none}.passport-cover::after{content:"";position:absolute;inset:19px;border:1px dashed #b8a77729;border-radius:1px 6px 6px 1px;pointer-events:none}.cover-title{font-family:var(--serif);font-weight:400;font-size:39px;letter-spacing:9px;margin-left:9px;line-height:1.3;text-shadow:0 1px 0 #102c40,-1px -1px 0 #f8ecb62a}.cover-subtitle{font-size:10px;letter-spacing:5px;margin:11px 0 20px}.cover-emblem{width:155px;height:155px;margin-bottom:17px;filter:drop-shadow(0 1px 0 #0b2b44);opacity:.95}.cover-owner{font-size:12px;letter-spacing:2px;margin-bottom:13px;max-width:240px;overflow-wrap:anywhere}.open-passport{border:1px solid #dac48d8c;background:#d5c18812;color:#f1dfb7;border-radius:6px;padding:9px 22px;min-height:43px;font-size:12px;letter-spacing:2px;z-index:1}.open-passport:hover{background:#d5c18825}.cover-caption{text-align:center;font-size:11px;color:#819187;letter-spacing:2px}.cover-status{display:flex;justify-content:center;gap:20px;margin-top:20px;font-size:12px;color:#5b756d}.cover-status strong{font-family:var(--serif);font-size:22px;color:var(--teal-dark);font-weight:400;margin-right:4px}.cover-status>span+span{border-left:1px solid #cad5c9;padding-left:20px}.passport-object.opening{animation:cover-depart .85s cubic-bezier(.2,.7,.25,1) forwards}.opening .passport-cover{animation:cover-unfold .85s cubic-bezier(.2,.7,.25,1) forwards;backface-visibility:hidden}@keyframes cover-unfold{to{transform:rotateY(-150deg)}}@keyframes cover-depart{0%{opacity:1}75%{opacity:1;transform:translateX(70px) rotateZ(0deg)}100%{opacity:0;transform:translateX(70px) rotateZ(0deg)}}
  /* Open spread */
  .workbench{max-width:1030px;margin:0 auto}.bench-heading{display:flex;justify-content:space-between;align-items:center;padding:0 18px 18px;gap:15px}.bench-heading h1{font-family:var(--serif);font-size:26px;font-weight:400;letter-spacing:2px}.bench-heading p{font-size:11px;color:var(--muted);margin-top:4px}.book-tools{display:flex;align-items:center;gap:12px}.book-tools .text-button{white-space:nowrap}.book-stage{position:relative;padding:0 13px 9px;perspective:1900px}.book-board{position:relative;display:grid;grid-template-columns:1fr 1fr;min-height:630px;border-radius:8px 14px 14px 8px;background:#fcfcf6;box-shadow:0 22px 40px #284b3e16,0 5px 10px #284b3e0a;isolation:isolate}.book-board::before{content:"";position:absolute;inset:5px -5px -7px -5px;background:repeating-linear-gradient(0deg,#e8e8dd 0 2px,#c8d0c3 2px 3px,#f8f8ef 3px 5px);border:1px solid #c3cbbb;border-radius:8px 15px 15px 8px;z-index:-2;box-shadow:0 4px 0 2px #204d59}.book-board::after{content:"";position:absolute;width:25px;left:50%;top:0;bottom:0;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#1b332b0c 30%,#26413617 48%,#eff3df55 54%,transparent);pointer-events:none;z-index:2}.paper-sheet{position:relative;min-width:0;background-color:var(--paper);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23777' opacity='.025' filter='url(%23n)' d='M0 0h140v140H0z'/%3E%3C/svg%3E");padding:30px 34px 48px}.paper-left{border-radius:8px 0 0 8px;border-right:1px solid #dfe5d5;padding-right:38px;background-color:#f7f9f0}.paper-right{border-radius:0 14px 14px 0;padding-left:38px}.sheet-content{height:545px;overflow:auto;scrollbar-width:thin;scrollbar-color:#c2cfbb transparent;overscroll-behavior:contain;padding:0 2px 8px}.sheet-content::-webkit-scrollbar{width:3px}.sheet-content::-webkit-scrollbar-thumb{background:#cad3c2;border-radius:2px}.page-number{position:absolute;bottom:18px;right:31px;font-size:10px;color:#9ba68e;letter-spacing:2px}.paper-left .page-number{left:31px;right:auto}.page-corner{position:absolute;bottom:0;right:0;background:linear-gradient(135deg,transparent 45%,#e2e6d5 49%,#f9faef 54%);border:0;border-radius:0 0 13px 0;width:38px;height:38px;opacity:.9;color:#819178;display:grid;place-items:end;padding:6px;touch-action:none}.page-corner svg{width:12px;height:12px}.book-pager{display:flex;justify-content:space-between;align-items:center;margin-top:15px;padding:0 17px;font-size:10px;color:#8a998b}.book-pager .pager-buttons{display:flex;gap:12px}.book-pager button{border:0;background:none;padding:8px;display:flex;align-items:center;gap:4px;font-size:11px;color:#607b70;min-height:36px}.bookmarks{position:absolute;right:-17px;top:55px;display:flex;flex-direction:column;gap:9px;z-index:3}.bookmark{border:0;border-radius:0 5px 5px 0;min-height:60px;min-width:34px;writing-mode:vertical-rl;letter-spacing:3px;padding:11px 8px;font-size:10px;color:#fff8e4;background:#527b74;box-shadow:2px 3px 5px #1e43341a}.bookmark:nth-child(2){background:#b29765}.bookmark:nth-child(3){background:#996571}.bookmark.active{padding-right:12px;min-width:39px}.turn-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:10}.is-turning{pointer-events:none}.fallback-leaf{position:absolute;inset:0;width:50%;left:50%;transform-origin:0 50%;backface-visibility:hidden;z-index:8}.content-arrive{animation:content-arrive .3s ease-out}@keyframes content-arrive{from{opacity:.3}to{opacity:1}}
  .paper-right{touch-action:pan-y}
  .section-title{font-family:var(--serif);font-size:28px;line-height:1.5;font-weight:400;letter-spacing:2px;margin:13px 0 8px}.section-description{font-size:12px;color:var(--muted);line-height:1.9}.landscape{width:100%;height:auto;max-height:260px;display:block;margin:22px auto 16px}.landscape.small-art{max-width:265px;margin:14px auto}.poetic-caption{font-family:var(--serif);font-size:16px;line-height:1.9;letter-spacing:2px;text-align:center;color:#607d72}.guide-quote{font-family:var(--serif);font-size:18px;line-height:2.05;margin:20px 0 12px;max-width:16em;color:#486a61}.guide-label{font-size:10px;color:#91a18b;letter-spacing:2px;margin-top:18px}.identity-row{display:flex;align-items:center;gap:17px;margin:24px 0}.identity-avatar{width:66px;height:81px;flex-shrink:0;display:grid;place-items:center;background:#e1ead8;border:1px solid #c3d2bd;border-radius:33px 33px 8px 8px;font-family:var(--serif);font-size:35px;color:#53766a;box-shadow:inset 0 0 0 5px #f3f6ea}.identity-name{font-family:var(--serif);font-size:23px;letter-spacing:2px;overflow-wrap:anywhere}.identity-row .small{font-size:11px;margin-top:4px;color:#84917d}.stat-triplet{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:20px 0;border-top:1px solid #dce3d2;border-bottom:1px solid #dce3d2;margin:20px 0}.stat-triplet>div{display:flex;flex-direction:column;gap:7px;text-align:center}.stat-triplet strong{font-family:var(--serif);font-size:32px;font-weight:400;line-height:1;color:#315f5c}.stat-triplet span{font-size:10px;color:#7a8f7d}.passport-serial{font-family:var(--serif);letter-spacing:4px;font-size:11px;color:#9ba98f;margin-top:30px}.ticket{position:relative;border:1px solid #d3dbc8;border-radius:3px;margin:22px 0;background:#f4f7eb;padding:20px 21px}.ticket::before,.ticket::after{content:"";position:absolute;top:52%;width:12px;height:22px;background:var(--paper);border:1px solid #d3dbc8;border-radius:50%}.ticket::before{left:-7px;border-left:0}.ticket::after{right:-7px;border-right:0}.ticket-title{font-family:var(--serif);font-size:26px;letter-spacing:2px;line-height:1.5;margin:10px 0 4px}.ticket-author{font-size:11px;color:#8a9883}.ticket .button{margin-top:18px}.ticket-bottom{border-top:1px dashed #cfd8c4;margin-top:20px;padding-top:12px;display:flex;justify-content:space-between;font-size:10px;color:#8a9980}.daily-review{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.daily-review strong{font-size:12px;font-weight:400}.daily-review p{font-size:10px;color:var(--muted);margin-top:3px}.mobile-summary{display:none}.last-stamp{margin-top:17px;display:flex;align-items:center;gap:14px}.mini-seal{width:49px;height:49px;display:grid;place-items:center;border:2px double #a94752;border-radius:50%;font-family:var(--serif);font-size:17px;color:var(--seal);transform:rotate(-9deg)}
  /* The reading surface stays quiet; hints are small pieces of the page. */
  .poem-topline{display:flex;justify-content:space-between;align-items:center;gap:10px}.poem-heading{text-align:center;margin:23px 0 18px}.poem-heading h2{font-family:var(--serif);font-size:29px;letter-spacing:3px;font-weight:400;line-height:1.7}.poem-heading.long h2{font-size:24px;letter-spacing:1px}.poem-meta{font-size:11px;color:#85927e;margin-top:5px;letter-spacing:2px}.poem-lines{display:flex;flex-direction:column;align-items:center;gap:14px;margin:24px 0 25px}.poem-line{position:relative;font-family:var(--serif);font-size:25px;letter-spacing:3px;white-space:nowrap;line-height:1.55;text-align:center;min-height:39px;display:block;max-width:100%}.poem-lines.with-pinyin{gap:11px;margin:20px 0}.poem-lines.with-pinyin .poem-line{font-size:24px}.py{display:block;font-family:var(--sans);font-size:11px;line-height:1.5;color:#94a18c;letter-spacing:.4px;word-spacing:3px;margin-bottom:2px;white-space:normal}.masked-word{display:inline-block;color:transparent;position:relative;user-select:none}.masked-word::after{content:"";position:absolute;left:3px;right:4px;bottom:5px;border-bottom:1px solid #c6d1bf}.poem-line.revealable{border:0;background:none;padding:0 14px;min-height:46px}.poem-line.revealable:hover{background:#edf3e5}.poem-line .hint-eye{display:inline;position:absolute;right:-12px;top:12px;color:#9aab93;width:13px;height:13px}.practice-controls{padding-top:12px;border-top:1px solid var(--line)}.practice-controls .inline-actions{justify-content:center}.practice-controls .button.primary{margin-top:12px}.practice-status{font-size:11px;text-align:center;color:#8a977e;margin:10px 0}.toggle-chip{display:inline-flex;gap:5px;align-items:center;min-height:32px;padding:5px 9px;border:1px solid #d6dece;background:none;border-radius:6px;font-size:10px;color:#87967c}.toggle-chip[aria-pressed=true]{background:#e7efdf;color:#456852;border-color:#c8d7be}.reading-step{font-size:10px;letter-spacing:2px;color:#9ba98d;display:flex;gap:10px;align-items:center}.reading-step .active{color:#3b6758}.reading-step i{display:inline-block;width:18px;height:1px;background:#cdd8c4}.hint-instruction{min-height:22px;text-align:center;font-size:11px;color:#8a977d;margin-top:3px}.verse-small .poem-line{font-size:23px;letter-spacing:2px}.verse-small .poem-heading{margin:10px 0}.verse-small .poem-lines{margin:15px 0;gap:8px}
  /* Lists, challenges and collection share the paper rather than floating cards. */
  .search-field{position:relative;margin:18px 0 12px}.search-field svg{position:absolute;left:12px;top:13px;color:#8a9b88}.search-field input{padding-left:40px;background:#f6f8ef;font-size:12px;min-height:43px;border-color:#d7dfcf}.filter-row{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 16px}.filter-chip{border:1px solid transparent;background:none;border-radius:7px;color:#88977e;padding:6px 9px;font-size:11px;min-height:33px}.filter-chip.active{border-color:#bdceb1;background:#edf3e5;color:#426447}.poem-list{list-style:none;padding:0;margin:0}.poem-list li{border-top:1px solid #e2e7d9}.poem-row{width:100%;background:none;border:0;display:flex;gap:12px;align-items:center;text-align:left;padding:13px 0}.poem-row .row-index{font-family:var(--serif);font-size:15px;color:#b0baa4;width:22px}.poem-row .poem-row-text{flex:1;min-width:0}.poem-row-title{font-family:var(--serif);font-size:18px;letter-spacing:1px}.poem-row p{font-size:10px;color:#8a9881;margin-top:3px}.poem-row>svg{width:14px;height:14px;color:#8c9e85}.poem-row:hover .poem-row-title{color:#317466}.list-count{font-size:10px;color:#95a18b}.challenge-list{margin-top:17px}.challenge-tile{width:100%;display:flex;gap:15px;align-items:center;text-align:left;border:0;border-top:1px solid #dce3d3;background:none;padding:18px 0}.challenge-symbol{width:45px;height:53px;flex-shrink:0;display:grid;place-items:center;border-radius:23px 23px 7px 7px;background:#e4ecda;color:#658263}.challenge-tile:nth-child(2) .challenge-symbol{color:#8e7651;background:#eee9d6}.challenge-tile:nth-child(3) .challenge-symbol{color:#8b6870;background:#eee0dc}.challenge-tile:nth-child(4) .challenge-symbol{color:#6b7d93;background:#e0e8eb}.challenge-tile h3{font-family:var(--serif);font-size:19px;font-weight:400}.challenge-tile p{font-size:11px;color:#8a977f;margin-top:4px}.challenge-tile>svg{margin-left:auto;color:#a3b19a;width:16px}.challenge-tile:hover h3{color:#246451}.best-record{margin:22px 0;display:flex;justify-content:space-between;padding:14px 0;border-block:1px solid #dce3d3;gap:12px}.best-record span{font-size:11px;color:#8b9981}.best-record strong{font-family:var(--serif);font-size:21px;font-weight:400;color:#557258}.progress-track{height:4px;background:#e1e7d6;margin:20px 0 25px;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:#719582;border-radius:4px;transition:width .35s}.question-source{font-size:11px;color:#8e9e87;text-align:center;margin-bottom:15px}.question-prompt{font-family:var(--serif);font-size:28px;line-height:1.8;text-align:center;letter-spacing:2px;margin:20px 0}.answer-options{display:flex;flex-direction:column;gap:10px}.answer-option{width:100%;min-height:51px;border:1px solid #d7dfcb;background:#f8faf1;border-radius:9px;padding:11px 10px;text-align:center;font-family:var(--serif);font-size:20px;letter-spacing:2px}.answer-option:hover:not(:disabled){background:#edf4e4;border-color:#a9bea0}.answer-option.correct{border-color:#7d9e7b;background:#e8f0dc;color:#3f734f}.answer-option.wrong{border-color:#c3989a;background:#f5e6e2;color:#9c565c}.answer-option:disabled{opacity:1}.answer-feedback{min-height:44px;margin:12px 0;font-size:12px;color:#68805e;text-align:center}.answer-feedback.wrong{color:#a16164}.sequence-target{display:flex;flex-direction:column;gap:7px;margin:18px 0;min-height:150px;padding:13px;border:1px dashed #c8d6ba;background:#f3f7ea;border-radius:9px}.sequence-slot{min-height:33px;border-bottom:1px solid #e0e8d6;font-family:var(--serif);font-size:19px;text-align:center;color:#486c56;line-height:1.7}.sequence-slot:empty::after{content:attr(data-order);font-family:var(--sans);font-size:10px;color:#acb9a1}.sequence-pool{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.sequence-piece{border:1px solid #cfdac1;background:#fafcf3;border-radius:8px;min-height:40px;padding:8px 10px;font-family:var(--serif);font-size:17px;letter-spacing:1px}.sequence-piece:disabled{visibility:hidden}.sequence-actions{display:flex;justify-content:center;gap:9px;margin-top:17px}.duel-scores{display:flex;justify-content:space-around;margin:22px 0;text-align:center}.duel-scores strong{display:block;font-family:var(--serif);font-size:32px;font-weight:400}.duel-scores span{font-size:12px;color:#859379}.duel-scores .current{color:var(--teal);border-bottom:2px solid #638971}.duel-scores>div{padding:8px 12px}.player-turn{text-align:center;font-family:var(--serif);font-size:22px;margin:20px 0 8px}.family-confirm{display:flex;align-items:flex-start;gap:8px;background:#eef3e5;border-radius:8px;padding:11px;font-size:12px;margin:15px 0}.family-confirm input{margin-top:3px;flex-shrink:0}.result-hero{text-align:center;padding:10px 0 15px}.result-hero>svg{margin:0 auto 15px;color:#a68c52;width:39px;height:39px}.result-number{font-family:var(--serif);font-size:66px;line-height:1.25;color:#355c59}.result-number small{font-size:23px;color:#a0ad90;margin-left:4px}.result-label{font-size:12px;color:#8c9a80}.result-items{margin:20px 0;border-top:1px solid var(--line)}.result-item{padding:9px 0;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);font-size:12px}.result-item span{font-family:var(--serif);font-size:16px}.result-item .pill{font-family:var(--sans);font-size:10px}.badge-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px 10px;margin:22px 0}.stamp-button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:9px;min-height:150px;padding:8px}.stamp{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;width:112px;height:112px;border:3px double currentColor;border-radius:50%;color:var(--seal);transform:rotate(-9deg);font-family:var(--serif);isolation:isolate}.stamp::before{content:"";position:absolute;inset:6px;border:1px solid currentColor;border-radius:50%;opacity:.7}.stamp .stamp-title{font-size:18px;letter-spacing:2px;line-height:1.5}.stamp .stamp-sub{font-family:var(--sans);font-size:8px;letter-spacing:1px;margin:5px 0;max-width:84px;text-align:center}.stamp .stamp-date{font-family:var(--sans);font-size:8px;letter-spacing:1px}.stamp.pending{color:#b0baa3;border-style:dashed;border-width:1px}.stamp.pending::before{border-style:dashed}.stamp.pending .stamp-title{font-size:16px}.stamp-button>span{font-family:var(--serif);font-size:15px;letter-spacing:1px}.stamp-button>small{font-size:10px;color:#95a088}.stamp.green{color:#4f7d67}.stamp.gold{color:#9e824c}.stamp.blue{color:#5b7e94}.stamp.large{width:164px;height:164px;margin:20px auto}.stamp.large .stamp-title{font-size:28px}.stamp.large .stamp-sub{font-size:11px;max-width:126px}.stamp.large .stamp-date{font-size:10px}.stamp.is-new{animation:stamp-press .7s cubic-bezier(.2,.7,.3,1) both}@keyframes stamp-press{0%{opacity:0;transform:translateY(-50px) scale(1.8) rotate(-16deg)}55%{opacity:1;transform:translateY(1px) scale(.95) rotate(-9deg)}100%{transform:translateY(0) scale(1) rotate(-9deg)}}.stamp-celebration{position:relative}.stamp-celebration::after{content:"";position:absolute;left:50%;top:50%;width:150px;height:150px;border:1px solid #b69d6177;border-radius:50%;pointer-events:none;animation:seal-ring .7s ease-out forwards}@keyframes seal-ring{from{transform:translate(-50%,-50%) scale(.7);opacity:1}to{transform:translate(-50%,-50%) scale(1.7);opacity:0}}
  /* Dialogs hold decisions; the paper stays uncluttered. */
  dialog{border:1px solid #e0e5d8;border-radius:19px;background:#fafbf4;color:var(--ink);padding:0;width:min(460px,calc(100vw - 30px));max-height:calc(100dvh - 44px);overflow:auto;box-shadow:0 30px 100px #173b5133}dialog::backdrop{background:#102d3c65;backdrop-filter:blur(5px)}.dialog-inner{padding:26px}.dialog-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px}.dialog-header h2{font-family:var(--serif);font-size:26px;font-weight:400;line-height:1.5}.dialog-header .icon-button{width:32px;height:32px;flex-shrink:0}.dialog-description{font-size:12px;color:var(--muted);line-height:1.9;margin-bottom:18px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px;font-size:12px}.field input,.field select{width:100%;font-size:16px}.switch-row{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.switch-row span small{display:block;color:#8b9983;font-size:10px;margin-top:3px}.dialog-actions{display:flex;gap:10px;margin-top:23px;justify-content:flex-end;flex-wrap:wrap}.outcome-options{display:flex;flex-direction:column;gap:9px;margin:18px 0}.outcome-button{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid #d1ddc5;border-radius:11px;background:#f7faef;text-align:left;min-height:67px}.outcome-button>svg{color:#78946a}.outcome-button strong{font-size:14px;font-weight:500;display:block}.outcome-button small{font-size:11px;color:#8b9a7f;display:block;margin-top:4px}.outcome-button:disabled small{color:#768469}.toast{position:fixed;bottom:105px;left:50%;transform:translate(-50%,15px);background:#1b3f4beb;color:#fff9e8;padding:11px 18px;font-size:12px;border-radius:11px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100;max-width:calc(100vw - 40px);width:max-content;text-align:center;box-shadow:0 5px 20px #183c3922}.toast.visible{opacity:1;transform:translate(-50%,0)}.storage-alert{padding:10px 14px;border:1px solid #d9b67d;background:#fff4d8;color:#7e5f27;font-size:12px;margin:10px auto;max-width:900px;border-radius:8px}.source-list{font-size:12px;line-height:1.9;color:#687e75}.source-list a{color:#245b65;overflow-wrap:anywhere}.source-list p{margin:12px 0}.source-list details{margin-top:14px}.source-list summary{cursor:pointer}.source-list pre{white-space:pre-wrap;font-size:10px;max-height:180px;overflow:auto}.mini-history{margin:18px 0}.history-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #e0e6d8;font-size:11px;color:#71856d}.history-row strong{font-weight:400;color:#4c6e58}.view-enter{animation:content-arrive .3s ease-out}.install-hint{display:flex;align-items:center;gap:8px;font-size:11px;color:#7a8e7b;margin-top:12px}.letter-spaced{letter-spacing:2px}
}
@layer responsive {
  @media(min-width:1250px){.book-board{min-height:672px}.sheet-content{height:586px}.paper-sheet{padding-top:35px}.cover-desk{padding-top:38px;min-height:575px}.passport-object{width:340px;height:469px}.passport-cover{padding-top:45px}.cover-emblem{width:165px;height:165px}}
  @media(max-width:1000px){.app-shell{padding:0 25px}.app-header{height:91px}.paper-sheet{padding-left:25px;padding-right:25px}.paper-right{padding-left:29px}.section-title{font-size:25px}.book-board{min-height:627px}.sheet-content{height:548px}.poem-line{font-size:24px;letter-spacing:2px}.poem-heading h2{font-size:26px}.question-prompt{font-size:24px}.answer-option{font-size:18px}.bookmarks{right:-14px}.bookmark{min-width:30px;padding-left:7px;padding-right:7px}.desktop-footer{padding:0 15px 20px}.guide-quote{font-size:17px}.identity-name{font-size:21px}}
  @media(max-width:700px){body{font-size:14px}.app-shell{padding:0 18px 110px}.app-header{height:82px;gap:10px}.brand{font-size:23px;gap:9px}.brand-mark{width:34px;height:39px;font-size:24px}.brand small{font-size:8px;letter-spacing:2px}.header-actions{gap:5px}.save-status{display:none}.profile-button{gap:6px;padding-right:10px;font-size:11px}.profile-button>span:first-child{width:25px;height:25px;font-size:16px}.main-nav{position:fixed;bottom:max(14px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(440px,calc(100vw - 30px));margin:0;padding:6px;z-index:20;background:#f5f8f0f2;border-color:#e1e8d8;box-shadow:0 8px 36px #173b5121;backdrop-filter:blur(18px)}.nav-item{padding:9px 7px;flex-direction:column;gap:4px;font-size:10px;border-radius:14px;min-height:52px}.nav-item svg{width:19px;height:19px}.desktop-footer{justify-content:center;margin-top:18px;padding:0}.desktop-footer>span{display:none}#main{min-height:calc(100dvh - 230px)}.cover-intro{padding-top:9px}.cover-intro p{font-size:10px;letter-spacing:2px}.cover-desk{padding:36px 15px 28px;min-height:480px}.passport-object{width:277px;height:391px}.passport-cover{padding:31px 24px 23px}.cover-title{font-size:35px}.cover-subtitle{font-size:9px;margin-bottom:16px}.cover-emblem{width:137px;height:137px;margin-bottom:13px}.cover-owner{font-size:11px;margin-bottom:12px}.open-passport{font-size:11px;min-height:42px}.cover-caption{font-size:10px}.cover-status{margin-top:17px;gap:14px;font-size:11px}.cover-status strong{font-size:22px}.cover-status>span+span{padding-left:14px}.workbench{max-width:480px}.bench-heading{padding:0 4px 17px;gap:8px}.bench-heading h1{font-size:23px;letter-spacing:1px}.bench-heading p{font-size:10px}.book-tools{gap:6px}.book-tools .text-button{font-size:10px}.book-tools .icon-button{width:34px;height:34px}.book-stage{padding:0 5px 9px}.book-board{display:block;min-height:590px}.paper-left{display:none}.paper-right{padding:24px 24px 47px;border-radius:7px 12px 12px 7px}.sheet-content{height:auto;min-height:510px;max-height:none;overflow:visible;padding-bottom:10px}.book-board::after{left:0;transform:none;width:13px;background:linear-gradient(90deg,#49685117,transparent)}.book-board::before{inset:5px -4px -6px 1px;border-radius:6px 13px 13px 6px}.page-number{font-size:9px;bottom:18px;right:24px}.bookmarks{display:none}.book-pager{padding:0 1px;gap:10px;margin-top:13px}.book-pager>span{font-size:9px;letter-spacing:0}.book-pager button{font-size:10px}.book-pager .pager-buttons{gap:8px}.fallback-leaf{width:100%;left:0}.mobile-summary{display:block}.mobile-identity{display:flex;align-items:center;justify-content:space-between;margin:10px 0 0}.mobile-identity .identity-name{font-size:22px}.mobile-summary .stat-triplet{padding:14px 0;margin:15px 0}.mobile-summary .stat-triplet strong{font-size:29px}.mobile-summary .stat-triplet span{font-size:10px}.ticket{margin:17px 0;padding:17px 20px}.ticket-title{font-size:25px}.ticket .landscape{max-height:130px;margin:14px auto}.ticket-bottom{margin-top:15px}.daily-review{padding:14px 0}.last-stamp{margin-top:16px}.poem-heading{margin:26px 0 20px}.poem-heading h2{font-size:29px}.poem-heading.long h2{font-size:23px}.poem-lines{margin:30px 0;gap:19px}.poem-line{font-size:27px;letter-spacing:3px}.poem-lines.with-pinyin .poem-line{font-size:26px}.poem-lines.with-pinyin{gap:17px;margin:25px 0}.py{font-size:11px;word-spacing:4px}.practice-controls{padding-top:17px}.practice-controls .button{min-height:43px}.practice-controls .button.primary{min-height:47px}.practice-status{margin:12px 0}.poem-topline .pill{font-size:9px}.section-title{font-size:27px;margin-top:13px}.challenge-tile{padding:19px 0}.question-prompt{margin:25px 0;font-size:27px}.answer-option{font-size:20px;min-height:54px}.badge-grid{gap:20px 8px}.stamp{width:120px;height:120px}.verse-small .poem-line{font-size:24px}.verse-small .poem-lines{gap:10px;margin:20px 0}.verse-small .poem-lines.with-pinyin{gap:10px}.verse-small .poem-lines.with-pinyin .poem-line{font-size:23px}.sequence-slot{min-height:35px}.sequence-piece{font-size:19px;min-height:43px}.dialog-inner{padding:24px}.dialog-header h2{font-size:24px}.toast{bottom:98px}.poetic-caption{font-size:15px}}
  @media(max-width:700px){.poem-heading{margin:18px 0 14px}.poem-lines.with-pinyin{gap:11px;margin:18px 0}.workbench[data-view=library] .sheet-content,.workbench[data-view=stamps] .sheet-content{height:510px;overflow:auto}.ticket .landscape{max-height:118px;width:auto;max-width:100%}}
  @media(min-width:701px){.ticket .landscape{max-height:128px;width:auto;max-width:100%}}
  @media(max-width:360px){.app-shell{padding-left:12px;padding-right:12px}.header-name{max-width:56px}.profile-button{padding-right:7px}.passport-object{width:253px;height:366px}.passport-cover{padding-top:27px}.cover-emblem{width:124px;height:124px;margin-bottom:11px}.cover-subtitle{margin-bottom:13px}.cover-title{font-size:32px}.cover-desk{padding-top:30px;min-height:444px}.cover-owner{margin-bottom:10px;font-size:10px}.cover-status{gap:10px;font-size:10px}.cover-status>span+span{padding-left:10px}.bench-heading h1{font-size:21px}.bench-heading p{font-size:9px}.paper-right{padding-left:21px;padding-right:21px}.poem-line{font-size:24px;letter-spacing:2px}.poem-lines.with-pinyin .poem-line{font-size:23px}.py{word-spacing:1px;font-size:10px}.poem-heading.long h2{font-size:21px}.section-title{font-size:24px}.question-prompt{font-size:23px}.answer-option{font-size:18px}.stamp{width:103px;height:103px}.stamp .stamp-title{font-size:16px}.stamp .stamp-sub{font-size:8px}.button{padding-left:12px;padding-right:12px}.sequence-piece{font-size:17px}.header-actions .profile-button>span:last-child{max-width:65px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.book-tools .text-button{display:none}}
  @media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
  .reduce-motion *,.reduce-motion *::before,.reduce-motion *::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  @media(hover:none){.button,.toggle-chip,.filter-chip{min-height:44px}.book-pager button{min-height:44px}.poem-row{min-height:70px}.icon-button{min-width:40px;min-height:40px}.page-corner{width:44px;height:44px}}
}
