:root{--bg:#f4f5f1;--paper:#fff;--ink:#1a3030;--muted:#697773;--line:#dfe5df;--accent:#164e47;--pale:#e9f1ea;--warm:#f8eddb;--danger:#9b4440;--shadow:0 7px 28px #20312a06;font-family:ui-sans-serif,system-ui,-apple-system,"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;color:var(--ink);line-height:1.7;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button{border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);padding:11px 17px;cursor:pointer;font-size:14px;font-weight:600;transition:background .15s,transform .15s}button:hover{background:var(--pale)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c79650;outline-offset:3px}.primary{background:var(--accent);color:white;border-color:var(--accent)}.primary:hover{background:#21675d}.flat{border:0;background:transparent}.small{font-size:12px;padding:7px 11px}.danger{color:var(--danger)}.muted{color:var(--muted)}.tiny{font-size:12px}.hidden,[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:32px;letter-spacing:-.025em;line-height:1.4;margin-bottom:12px}h2{font-size:18px;line-height:1.5;margin-bottom:12px}h3{font-size:15px;margin-bottom:10px}p{margin-bottom:16px}strong{font-weight:700}.eyebrow{font-size:11px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin-bottom:10px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:18px}.card{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:25px;box-shadow:var(--shadow)}.chip{display:inline-flex;gap:7px;align-items:center;white-space:nowrap;font-size:11px;border-radius:999px;padding:5px 10px;background:var(--pale);color:var(--accent)}.chip.warm{background:var(--warm);color:#886126}.brandmark{background:var(--accent);color:white;display:inline-grid;place-items:center;width:42px;height:42px;border-radius:13px;font-family:serif;font-size:23px}.brand{display:flex;align-items:center;gap:11px}.brand strong{font-size:17px}.brand small{display:block;font-size:10px;letter-spacing:.16em;color:var(--muted)}.layout{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:34px 22px;background:#fcfcf9;border-right:1px solid var(--line);display:flex;flex-direction:column}.sidebar nav{display:grid;gap:8px;margin-top:46px}.navbutton{text-align:left;display:flex;gap:13px;align-items:center;border:0;background:transparent;padding:13px 15px;color:var(--muted)}.navbutton.active{color:var(--accent);background:var(--pale)}.navicon{width:20px;height:20px;display:inline-block}.sidebarfoot{margin-top:auto;border-top:1px solid var(--line);padding-top:20px;font-size:11px;color:var(--muted)}.main{width:100%;max-width:1230px;padding:30px 44px 50px;margin:0 auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px;gap:12px}.topbar .appname{font-size:12px;color:var(--muted)}.notice{border:1px solid #e4d8bf;background:#fcf6e9;padding:12px 16px;border-radius:12px;margin-bottom:20px;font-size:12px}.notice.neutral{background:var(--pale);border-color:#d5e1d7}.dashboard{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(265px,1fr);gap:22px}.hero{background:var(--accent);color:white;border:0;padding:31px}.hero .eyebrow,.hero .muted{color:#cee0d9}.hero h1{font-size:29px}.hero .big{font-size:64px;font-weight:700;line-height:1.15;letter-spacing:-.06em}.hero .count-label{font-size:14px;margin-left:6px;color:#d5e2da}.hero button{width:100%;margin-top:24px;border:0;padding:14px;background:#f8fbf4;color:var(--accent)}.hero .row{align-items:baseline}.stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #ffffff35;margin-top:24px;padding-top:19px}.stats strong{display:block;font-size:24px}.stats span{font-size:11px;color:#c9ded6}.scope-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);font-size:13px}.scope-row:last-child{border:0}.scope-row input{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0}.scope-row small{display:block;color:var(--muted);font-size:11px}.scope-row span:last-child{margin-left:auto;color:var(--muted);font-size:12px}.compact{display:flex;align-items:center;gap:8px;font-size:13px}.compact input{width:88px}.fields{display:grid;gap:16px}.fields label{font-size:13px;color:var(--muted)}input,select,textarea{border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--ink);background:white;max-width:100%}input[type=number]{padding-right:5px}select{font-size:13px}textarea{width:100%;min-height:98px;resize:vertical;font-size:14px;line-height:1.8}.sectiontitle{margin:28px 0 14px;display:flex;align-items:center;justify-content:space-between}.topicitem{padding:16px 0;border-bottom:1px solid var(--line)}.topicitem:last-child{border:0}.topicitem .row{justify-content:space-between}.topicitem small{color:var(--muted);font-size:11px}.topicitem strong{font-size:13px}.progress{height:5px;border-radius:99px;background:var(--pale);margin:18px 0 25px;overflow:hidden}.progress div{height:100%;background:var(--accent);transition:width .2s}.studycard{padding:32px;max-width:880px;margin:auto}.question{font-size:23px;line-height:1.85;letter-spacing:.01em;margin:22px 0 24px;font-weight:600;white-space:pre-wrap;overflow-wrap:anywhere}.studycard .reveal{width:100%;margin-top:18px;padding:15px}.answer{border-top:1px solid var(--line);padding-top:26px;margin-top:25px}.answer p{font-size:16px;line-height:2;white-space:pre-wrap;overflow-wrap:anywhere}.checklist{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}.checklist span{font-size:12px;padding:6px 10px;background:var(--pale);border-radius:8px}.notenote{border-left:3px solid #c79a58;padding:9px 15px;font-size:12px;background:#fbf7ef;margin:18px 0;white-space:pre-wrap}.sourcebox{padding:14px 0;border-top:1px solid var(--line);margin-top:19px}.ratinggrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px}.ratinggrid button{font-size:12px;padding:13px 4px}.ratinggrid small{display:block;font-weight:400;color:var(--muted);margin-top:4px}.ratinggrid button:first-child{background:#faf0ed;color:var(--danger);border-color:#eddbd5}.ratinggrid button:nth-child(3){background:var(--accent);color:white;border-color:var(--accent)}.ratinggrid button:nth-child(3) small{color:#d3e4dc}.listtools{display:flex;gap:10px;margin:20px 0}.listtools input{flex:1;min-width:0}.qitem{border-bottom:1px solid var(--line);padding:21px 0}.qitem:last-child{border:0}.qtitle{font-size:15px;line-height:1.8;margin:10px 0;overflow-wrap:anywhere}.qmeta{font-size:11px;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap;align-items:center}.qitem .actions{margin-top:11px;display:flex;gap:7px}.empty{text-align:center;padding:37px 20px;color:var(--muted);font-size:14px}.settingsgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settingsgrid .wide{grid-column:1/-1}.kvrow{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.kvrow:last-child{border:0}.bigstat{font-size:40px;letter-spacing:-.03em}.authwrap{max-width:490px;margin:6vh auto;padding:20px}.authwrap>.brand{justify-content:center;margin-bottom:30px}.authwrap .card{padding:32px}.authwrap h1{font-size:27px}.authwrap label{display:grid;gap:7px;font-size:12px;color:var(--muted);margin-bottom:17px}.authwrap button.full{width:100%}.autherror{font-size:12px;color:var(--danger);margin-top:16px}.loading{text-align:center;padding:20vh 20px}.loading h1{font-size:23px;margin-top:20px}.loading p{color:var(--muted);font-size:13px}.mobilebrand{display:none}.mobileNav{display:none}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);max-width:min(90vw,630px);padding:14px 23px;background:#203631;color:white;box-shadow:0 8px 30px #0002;border-radius:12px;z-index:20;font-size:13px}dialog{border:1px solid var(--line);border-radius:20px;padding:0;width:min(1160px,96vw);max-height:94vh}dialog::backdrop{background:#142a2780}.dialoghead{padding:15px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);position:sticky;top:0;background:white;z-index:1}.dialoghead h2{font-size:14px;margin:0}.iconbutton{border:0;background:transparent;font-size:17px;padding:5px 10px}.sourcegrid{display:grid;grid-template-columns:300px 1fr}.sourcetext{padding:23px;border-right:1px solid var(--line);font-size:13px;line-height:1.95;white-space:pre-wrap}.sourcepane{background:#eaede8;padding:14px}.pagetabs{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.pagetabs .active{background:var(--accent);color:white}.pageholder{max-height:72vh;overflow:auto;text-align:center}.pageholder img{width:100%;height:auto;display:block;background:white;margin:auto}.offlinecount{margin:8px 0 0}.footerline{font-size:11px;color:var(--muted);margin-top:25px}.intro-note{padding:16px;background:var(--pale);border-radius:12px;font-size:12px;margin-top:20px}.finish{text-align:center;max-width:680px;margin:40px auto}.finish .brandmark{margin-bottom:20px}.finish h1{font-size:29px}a{color:var(--accent)}@media(max-width:1080px){.layout{grid-template-columns:195px 1fr}.sidebar{padding:28px 15px}.main{padding:25px}.dashboard{grid-template-columns:1fr}.settingsgrid{grid-template-columns:1fr}.settingsgrid .wide{grid-column:auto}.brand strong{font-size:15px}.sourcegrid{grid-template-columns:240px 1fr}}
@media(max-width:680px){.layout{display:block}.sidebar{display:none}.main{padding:20px 18px 110px}.mobilebrand{display:flex}.topbar{margin-bottom:23px;align-items:center}.topbar .appname{display:none}.topbar .row{gap:6px}.topbar .chip{font-size:10px}.brandmark{width:34px;height:34px;border-radius:10px;font-size:19px}.brand strong{font-size:14px}.brand small{font-size:9px}.topbar button.small{padding:5px 7px;font-size:11px}h1{font-size:25px}.hero{padding:24px}.hero h1{font-size:25px}.hero .big{font-size:57px}.card{padding:22px;border-radius:17px}.dashboard{gap:17px}.mobileNav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#fcfcf9f5;border-top:1px solid var(--line);justify-content:space-around;padding:10px 10px calc(10px + env(safe-area-inset-bottom));z-index:10;backdrop-filter:blur(12px)}.mobileNav .navbutton{display:grid;justify-items:center;gap:3px;font-size:10px;padding:7px 24px;border-radius:10px}.navicon{width:19px;height:19px}.studycard{padding:22px 19px}.question{font-size:20px;line-height:1.9}.ratinggrid{grid-template-columns:1fr 1fr;gap:8px}.ratinggrid button{font-size:12px;padding:12px 5px}.answer p{font-size:15px}.checklist span{font-size:11px}.listtools{flex-wrap:wrap}.listtools input{flex-basis:100%}.listtools select{flex:1}.settingsgrid{gap:17px}.qtitle{font-size:14px}#toast{bottom:100px;font-size:12px;width:max-content}.sourcegrid{grid-template-columns:1fr}.sourcetext{border-right:0;border-bottom:1px solid var(--line);padding:17px;font-size:12px;max-height:200px;overflow:auto}.sourcepane{padding:10px}.dialoghead{padding:13px 15px}.dialoghead h2{font-size:12px}.pageholder{max-height:63vh}.authwrap{margin:3vh auto}.authwrap .card{padding:24px}.intro-note{font-size:11px}.notice{font-size:11px;padding:10px 12px}.footerline{line-height:1.9}.finish{margin:25px auto}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* v0.2.2: editorial rank, not difficulty. Text labels never rely on color alone. */
.rankbadge{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;border:1px solid;border-radius:7px;padding:5px 9px;font-weight:750;font-size:13px;line-height:1.5}
.rank-A{color:#194e47;background:#e4f1e9;border-color:#87b9a7}.rank-B{color:#795322;background:#fcf4df;border-color:#d8bf84}.rank-C{color:#5a6470;background:#eff2f4;border-color:#cbd1d7}.rank-U{color:#6b6972;background:#f5f3f7;border-color:#d5d0da}
.rankcontrols{border-bottom:1px solid var(--line,#e0e6e1);padding:2px 0 18px;margin:0 0 15px}.rankcontrols h3{font-size:15px;margin:8px 0}.rankbuttons{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.rankbuttons button{padding:10px 12px;min-height:42px}.rankbuttons button span{font-size:11px;margin-left:5px;opacity:.8}.rankbuttons button.selected{background:#194e47;color:white;border-color:#194e47}.rankcontrols p{margin:8px 0}.ranklegend{font-size:12px;line-height:1.8;color:#64726e}.ranklegend summary,.rankdetails summary{cursor:pointer;padding:6px 0;font-weight:600}.ranklegend dt{font-weight:750;color:#213c38}.ranklegend dd{margin:2px 0 9px}.rankdetails{border-left:3px solid #c5d6ce;padding:0 12px;margin:15px 0;font-size:14px;line-height:1.75}.rankdetails p{margin:9px 0}.rankdetails a{color:#235e54;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.rankuses{display:inline-block;font-size:11px;color:#6d7773;font-weight:400;margin-left:8px}.qitem .rankdetails{font-size:13px}.libraryrank{padding-top:18px;padding-bottom:10px;margin-bottom:18px}.libraryrank .rankcontrols{border:0;margin:0;padding:0}.ranklegend p{font-size:12px}.studycard .question{margin-top:18px}@media(max-width:600px){.rankuses{display:block;margin-left:0}.rankbuttons{gap:6px}.rankbuttons button{flex:1;padding:10px 6px;white-space:nowrap}.rankbadge{font-size:12px}.qmeta{flex-wrap:wrap}}

/* v0.2.3: context stays in the revealed answer, not beside the question. */
.answer-basis{margin-top:8px}.case-section{margin:28px 0}.case-section>h3{margin-bottom:14px}.case-note{border:1px solid var(--line,#dce5df);border-radius:12px;padding:20px;margin:12px 0;background:var(--paper,#fafbf7)}.case-note h4{font-size:18px;margin:8px 0 12px}.case-note .case-facts{font-size:15px;line-height:1.95;margin:10px 0 16px}.case-details summary{cursor:pointer;font-weight:700;font-size:14px}.case-details dl{margin:16px 0 0}.case-details dt{font-weight:700;font-size:14px;margin-top:16px}.case-details dd{margin:5px 0 0;font-size:15px;line-height:1.95}.case-citation{border-top:1px solid var(--line,#dce5df);margin-top:18px;padding-top:12px;font-size:12px;line-height:1.8;color:var(--muted,#657a79)}.case-citation .small{margin-top:8px}.exam-explanation{margin:24px 0}.exam-explanation>h3{margin-bottom:10px}.studycard .question{white-space:pre-line}.answer:empty{padding:0;border:0}.rankuses{white-space:normal}@media(max-width:600px){.case-note{padding:16px}.case-note h4{font-size:17px}.case-note .case-facts,.case-details dd{font-size:14px}.case-citation{overflow-wrap:anywhere}}
