:root{--forest:#194e41;--deep:#103a31;--mint:#e3efe6;--lime:#deecb2;--paper:#f6f6f1;--white:#fff;--ink:#20372f;--muted:#64746b;--line:#dce3da;--amber:#926016;--danger:#a33f38;--radius:14px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",sans-serif;font-size:15px;line-height:1.75}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--forest);text-underline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #b4943e;outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:32px;letter-spacing:-.035em;line-height:1.5;margin-bottom:10px}h2{font-size:21px;line-height:1.5;margin-bottom:15px}h3{font-size:16px;margin-bottom:12px}p{margin-bottom:16px}small,.small{font-size:12px}.muted{color:var(--muted)}.app-shell{display:grid;grid-template-columns:228px 1fr;min-height:100vh;max-width:1600px;margin:auto}.sidebar{position:sticky;top:0;align-self:start;height:100vh;border-right:1px solid var(--line);padding:34px 20px;background:#f1f3eb;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 8px}.brand-mark{width:39px;height:43px;display:grid;place-items:center;background:var(--forest);color:var(--lime);font-size:20px;border-radius:11px 11px 3px 11px}.brand-title{font-weight:750;font-size:16px;line-height:1.5}.brand-title small{display:block;font-size:10px;letter-spacing:.12em;color:var(--muted);font-weight:500}.nav{display:grid;gap:7px;margin-top:38px}.nav button{border:0;display:flex;gap:13px;align-items:center;text-align:left;padding:12px 14px;color:var(--muted);background:transparent;border-radius:8px;font-size:14px}.nav button:hover{background:#e5eade}.nav button.active{background:var(--forest);color:white;font-weight:650}.nav .icon{font-size:17px;width:21px;text-align:center}.sidebar-bottom{margin-top:auto;padding:25px 10px 0}.sidebar-bottom p{font-size:11px;line-height:1.8;color:var(--muted);margin:0}.sidebar-bottom b{font-size:12px;color:var(--forest)}.main{min-width:0;padding:26px 44px 70px}.topbar{display:flex;align-items:center;justify-content:space-between;padding-bottom:25px;margin-bottom:26px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);gap:15px}.top-right{display:flex;gap:16px;align-items:center}.save-status{font-size:11px}.save-status.error{color:var(--danger)}.page-heading{margin-bottom:26px;display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.eyebrow{color:var(--forest);font-size:10px;letter-spacing:.18em;font-weight:750;margin-bottom:8px}.page-heading p{margin-bottom:0;color:var(--muted);font-size:14px}.button{border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);padding:10px 18px;font-weight:600;font-size:13px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.button.primary{background:var(--forest);border-color:var(--forest);color:white}.button.primary:hover{background:var(--deep)}.button.light{background:var(--lime);border-color:var(--lime);color:var(--deep)}.button.danger{color:var(--danger);border-color:#e4c9c3}.button.text{border-color:transparent;background:transparent;padding-left:0}.button.compact{padding:6px 12px;font-size:12px;min-height:38px}.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.hero{background:var(--forest);border-radius:var(--radius);padding:30px 32px;color:white;display:grid;grid-template-columns:1fr 150px;align-items:center;gap:20px;position:relative;overflow:hidden}.hero h2{font-size:27px;margin:10px 0 12px;letter-spacing:-.035em}.hero p{font-size:13px;color:#d9e7dc;max-width:530px}.hero .eyebrow{color:var(--lime)}.hero-ring{width:138px;height:138px;border:1px solid #5d8373;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;box-shadow:0 0 0 13px #ffffff08,0 0 0 26px #ffffff04}.hero-ring strong{font-size:41px;font-weight:600;line-height:1.2;color:var(--lime)}.hero-ring span{font-size:11px;color:#d6e5db;margin-top:6px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin:23px 0 31px}.metric{padding:19px 22px;background:white;border:1px solid var(--line);border-radius:10px}.metric .label{font-size:11px;color:var(--muted)}.metric strong{font-size:30px;display:block;line-height:1.5;font-weight:600;letter-spacing:-.03em}.metric p{font-size:11px;color:var(--muted);margin:3px 0 0}.dashboard-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:23px}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:25px;min-width:0}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px}.section-heading h2{margin:0;font-size:18px}.topic-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 0;border-bottom:1px solid var(--line)}.topic-row:last-child{border-bottom:0}.topic-name{font-size:13px;font-weight:650}.topic-meta{font-size:11px;color:var(--muted)}.progress{width:110px;height:5px;background:#e8ede5;border-radius:5px;overflow:hidden;margin-bottom:4px}.progress i{display:block;background:var(--forest);height:100%;border-radius:5px}.daily-item{display:flex;gap:14px;align-items:center;padding:18px 0;border-top:1px solid var(--line)}.daily-item:first-of-type{border-top:0}.step-index{color:var(--forest);font-size:12px;border:1px solid var(--line);width:32px;height:32px;display:grid;place-content:center;border-radius:50%;flex-shrink:0}.daily-item b{font-size:13px}.daily-item p{font-size:11px;margin:3px 0 0;color:var(--muted)}.badge{font-size:10px;padding:3px 9px;border-radius:4px;display:inline-block;background:var(--mint);color:var(--forest);font-weight:600;white-space:nowrap}.badge.warning{background:#fbf0d9;color:var(--amber)}.badge.error{background:#fae9e5;color:var(--danger)}.notice{background:#eef2e7;color:#435a47;padding:16px 20px;border:1px solid var(--line);border-radius:9px;font-size:12px;margin:20px 0}.notice.warning{background:#fbf3e3;color:#795b28;border-color:#eadabd}.notice p:last-child{margin-bottom:0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.mode-card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:27px;display:flex;flex-direction:column}.mode-card.featured{border:1px solid #a3bba5;background:#edf2e4}.mode-card h2{margin:12px 0}.mode-card p{font-size:13px;color:var(--muted)}.mode-card .actions{margin-top:auto}.mode-card .mode-meta{display:flex;gap:14px;font-size:11px;margin:3px 0 20px;color:var(--forest)}label{display:block;font-size:13px;font-weight:600;margin-bottom:7px}.field{margin-bottom:19px}input:not([type]),input[type=text],input[type=number],input[type=date],input[type=search],textarea,select{display:block;width:100%;min-width:0;max-width:100%;border:1px solid #c6d2c5;border-radius:6px;padding:11px 13px;background:#fcfdf9;color:var(--ink);min-height:46px}input[type=checkbox]{accent-color:var(--forest);width:17px;height:17px;flex-shrink:0}textarea{resize:vertical;min-height:150px;line-height:1.9}input[readonly],textarea[readonly]{background:#f0f3ed}.question-layout{display:grid;grid-template-columns:minmax(0,1fr) 235px;gap:24px}.question-panel{min-width:0;background:white;border:1px solid var(--line);border-radius:var(--radius);padding:30px}.question-header{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:24px}.question-header span{font-size:11px}.question-text{font-size:20px;line-height:1.85;margin:20px 0 27px;font-weight:550;white-space:pre-wrap;overflow-wrap:anywhere}.question-panel .input-main{font-size:18px;min-height:55px}.numeric-fields{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:15px}.numeric-fields>div{min-width:0}.options{display:grid;gap:10px}.option{border:1px solid var(--line);padding:13px 17px;border-radius:7px;background:#fbfcf8;display:flex;align-items:center;gap:14px;text-align:left;color:var(--ink);font-size:16px;min-height:50px}.option.selected{border-color:var(--forest);background:var(--mint);box-shadow:0 0 0 1px var(--forest)}.option code{border:1px solid #cbd6c8;padding:1px 7px;font-size:12px;border-radius:4px}.confidence{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 24px}.confidence button{padding:7px 12px;font-size:12px;border:1px solid var(--line);border-radius:5px;background:white;color:var(--muted)}.confidence button.selected{color:var(--forest);background:#eaf1e5;border-color:#7fa082}.question-footer{border-top:1px solid var(--line);padding-top:20px;margin-top:25px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.question-aside .panel{padding:20px;position:sticky;top:25px}.timer{font-variant-numeric:tabular-nums;font-size:28px;letter-spacing:.025em;font-weight:650}.timer.low{color:var(--danger)}.question-map{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:18px 0}.question-map button{padding:5px 0;min-height:34px;border:1px solid var(--line);background:#f6f8f2;border-radius:4px;font-size:11px;color:var(--muted)}.question-map button.done{background:var(--mint);color:var(--forest)}.question-map button.current{border-color:var(--forest);box-shadow:0 0 0 1px var(--forest)}.question-map button.marked{border-bottom:3px solid #b08d35}.checkline{display:flex;align-items:flex-start;gap:10px;font-weight:400;font-size:12px;cursor:pointer}.feedback{margin-top:25px;padding:20px;background:#edf4e8;border-radius:8px;border-left:3px solid var(--forest);font-size:13px}.feedback.wrong{background:#fff2ed;border-color:var(--danger)}.feedback .answer{font-size:18px;font-weight:650;margin:9px 0}.feedback p{margin:7px 0}.feedback details{margin-top:12px;font-size:12px}.feedback summary{cursor:pointer;color:var(--forest)}.result-hero{display:flex;justify-content:space-between;align-items:center;background:var(--forest);padding:28px 32px;border-radius:var(--radius);color:white;gap:20px}.result-hero .score{font-size:46px;line-height:1.4;letter-spacing:-.035em}.result-hero .score small{font-size:22px;color:#d5e5d8}.result-hero p{color:#d5e5d8;margin:7px 0 0;font-size:12px}.result-list{display:grid;gap:12px;margin-top:23px}.result-item{border:1px solid var(--line);border-radius:9px;background:white;padding:18px 22px}.result-item summary{display:flex;gap:13px;cursor:pointer;align-items:flex-start;font-size:13px;font-weight:600;list-style:none}.result-item summary::-webkit-details-marker{display:none}.result-item .result-body{margin:16px 0 0;padding-top:15px;border-top:1px solid var(--line);font-size:13px}.result-item .result-body p{white-space:pre-wrap;overflow-wrap:anywhere}.result-symbol{font-size:15px;color:var(--forest);flex-shrink:0}.result-symbol.wrong{color:var(--danger)}.toolbar{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px;align-items:center}.toolbar select{width:auto;max-width:100%;min-width:150px}.toolbar input{flex:1;min-width:170px}.empty{padding:38px 20px;text-align:center;border:1px dashed #c4d2c0;border-radius:var(--radius);background:#f9fbf5}.empty strong{font-size:17px;display:block;margin-bottom:9px}.empty p{font-size:13px;color:var(--muted);margin-bottom:17px}.weak-card{padding:20px 23px;border:1px solid var(--line);border-radius:9px;background:white;margin-bottom:13px}.weak-card .actions{margin-top:15px}.weak-card p{font-size:13px;margin:10px 0}.essay-topline{display:flex;justify-content:space-between;align-items:center;margin:15px 0}.essay-count{font-size:22px;font-weight:650}.essay-count.good{color:var(--forest)}.essay-count.bad{color:var(--danger)}.essay-grid{display:grid;grid-template-columns:repeat(20,1fr);gap:2px;margin:22px 0;max-width:650px}.essay-grid span{aspect-ratio:1;display:grid;place-content:center;border:1px solid var(--line);background:white;font-size:12px;line-height:1;min-width:0}.essay-grid span.full{background:#f0f5e9}.essay-grid span.over{background:#fae9e5;border-color:#debeb6}.essay-history{border-top:1px solid var(--line);padding:17px 0}.essay-history p{font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}.lesson{background:white;border:1px solid var(--line);border-radius:9px;padding:22px;margin-bottom:15px}.lesson p{font-size:13px;margin-bottom:0}.history-row{display:grid;grid-template-columns:1fr 130px 130px;gap:18px;align-items:center;padding:20px 0;border-bottom:1px solid var(--line)}.history-row p{font-size:12px;color:var(--muted);margin:3px 0}.history-score{font-size:23px;font-weight:600}.settings-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}.note-item{border-bottom:1px solid var(--line);padding:17px 0}.note-item p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.checks{display:grid;gap:15px;margin:20px 0}.check-item{display:flex;gap:12px;align-items:flex-start;font-size:13px;font-weight:400}.check-item p{margin:3px 0 0;color:var(--muted);font-size:11px}.check-item b{font-size:13px}.rule{border-top:1px solid var(--line);margin:25px 0}.loading{padding:70px;font-size:20px}.fatal{max-width:600px;margin:80px auto;padding:25px}.save-banner{font-size:12px;background:#fff0db;color:#835720;padding:14px 18px;border-radius:8px;margin-bottom:20px}.bottom-info{font-size:11px;color:var(--muted);margin-top:27px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:20;max-width:90vw;pointer-events:none;background:var(--deep);color:white;padding:12px 22px;border-radius:8px;font-size:13px;box-shadow:0 5px 20px #0002;display:none}dialog{border:1px solid var(--line);border-radius:14px;padding:28px;width:min(540px,calc(100vw - 32px));max-height:85vh;overflow-y:auto;color:var(--ink)}dialog::backdrop{background:#152b2380}dialog h2{font-size:21px}dialog p{font-size:13px}dialog .actions{justify-content:flex-end;margin-top:25px}.submit-status{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin:20px 0}.submit-status span{background:#f0f3e9;border:1px solid var(--line);padding:8px 13px;border-radius:5px}.plain-list{padding-left:20px;font-size:12px}.source-details{font-size:12px}.source-details summary{cursor:pointer;font-weight:600}.filters{display:flex;gap:7px;flex-wrap:wrap;margin:18px 0}.filters button{padding:7px 13px;border:1px solid var(--line);border-radius:6px;background:white;color:var(--muted);font-size:12px}.filters button.active{background:var(--forest);border-color:var(--forest);color:white}.visited{font-size:11px;color:var(--muted);text-align:right}.footer-disclaimer{margin-top:20px;color:var(--muted);font-size:11px}.space{height:24px}
@media(min-width:1450px){.main{padding-left:65px;padding-right:65px}}
@media(max-width:1120px){.app-shell{grid-template-columns:195px 1fr}.main{padding:24px 28px 60px}.sidebar{padding:28px 14px}.dashboard-grid,.settings-grid{grid-template-columns:1fr}.question-layout{grid-template-columns:minmax(0,1fr) 190px}.question-panel{padding:24px}.question-aside .panel{padding:16px}.question-map{grid-template-columns:repeat(4,1fr)}}
@media(max-width:820px){.app-shell{display:block}.sidebar{position:relative;height:auto;display:block;padding:18px 20px;border-right:0;border-bottom:1px solid var(--line)}.brand-title small{display:none}.brand-mark{width:32px;height:35px;font-size:16px}.brand-title{font-size:15px}.nav{display:flex;overflow-x:auto;gap:5px;margin-top:17px;scrollbar-width:thin}.nav button{flex-shrink:0;padding:9px 12px;gap:7px;white-space:nowrap;font-size:12px}.nav .icon{font-size:14px;width:16px}.sidebar-bottom{display:none}.main{padding:20px 22px 60px}.topbar{margin-bottom:24px;padding-bottom:17px}.question-layout{grid-template-columns:1fr}.question-aside .panel{position:static}.question-map{grid-template-columns:repeat(10,1fr)}.question-aside{order:-1}.question-aside .question-map{display:none}.question-aside .panel{display:flex;justify-content:space-between;align-items:center;gap:15px}.question-aside .panel>div:last-child{display:none}.question-aside .timer{font-size:21px}.question-aside .aside-label{display:none}.question-aside .button{font-size:12px}.top-right{gap:8px}.two-col{grid-template-columns:1fr}.hero{padding:26px;grid-template-columns:1fr 115px}.hero-ring{width:103px;height:103px}.hero-ring strong{font-size:32px}.metrics{gap:10px}.metric{padding:16px}.metric strong{font-size:25px}.mode-card{padding:22px}.page-heading{flex-wrap:wrap}.page-heading h1{font-size:28px}}
@media(max-width:540px){.main{padding:20px 16px 45px}.topbar{font-size:10px}.top-right .date-text{display:none}.hero{grid-template-columns:1fr;padding:24px}.hero-ring{display:none}.hero h2{font-size:25px}.metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.metric{padding:13px 10px}.metric strong{font-size:24px}.metric .label{font-size:10px}.metric p{font-size:10px}.mode-grid{grid-template-columns:1fr}.panel{padding:21px}.question-panel{padding:21px}.question-text{font-size:18px}.numeric-fields{grid-template-columns:minmax(0,1fr) 90px;gap:10px}.question-footer{gap:10px}.question-footer .actions{gap:6px}.question-footer .button{padding:9px 12px}.confidence button{padding:8px 10px}.result-hero{padding:23px;align-items:flex-start;flex-direction:column;gap:15px}.result-hero .score{font-size:39px}.history-row{grid-template-columns:1fr 80px;gap:10px}.history-row .button{grid-column:1/-1;justify-self:start}.essay-grid{gap:1px}.essay-grid span{font-size:10px}.toolbar select{width:100%}.progress{width:80px}.result-item{padding:16px}.sidebar{padding:16px}.nav{margin-top:14px}.button{padding:10px 15px}.topbar .save-status{max-width:150px;text-align:right}.visited{font-size:10px}.essay-topline{gap:15px;flex-wrap:wrap}}
@media print{.sidebar,.topbar,.toolbar,.actions,.button,#toast,.question-aside{display:none!important}.app-shell{display:block}.main{padding:0}.panel,.question-panel,.lesson,.result-item{border:0;box-shadow:none;break-inside:avoid}.result-hero,.hero{background:white;color:black}.result-hero p,.hero p{color:black}body{background:white;font-size:12px}h1{font-size:26px}.question-text{font-size:17px}.metrics{display:none}.essay-grid{max-width:600px}}
.mobile-question-list{display:none}.mobile-question-list summary{font-size:12px;color:var(--forest);cursor:pointer;padding:10px 0}@media(max-width:820px){.mobile-question-list{display:block;margin-bottom:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.mobile-question-list .question-map{grid-template-columns:repeat(7,1fr)}.question-aside{position:sticky;top:0;align-self:start;z-index:4;background:var(--paper);padding:6px 0}}
