:root{--ink:#27302a;--muted:#788177;--paper:#f6f3eb;--white:#fffdf8;--line:#dedfd3;--red:#b84731;--red-dark:#953b2b;--green:#315a48;--green-pale:#e8eee6;--gold:#caa972;--serif:"Hiragino Mincho ProN","Yu Mincho","Noto Serif CJK JP",serif;--sans:"Hiragino Kaku Gothic ProN","Yu Gothic","Noto Sans CJK JP",sans}
[hidden]{display:none!important}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.6}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--red);outline-offset:3px}a{color:inherit}.paper-grain{position:fixed;inset:0;pointer-events:none;z-index:10;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.58' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E")}.app-shell{display:grid;grid-template-columns:226px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;background:#ecece3;border-right:1px solid #d4d8cd;padding:29px 15px 25px;display:flex;flex-direction:column;z-index:2}.brand{display:flex;align-items:center;gap:11px;padding:4px 13px 45px}.brand-mark{display:grid;place-items:center;background:var(--red);color:#fffaf1;border-radius:3px;width:39px;height:39px;font-family:var(--serif);font-size:27px;line-height:1}.brand strong{font:600 22px/1.1 var(--serif);letter-spacing:.03em;display:block}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.1em;margin-top:3px}.side-eyebrow,.eyebrow{font-size:10px;font-weight:700;letter-spacing:.18em;color:var(--red)}.side-eyebrow{color:#959c8d;padding:0 14px 12px;white-space:nowrap}.main-nav{display:grid;gap:2px}.nav-item{width:100%;display:flex;align-items:center;gap:12px;background:transparent;border:0;text-align:left;color:#5a675d;padding:10px 12px;border-radius:4px;transition:background .2s,color .2s,transform .2s}.nav-item:hover{background:#e3e7da;transform:translateX(2px)}.nav-item.active{background:var(--green);color:white;box-shadow:0 5px 13px #315a4824}.nav-glyph{width:30px;height:30px;display:grid;place-items:center;font:20px var(--serif);border:1px solid currentColor;border-radius:2px;opacity:.86}.nav-item span:nth-child(2){font-weight:600;letter-spacing:.02em}.nav-item em{font-style:normal;margin-left:auto;font-size:10px;opacity:.55}.side-bottom{margin-top:auto;padding:0 11px}.side-note{border-top:1px solid #d5d8cc;padding-top:17px;display:flex;gap:10px;color:#7c877b;font:12px/1.75 var(--serif)}.side-note p{margin:0}.side-note-symbol{color:var(--red);font-size:19px;line-height:1}.text-action{border:0;background:transparent;padding:19px 0 0;color:var(--green);font-size:12px;font-weight:700;display:flex;justify-content:space-between;width:100%}.main{min-width:0;padding:0 4.6vw 70px;max-width:1700px;width:100%;margin:auto}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar-label{font-size:10px;letter-spacing:.16em;color:#939b91;font-weight:700;white-space:nowrap}.topbar-line{display:inline-block;height:1px;width:32px;background:#b7beb0;vertical-align:middle;margin:0 8px}.offline-pill{display:flex;align-items:center;gap:7px;color:#688170;background:#e9efe8;border:1px solid #d7e4d7;padding:5px 10px;border-radius:20px;font-size:10px;white-space:nowrap}.offline-pill span{width:6px;height:6px;background:#57886b;border-radius:50%}.view{display:none}.view.active{display:block;animation:enter .5s both}@keyframes enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hero{min-height:335px;background:var(--green);color:#fff9ee;display:grid;grid-template-columns:1.32fr .68fr;overflow:hidden;position:relative}.hero-copy{padding:42px clamp(32px,5.3vw,77px) 45px;position:relative;z-index:1}.eyebrow.light{color:#e2bb8a}.eyebrow.light span{padding:0 9px;opacity:.55}.hero h1{font:500 clamp(34px,4vw,57px)/1.31 var(--serif);letter-spacing:.035em;margin:17px 0 14px}.hero h1 span{color:#e8b785}.hero p{color:#d5e0d2;margin:0;line-height:1.85;max-width:480px;font-size:13px}.hero-cta,.small-primary{border:0;background:var(--red);color:#fffaf2;padding:11px 18px;font-size:12px;font-weight:700;display:inline-flex;gap:28px;align-items:center;justify-content:space-between;text-decoration:none;transition:background .2s,transform .2s}.hero-cta{margin-top:24px;min-width:137px}.hero-cta:hover,.small-primary:hover{background:var(--red-dark);transform:translateY(-2px)}.hero-art{position:relative;min-height:100%;background:#bfc9b6;overflow:hidden}.hero-art:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,#ffffff0a 0 1px,transparent 1px 25px);z-index:3}.sun{position:absolute;width:155px;height:155px;border-radius:50%;background:#d79c72;top:38px;right:70px;box-shadow:0 0 0 19px #dca78322}.mountain{position:absolute;width:140%;height:230px;transform:rotate(-17deg);border-radius:45% 55% 0 0}.mountain-one{background:#62846e;left:-21%;bottom:-65px}.mountain-two{background:#335b4b;left:25%;bottom:-135px;transform:rotate(19deg)}.vertical-ja{position:absolute;top:25px;left:24px;writing-mode:vertical-rl;font:21px/1.6 var(--serif);color:#315a48;letter-spacing:.15em;z-index:4}.hero-art-caption{position:absolute;bottom:25px;right:23px;z-index:4;text-align:right;font:17px/1.4 var(--serif);color:#f7eee3}.hero-art-caption small{display:block;font:8px var(--sans);letter-spacing:.18em}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:42px 0 17px}.section-heading h2{font:500 24px var(--serif);margin:3px 0 0}.section-aside{font-size:11px;color:#9aa297}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr) 1.5fr;background:#fffdf8;border:1px solid var(--line);min-height:115px}.summary-number,.summary-progress{padding:23px 24px}.summary-number{border-right:1px solid var(--line)}.summary-number strong{display:block;font:500 31px/1.1 var(--serif);color:var(--green)}.summary-number span,.summary-progress span,.summary-progress small{font-size:11px;color:#869187}.summary-number span{display:block;margin-top:7px}.summary-progress>div:first-child{display:flex;justify-content:space-between;align-items:center}.summary-progress strong{font:500 25px var(--serif);color:var(--red)}.progress-track{height:5px;background:#e8ebdf;border-radius:4px;margin:11px 0 8px}.progress-track span{display:block;height:100%;width:0;background:var(--red);border-radius:4px;transition:width .4s}.path-heading{margin-top:48px}.path-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.path-card{background:#fffdf9;border:1px solid var(--line);min-height:212px;padding:16px 17px 14px;text-align:left;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s,border-color .25s;position:relative;overflow:hidden}.path-card:hover{transform:translateY(-4px);box-shadow:0 12px 26px #25382c17;border-color:#b4c0af}.path-card:after{content:"";position:absolute;width:84px;height:84px;border:1px solid #e8e8dc;border-radius:50%;right:-31px;top:-35px}.path-index{font:700 9px var(--sans);letter-spacing:.16em;color:#a1a99e}.path-kanji{font:39px/1.2 var(--serif);color:var(--green);margin:11px 0 4px}.path-card:nth-child(3) .path-kanji,.path-card:nth-child(5) .path-kanji{color:var(--red)}.path-card strong{font:500 17px var(--serif)}.path-card p{font-size:10px;color:#919b91;line-height:1.5;margin:3px 0 15px;min-height:30px}.path-bottom{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);margin-top:auto;padding-top:10px;color:#748279;font-size:10px}.path-bottom b{font:500 17px var(--serif);color:var(--ink)}.path-bottom i{font-style:normal;font-size:17px;color:var(--red)}.overview-foot{display:flex;justify-content:space-between;color:#a8aea3;font-size:10px;margin-top:29px;letter-spacing:.07em}.library-banner{min-height:178px;background:#315a48;color:#fffaf0;padding:30px 47px;position:relative;overflow:hidden;display:flex;align-items:center}.library-banner:after{content:"";position:absolute;inset:auto -10% -96px auto;width:360px;height:250px;border:1px solid #ffffff26;border-radius:50%;transform:rotate(20deg);box-shadow:0 0 0 26px #ffffff08,0 0 0 59px #ffffff05}.library-banner h1{font:500 36px var(--serif);letter-spacing:.05em;margin:7px 0 5px}.library-banner p{color:#d0ddcf;font-size:12px;margin:0}.library-kanji{position:absolute;right:55px;top:0;font:150px/1.2 var(--serif);color:#ffffff1b}.workspace{background:#fffdf8;border:1px solid var(--line);border-top:0;padding:29px 34px;min-height:480px}.workspace-top{display:flex;justify-content:space-between;align-items:end;gap:12px}.workspace-top h2{font:500 24px var(--serif);margin:2px 0 0}.workspace-actions{display:flex;gap:8px}.ghost-button{border:1px solid #cdd6ca;background:transparent;color:var(--green);padding:9px 14px;font-size:12px;font-weight:700;transition:background .2s}.ghost-button:hover{background:#eef3ec}.filters{margin:22px 0 12px;border-bottom:1px solid var(--line);padding-bottom:15px;display:flex;gap:15px;justify-content:space-between}.search-box{min-width:220px;max-width:440px;flex:1;display:flex;align-items:center;gap:7px;border:1px solid #d9ded3;background:#fafbf6;padding:8px 12px}.search-box span{font-size:22px;line-height:1;color:#87978a}.search-box input{border:0;outline:0;background:transparent;width:100%;font-size:12px}.select-row{display:flex;gap:10px}.select-row label{font-size:11px;color:#748176;display:flex;align-items:center;gap:7px}.select-row select{min-width:106px;border:1px solid #d9ded3;background:#fafbf6;padding:8px;color:var(--ink);font-size:12px}.library-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.material-card{border:1px solid var(--line);background:#fffefb;min-height:112px;padding:15px 17px;display:flex;gap:12px;text-align:left;transition:border-color .2s,transform .2s,box-shadow .2s}.material-card:hover{border-color:#abc1ad;transform:translateY(-2px);box-shadow:0 5px 12px #2a453018}.material-main{flex:1;min-width:0}.material-meta{display:flex;gap:6px;margin-bottom:5px}.tag{font:700 9px var(--sans);padding:2px 6px;letter-spacing:.06em;color:var(--green);background:#ebf0e8}.tag.level{color:var(--red);background:#f6ebe5}.material-title{display:block;font:500 22px/1.3 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-reading{display:block;color:#a0a89c;font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-meaning{display:block;color:#6d786e;font-size:11px;margin-top:6px;line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.material-status{display:flex;align-items:start;justify-content:end;min-width:44px}.state-dot{font:700 9px var(--sans);border-radius:20px;padding:4px 8px;background:#eef0e9;color:#8c968b;white-space:nowrap}.state-dot.learning{background:#f4ebda;color:#a77735}.state-dot.mastered{background:#e2eee4;color:#3c7e55}.pagination{display:flex;justify-content:center;align-items:center;gap:20px;padding-top:22px;color:#879488;font-size:11px}.pagination button{border:0;background:transparent;color:var(--green);font-size:11px;font-weight:700}.pagination button:disabled{opacity:.35;cursor:default}.empty{grid-column:1/-1;text-align:center;padding:54px 20px;color:#849184}.empty-mark{font:42px var(--serif);color:#b8c9ba}.empty strong{display:block;font:20px var(--serif);color:var(--green);margin:10px 0 6px}.empty p{max-width:450px;margin:auto;font-size:12px}.drawer-scrim{position:fixed;inset:0;background:#1e302a70;z-index:19}.detail-drawer{position:fixed;right:0;top:0;bottom:0;width:min(520px,100%);z-index:20;background:#fffdf8;box-shadow:-15px 0 55px #2131262b;transform:translateX(105%);transition:transform .3s;overflow:auto;padding:27px 34px}.detail-drawer.open{transform:translateX(0)}.drawer-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:17px}.icon-button,.modal-close{background:transparent;border:0;color:#6c7b6e;font:27px/1 var(--serif)}.detail-title{font:500 39px/1.35 var(--serif);margin:23px 0 0;overflow-wrap:anywhere}.detail-reading{color:#89978a;margin:2px 0 14px}.detail-meaning{font:16px/1.85 var(--serif);color:#3d4c41;white-space:pre-wrap}.detail-section{border-top:1px solid var(--line);padding-top:19px;margin-top:23px}.detail-section h3{font:700 10px var(--sans);letter-spacing:.16em;color:var(--red);margin:0 0 11px}.detail-text{white-space:pre-wrap;line-height:1.9;color:#5b675c;overflow-wrap:anywhere}.detail-example{background:#f3f4ec;border-left:3px solid var(--gold);padding:17px}.detail-example .ja{font:18px/1.9 var(--serif)}.detail-example .en{font-size:12px;color:#788578;margin-top:7px}.source-link{font-size:12px;color:var(--green);text-decoration:underline;text-underline-offset:3px}.detail-actions{display:flex;gap:7px;flex-wrap:wrap}.status-button{border:1px solid #cfd8ca;background:#f6f9f3;color:#526b56;padding:9px 11px;font-size:11px}.status-button.active{background:var(--green);color:white;border-color:var(--green)}.note-input{width:100%;min-height:95px;border:1px solid var(--line);padding:12px;background:#fffefa;resize:vertical;color:var(--ink)}.save-note{margin-top:8px}.audio-button{border:0;background:#e5efe7;color:var(--green);font-weight:700;font-size:12px;padding:8px 12px}.modal{border:1px solid #d4d9ce;background:#fffdf8;box-shadow:0 30px 70px #1a2a1e4d;width:min(560px,calc(100% - 30px));max-height:90vh;overflow:auto;padding:29px 34px;color:var(--ink)}.modal::backdrop{background:#1729209e}.modal-close{float:right}.modal h2{font:500 29px var(--serif);margin:6px 0}.modal-intro{color:#7d887d;font-size:12px;margin:0 0 23px}.practice-card{min-height:220px;border:1px solid var(--line);background:#f5f5ec;padding:27px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.practice-card h3{font:500 34px var(--serif);margin:0 0 7px}.practice-card small{color:#929e90}.practice-answer{border-top:1px solid var(--line);padding-top:15px;margin-top:17px;font:15px/1.75 var(--serif);width:100%;white-space:pre-wrap}.practice-actions{display:flex;gap:8px;margin-top:16px}.practice-footer{font-size:11px;color:#93a093;margin-top:15px}.form-stack{display:grid;gap:13px}.form-stack label{font-size:11px;color:#66766a;font-weight:700;display:grid;gap:5px}.form-stack input,.form-stack textarea,.form-stack select,.tools-modal textarea{border:1px solid #d6ddd2;background:#fffefa;padding:10px;width:100%;color:var(--ink);font-weight:400}.form-stack textarea{resize:vertical}.form-stack button{justify-self:start;margin-top:3px}.backup-link{margin-bottom:12px}.divider{height:1px;background:var(--line);margin:24px 0}.tools-modal summary{font-size:12px;color:var(--green);font-weight:700;cursor:pointer}.tools-modal details p{font-size:11px;color:#869287}.tools-modal textarea{resize:vertical;font:11px/1.5 monospace}.tools-modal details button{margin-top:10px}.tools-modal #import-message{margin-left:11px;font-size:11px;color:var(--green)}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,100px);background:#263d30;color:white;padding:10px 18px;z-index:30;opacity:0;transition:transform .25s,opacity .25s;font-size:12px;pointer-events:none}.toast.show{transform:translate(-50%,0);opacity:1}
.main{margin:0 auto}
.exam-panel{display:flex;justify-content:space-between;align-items:center;gap:25px;background:#eef2e9;border:1px solid #d5dfd2;border-left:4px solid var(--green);padding:20px 23px;margin-top:22px}.exam-panel[hidden]{display:none}.exam-panel h3{font:500 22px var(--serif);margin:3px 0}.exam-panel p{font-size:11px;color:#728073;margin:3px 0 8px;max-width:500px}.exam-panel #exam-history{color:var(--red);font-size:11px}.exam-panel-actions{display:flex;gap:7px;flex-shrink:0}.exam-panel select{border:1px solid #cbd8ca;background:#fffdf8;padding:9px}.exam-question{text-align:center;background:#f3f5ed;border:1px solid var(--line);padding:23px;margin-bottom:13px}.exam-question strong{display:block;font:500 34px var(--serif)}.exam-question small{display:block;color:#8c9a8c}.exam-question p{margin:12px 0 0;font-size:11px;color:#708273}.exam-options{display:grid;gap:7px}.exam-options button{text-align:left;border:1px solid var(--line);background:#fffefa;padding:11px 13px;color:var(--ink);font-size:12px;transition:background .2s}.exam-options button:hover:not(:disabled){background:#eef2e9}.exam-options button.correct{border-color:#6b9c75;background:#e5f1e6}.exam-options button.wrong{border-color:#cf8c7b;background:#f7e8e3}.exam-next-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;min-height:35px}.exam-next-row span{font-size:11px;color:var(--green)}.exam-result{text-align:center;padding:20px 0}.exam-result strong{font:500 54px var(--serif);color:var(--green)}.exam-result p{color:#758476;font-size:12px}
@media(max-width:1050px){.path-grid{grid-template-columns:repeat(3,1fr)}.hero{grid-template-columns:1.15fr .85fr}.summary-grid{grid-template-columns:repeat(3,1fr)}.summary-progress{grid-column:1/-1;border-top:1px solid var(--line)}}
@media(max-width:750px){.app-shell{display:block}.side{position:static;height:auto;padding:14px 15px;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0 0 12px}.side-eyebrow,.side-bottom{display:none}.main-nav{display:flex;overflow:auto;gap:5px;padding-bottom:2px}.nav-item{width:auto;flex:0 0 auto;padding:6px 8px;font-size:11px}.nav-glyph{width:24px;height:24px;font-size:16px}.nav-item em{display:none}.main{padding:0 15px 40px}.topbar{height:54px}.topbar-label{font-size:8px}.offline-pill{font-size:9px}.hero{grid-template-columns:1fr}.hero-copy{padding:31px}.hero-art{display:none}.hero h1{font-size:35px}.summary-grid{grid-template-columns:repeat(3,1fr)}.summary-number{padding:17px 10px}.summary-number strong{font-size:24px}.summary-number span{font-size:10px}.summary-progress{padding:17px}.path-grid{grid-template-columns:repeat(2,1fr)}.path-card{min-height:185px}.library-banner{padding:24px}.workspace{padding:18px}.filters{display:block}.search-box{max-width:none}.select-row{justify-content:space-between;margin-top:10px}.library-list{grid-template-columns:1fr}.workspace-top h2{font-size:20px}.workspace-actions{flex-wrap:wrap;justify-content:end}.detail-drawer{padding:22px}.overview-foot{font-size:9px}.exam-panel{display:block}.exam-panel-actions{margin-top:12px}}
@media(max-width:390px){.path-grid{grid-template-columns:1fr 1fr;gap:8px}.path-card{padding:12px}.topbar-label .topbar-line{display:none}.topbar-label{letter-spacing:.02em}}
