:root{
  --bg:#f5f0e6;--paper:#fbf8f1;--rule:#e2d8c3;--margin:rgba(192,18,31,.38);
  --ink:#1d2230;--muted:#5b6475;--navy:#1b2a4e;--blue:#1f2f7a;
  --green:#16723a;--red:#c0121f;--amber:#b35407;
  --hand:"Kalam","Segoe Print",cursive;--pen:"Caveat","Kalam",cursive;--serif:"Source Serif 4",Georgia,serif;--ui:"IBM Plex Sans",Arial,sans-serif;
  --line:34px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ui)}
button,input,select{font:inherit}
a{color:inherit}
.app{display:grid;grid-template-columns:340px 1fr;height:100vh;min-height:720px}
.list{overflow:auto;border-right:1px solid rgba(42,56,80,.13);background:#f1ebde}
.list-head{position:sticky;top:0;z-index:3;background:#f1ebde;padding:16px 18px 12px;border-bottom:1px solid rgba(42,56,80,.13)}
.brand{display:flex;align-items:center;gap:8px;font-size:22px;line-height:1;text-decoration:none}
.brand .m{font-family:var(--serif);font-weight:600;color:var(--navy);margin-right:0}
.brand .b{font-family:var(--hand);font-weight:700;color:var(--red);margin-left:-5px;position:relative;top:1px}
.list-head h1{font:600 26px var(--serif);margin:12px 0 0}
.list-head small{color:var(--muted);font-size:12px;letter-spacing:.08em;font-weight:600}
.search,.year-select{width:100%;margin-top:10px;padding:9px 11px;border:1px solid rgba(42,56,80,.18);border-radius:10px;background:#fffdf7;font:14px var(--ui);color:var(--ink)}
.year-select{margin-top:7px}
.papers{display:flex;gap:6px;margin-top:9px}
.papers a,.papers button{flex:1;border:1px solid rgba(42,56,80,.18);border-radius:999px;background:#fffdf7;padding:5px 0;font-size:12px;font-weight:600;color:var(--navy);text-align:center;text-decoration:none;cursor:pointer}
.papers a.on,.papers button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.list-tools{display:flex;gap:8px;align-items:center;margin-top:9px;color:var(--muted);font-size:11px}
.list-tools a{font-weight:700;color:var(--navy);text-decoration:none}
.row{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid rgba(42,56,80,.1);background:transparent;padding:12px 18px;text-decoration:none;color:inherit}
.row:hover,.row.on{background:#fffaf0;box-shadow:inset 3px 0 0 var(--red)}
.row small{display:block;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.04em}
.row b{display:-webkit-box;font:500 15px/1.4 var(--serif);margin-top:4px;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row[hidden]{display:none}
.detail{overflow:auto}
.wrap{max-width:900px;margin:0 auto;padding:18px 24px 60px}
.crumbs{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin-bottom:10px}
.crumbs a{text-decoration:none}
.crumbs .back{display:none;border:0;background:none;color:var(--navy);font-weight:600;padding:0;text-decoration:none}
.crumbs .topic{font-weight:600;color:var(--navy)}
.sheet{position:relative;background:var(--paper);border-radius:6px;box-shadow:0 1px 0 rgba(0,0,0,.04),0 14px 30px -22px rgba(28,34,48,.5);
  background-image:linear-gradient(90deg,transparent 0 47px,var(--margin) 47px 48.5px,transparent 48.5px),repeating-linear-gradient(transparent 0 calc(var(--line) - 1px),var(--rule) calc(var(--line) - 1px) var(--line));
  background-position:0 0,0 6px;padding:22px 26px 26px 72px}
.booklet{display:grid;grid-template-columns:150px 1fr 150px;gap:22px;align-items:center;background:var(--paper);margin:-22px -26px 0 -72px;padding:22px 26px 22px 26px;border-bottom:1.5px solid var(--rule);border-radius:6px 6px 0 0}
.bbox{border:2px solid var(--muted);background:#fffdf8;text-align:center}
.bbox .cap{font:600 11px var(--ui);letter-spacing:.08em;color:var(--muted);border-bottom:2px solid var(--muted);padding:6px 4px}
.bbox .big{font:600 25px var(--serif);color:var(--ink);padding:8px 4px 0}
.bbox .sub{font:500 13px var(--ui);color:var(--muted);padding:2px 4px 9px}
.bbox.time .big{font:700 34px/1 var(--pen);color:var(--red);padding-top:10px}
.qtext{font:500 21px/1.5 var(--serif);color:var(--ink);margin:0}
.qtext.long{font-size:16px;line-height:1.55;max-height:290px;overflow:auto;padding-right:6px}
.qtext .part{display:block;margin-top:8px;font-weight:600}
.actions{display:flex;gap:8px;margin:14px 0 0;justify-content:flex-end;flex-wrap:wrap}
.btn{border-radius:999px;padding:9px 16px;font-weight:600;font-size:14px;border:1px solid var(--navy);background:var(--navy);color:#fff;display:inline-flex;align-items:center;gap:7px;text-decoration:none;cursor:pointer}
.btn.ghost{background:#fffdf7;color:var(--navy);border-color:rgba(27,42,78,.3)}
.btn.ghost.on{background:#fff3e6;border-color:var(--amber);color:var(--amber)}
.sec{margin-top:var(--line)}
.h{font:700 31px/var(--line) var(--pen);color:var(--red);margin:0 0 6px;display:inline-block;position:relative}
.h::after{content:"";position:absolute;left:-2px;right:-6px;bottom:-3px;height:6px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 6' preserveAspectRatio='none'%3E%3Cpath d='M1 4 Q60 1 120 3.5 T199 2.5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 6' preserveAspectRatio='none'%3E%3Cpath d='M1 4 Q60 1 120 3.5 T199 2.5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat}
.h.green{color:var(--green)} .h.amber{color:var(--amber)}
.hand{font:400 19px/var(--line) var(--hand)}
.ink{color:var(--blue)}
.task{margin:2px 0 0}
.directive{display:flex;gap:14px;align-items:flex-start;margin-top:6px}
.dword{flex:none;position:relative;font:700 21px/var(--line) var(--hand);color:var(--red);padding:0 10px}
.dword svg{position:absolute;inset:-4px -6px;width:calc(100% + 12px);height:calc(100% + 8px);overflow:visible}
.dmean{color:var(--muted)}
.items{list-style:none;margin:0;padding:0}
.items li{display:grid;grid-template-columns:34px 1fr auto;gap:8px;align-items:start}
.items .g{width:34px;height:var(--line);display:flex;align-items:center;justify-content:center}
.num{font:700 19px var(--pen);width:28px;height:28px;display:grid;place-items:center;position:relative;color:var(--red);margin-top:3px}
.num svg{position:absolute;inset:0;overflow:visible}
.words{font:600 20px/var(--line) var(--pen);color:var(--muted);white-space:nowrap;padding-left:10px}
.budget{color:var(--muted);font:600 20px/var(--line) var(--pen);margin:0}
.plan{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;margin-top:4px}
.step{position:relative;font:400 18px/1.35 var(--hand);color:var(--blue);padding:6px 12px;margin:6px 4px}
.step svg.loop{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.arrow{width:30px;height:16px;flex:none}
.two{display:grid;grid-template-columns:1fr 1fr;gap:30px}
.two .items li{grid-template-columns:34px 1fr}
.next{position:relative;margin-top:calc(var(--line) * 1.2);padding:12px 18px 14px}
.next svg.loop{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.next p{margin:0;font:700 19px/var(--line) var(--hand);color:var(--red)}
.turn{display:flex;justify-content:space-between;align-items:center;margin-top:18px;gap:10px}
.turn small{color:var(--muted)}
.source-list{margin:0;padding:0;list-style:none}
.source-list li{margin:0 0 12px}
.source-link{display:block;text-decoration:none;color:var(--blue);font:600 16px/1.35 var(--hand)}
.source-link span{display:block;color:var(--muted);font:500 13px/1.45 var(--ui);margin-top:2px}
.source-note{font:500 13px/1.5 var(--ui);color:var(--muted);margin:0 0 10px}
.collection-title{font:600 clamp(28px,4vw,44px)/1.15 var(--serif);margin:0;color:var(--ink)}
.collection-copy{font:400 19px/1.7 var(--hand);color:var(--blue);margin:8px 0 0}
.year-grid,.paper-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:8px}
.year-card,.paper-card{display:block;text-decoration:none;border:1.5px solid rgba(27,42,78,.24);background:#fffdf7;border-radius:6px;padding:12px 14px}
.year-card strong,.paper-card strong{display:block;font:700 25px var(--serif);color:var(--navy)}
.year-card span,.paper-card span{display:block;color:var(--muted);font:500 13px var(--ui);margin-top:2px}
.year-card:hover,.paper-card:hover{border-color:var(--red);box-shadow:inset 3px 0 0 var(--red)}
.collection-list{margin:4px 0 0;padding:0;list-style:none}
.collection-list li{margin-bottom:7px}
.collection-list a{font:500 17px/1.5 var(--hand);color:var(--blue);text-decoration:none}
.collection-list a:hover{text-decoration:underline}
.empty-list{padding:18px;color:var(--muted);font-size:13px}
.pyq-noscript{padding:10px 18px;color:var(--muted);font-size:12px}
@media (max-width:860px){
  .app{display:block;height:auto;min-height:0}
  .list{border:0;min-height:100vh}
  .app.reading .list{display:none}
  .app:not(.reading) .detail{display:none}
  .crumbs .back{display:inline;white-space:nowrap}
  .crumbs .subj{display:none}
  .crumbs{justify-content:space-between}
  .wrap{padding:12px 10px 96px}
  .sheet{padding:16px 14px 20px 40px;background-image:linear-gradient(90deg,transparent 0 27px,var(--margin) 27px 28.5px,transparent 28.5px),repeating-linear-gradient(transparent 0 calc(var(--line) - 1px),var(--rule) calc(var(--line) - 1px) var(--line))}
  .booklet{grid-template-columns:1fr 1fr;gap:12px;margin:-16px -14px 0 -40px;padding:14px}
  .booklet .qtext{grid-column:1/-1;grid-row:2}
  .qtext{font-size:18px}
  .qtext.long{font-size:15px;max-height:none}
  .bbox .big{font-size:21px}
  .actions{position:fixed;left:0;right:0;bottom:0;z-index:5;margin:0;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(245,240,230,.96);border-top:1px solid rgba(42,56,80,.13);justify-content:stretch}
  .actions .btn{flex:1;justify-content:center;padding:11px}
  .actions .btn.ghost{flex:0 0 auto}
  .h{font-size:28px}
  .hand{font-size:17.5px}
  .directive{flex-direction:column;gap:2px}
  .two{grid-template-columns:1fr;gap:0}
  .two .sec+.sec{margin-top:var(--line)}
  .items li{grid-template-columns:28px 1fr}
  .items li .words{grid-column:2;padding:0;margin-top:-6px;line-height:26px}
  .items .g{width:28px}
  .plan{flex-direction:column;align-items:flex-start}
  .arrow{transform:rotate(90deg);margin-left:18px;width:22px}
  .year-grid,.paper-grid{grid-template-columns:1fr}
}
