:root{
  --bg:#fffaed;--paper:#fff;--chrome:#fdf1d6;--ink:#5c6166;--heading:#735639;--muted:#827968;
  --line:#eee7d9;--green:#735639;--light:#fdf1d6;--yellow:#eec255;--field:#fcfaf5;
  --gold:#a46e12;--danger:#b84e46;--good:#397b69;--good-bg:#edf5ef;--blue:#347b9a;
  --shadow:0 3px 18px #73563905;
  font-family:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink);background:var(--bg);font-size:16px;color-scheme:light;
}
*{box-sizing:border-box}body{margin:0}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea{touch-action:manipulation}
button{cursor:pointer;border:0;background:var(--field);color:var(--heading);padding:11px 17px;border-radius:8px;min-height:44px;line-height:1.4}
button:hover{background:var(--light)}
button.primary{background:var(--yellow);color:#614a28;font-weight:600}
button.primary:hover{background:#e9b83e}
button.danger{color:var(--danger)}
button.ghost{background:transparent}button.ghost:hover{background:var(--light)}
button:disabled{cursor:not-allowed;opacity:.45}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
a{color:var(--blue)}
h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--heading)}
h1{font-size:28px;font-weight:650;line-height:1.4;margin-bottom:0;overflow-wrap:anywhere}
h2{font-size:20px;font-weight:600;line-height:1.5}
h3{font-size:16px;font-weight:600;line-height:1.6}
p{line-height:1.8}small,.muted{color:var(--muted)}small{font-size:13px;line-height:1.6}
.layout{min-height:100vh;display:grid;grid-template-columns:216px minmax(0,1fr);background:var(--chrome)}
.sidebar{padding:14px 10px;position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;background:var(--chrome)}
.brand{display:flex;align-items:center;gap:10px;padding:0 12px;min-height:54px;margin-bottom:14px;font-weight:650;font-size:23px;color:var(--heading)}
.brand img{width:38px;height:38px}
.nav{display:grid;align-content:start;gap:8px;flex:1;background:var(--bg);border-radius:12px;padding:18px 10px}
.nav button{font-size:16px;text-align:left;background:transparent;color:var(--muted);padding:14px;display:flex;align-items:center;gap:13px}
.nav button:hover{background:#f6e7c7}.nav button.active{color:var(--heading);background:#efdfb8;font-weight:600}
.symbol,.ui-icon{width:20px;height:20px;display:inline-flex;flex-shrink:0;vertical-align:middle}.symbol svg{width:100%;height:100%}
main{max-width:1420px;width:100%;padding:0 14px 14px 0;margin:0 auto;min-width:0}
.topbar{min-height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;gap:12px;background:var(--chrome)}
#content{padding:30px 34px 46px;border-radius:14px;background:var(--bg);min-height:calc(100dvh - 96px)}
.topbar .actions{display:flex;gap:8px;align-items:center}
.breadcrumb{font-size:14px;color:var(--muted)}.status{font-size:12px;color:var(--muted)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--light);color:var(--heading);display:grid;place-items:center;font-size:13px}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:26px}
.page-head>button{flex-shrink:0;white-space:nowrap}
.page-head p{margin:7px 0 0;color:var(--muted);font-size:15px}
.eyebrow{font-size:13px;color:var(--muted);margin-bottom:10px}
.hero{display:flex;justify-content:space-between;align-items:center;gap:28px;background:var(--light);border-radius:14px;padding:28px 32px;margin-bottom:22px}
.hero h2{font-size:23px;margin-bottom:8px}.hero p{font-size:15px;margin-bottom:20px;max-width:620px}.hero .spaced{margin-bottom:0}
.daily-goal{flex-shrink:0;min-width:140px;text-align:center;color:var(--heading)}
.daily-goal span{display:block;font-size:12px;color:var(--muted);margin-bottom:10px}
.daily-goal strong{font-size:32px;font-weight:600;font-variant-numeric:tabular-nums}.daily-goal small{margin-left:5px}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:32px}
.stat{padding:20px 23px;border-radius:10px;background:var(--paper);min-width:0}
.stat b{display:block;font-size:28px;font-weight:600;color:var(--heading);margin:9px 0 2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.stat span{font-size:14px;color:var(--muted)}.stat:nth-child(2) b{color:var(--blue)}.stat:nth-child(3) b{color:var(--gold)}.stat:nth-child(4) b{color:var(--good)}
.card{border:0;border-radius:12px;padding:26px;background:var(--paper);box-shadow:var(--shadow);min-width:0}
.card p{font-size:15px;color:var(--muted)}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px}.card-head h2{margin:0}
.bank-card{display:flex;flex-direction:column;min-height:225px}
.bank-icon{background:var(--light);color:var(--heading);width:42px;height:42px;display:grid;place-items:center;border-radius:10px;margin-bottom:16px}
.bank-card h3{overflow-wrap:anywhere;margin-bottom:8px}
.bank-card footer{margin-top:auto;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px}.bank-card footer button{padding:8px 10px}
.pill{font-size:12px;padding:5px 9px;background:var(--good-bg);color:var(--good);border-radius:5px;display:inline-block}
.pill.warn{background:var(--light);color:var(--gold)}.pill.bad{background:#fbeeea;color:var(--danger)}
.empty{text-align:center;padding:34px 20px}
.empty-icon{width:44px;height:44px;display:grid;place-items:center;margin:0 auto 15px;background:var(--light);border-radius:12px;color:var(--heading)}
.empty-icon .ui-icon{width:24px;height:24px}.empty p{max-width:470px;margin:0 auto 20px;font-size:14px}
.empty-list{padding:20px 0;color:var(--muted);font-size:14px}
.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.between{justify-content:space-between}
.stack{display:grid;gap:18px}.cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px}
.field{display:grid;gap:9px;font-size:15px;margin:0 0 18px;min-width:0}
.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea,input.search{width:100%;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:7px;background:var(--field);color:var(--ink);min-height:44px}
.field textarea{min-height:120px;resize:vertical;line-height:1.7}
input[type=checkbox],input[type=radio]{width:16px;height:16px;min-width:16px;min-height:16px;margin:0;accent-color:#ae8127;flex:0 0 16px;vertical-align:middle}
.field.check{display:flex;align-items:center;min-height:32px;gap:10px}
.type-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.type-choice{display:flex;align-items:center;gap:8px;min-height:42px;padding:8px 10px;border-radius:7px;background:var(--field);cursor:pointer;white-space:nowrap;color:var(--ink)}
.type-choice:has(input:checked){background:var(--light);color:var(--heading)}
.upload{background:var(--field);border-radius:10px;padding:23px;text-align:center}.upload input{max-width:100%}
.upload input::file-selector-button{border:0;border-radius:6px;padding:10px 14px;margin-right:10px;background:var(--light);color:var(--heading);cursor:pointer}
.tabs{display:flex;gap:5px;padding:4px;background:#f5eddc;border-radius:9px;margin-bottom:22px;width:max-content;max-width:100%}
.tabs button{background:transparent;min-width:96px}.tabs button.active{background:var(--paper);color:var(--heading);font-weight:600;box-shadow:0 2px 5px #73563907}
.notice{padding:13px 16px;background:var(--light);border:0;border-radius:8px;font-size:14px;line-height:1.7;color:var(--heading)}
.notice.good{background:var(--field);color:var(--muted)}
.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}
td,th{padding:12px 10px;text-align:left;border-bottom:1px solid var(--line)}th{font-weight:500;color:var(--muted)}td .field{margin-bottom:0}
.question-row{padding:20px 0;border-bottom:1px solid var(--line)}.question-row:last-child{border-bottom:0}
.question-row h3{font-weight:500;line-height:1.8;margin:10px 0;white-space:pre-wrap;overflow-wrap:anywhere}.question-row .row{font-size:14px}
.question-text{font-size:var(--question-size,20px);line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;margin:26px 0;color:var(--ink)}
.answer-layout{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:22px;align-items:start}
.option{display:flex;align-items:flex-start;gap:12px;border:0;border-radius:9px;padding:16px;margin-bottom:10px;cursor:pointer;line-height:1.8;background:var(--field)}
.option:has(input:checked){background:var(--light)}.option input{margin-top:5px}.option strong{min-width:20px;font-weight:500}
.answer-actions{display:flex;gap:10px;justify-content:space-between;margin-top:22px;padding:16px 0}
.answer-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
.answer-grid button{min-height:34px;padding:6px;border-radius:6px;font-size:12px}
.answer-grid button.done{background:var(--good-bg);color:var(--good)}.answer-grid button.wrong{background:#fbeeea;color:var(--danger)}
.answer-grid button.current{background:var(--yellow);color:#614a28;box-shadow:0 2px 0 #b98a24}
.explanation{padding:20px;border-radius:9px;background:var(--field);line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}
.timer{font-variant-numeric:tabular-nums;font-size:20px;color:var(--heading)}
.progress{height:4px;border-radius:4px;background:var(--field);overflow:hidden;margin:18px 0}.progress i{height:100%;background:var(--yellow);display:block;width:var(--progress,0%)}
dialog{max-width:760px;width:calc(100% - 32px);max-height:90dvh;overflow:auto;border:0;border-radius:14px;background:var(--paper);color:var(--ink);padding:28px;box-shadow:0 20px 80px #493c2526}
dialog::backdrop{background:#443d3040;backdrop-filter:blur(3px)}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-head h2{margin:0}
.modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:22px}
.divider{height:1px;background:var(--line);margin:22px 0}
.history-item{display:flex;justify-content:space-between;align-items:center;padding:17px 0;border-bottom:1px solid var(--line);gap:14px;overflow-wrap:anywhere}.history-item:last-child{border-bottom:0}.history-item p{margin:3px 0 0}
.error{color:var(--danger)}
#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);background:#66553e;color:#fffaf0;padding:13px 22px;border-radius:9px;z-index:100;box-shadow:var(--shadow);display:none;font-size:14px;line-height:1.6}
.offline-banner{margin-bottom:20px}.spaced{margin-top:24px}.score{font-size:48px;font-weight:600;color:var(--heading)}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;line-height:1.8}.mobile-logo,.mobile-brand{display:none}
body.dark{--bg:#24231f;--paper:#2e2d28;--chrome:#333023;--ink:#dadde0;--heading:#e2e4e7;--muted:#afb4ba;--line:#484337;--green:#e2e4e7;--light:#443a25;--field:#34322b;--yellow:#c5b182;--gold:#cbb991;--danger:#e7aaa2;--good:#a5c8b6;--good-bg:#31433b;--blue:#a5c4d5;--shadow:none;color-scheme:dark;background:var(--bg);color:var(--ink)}
body.dark button.primary:hover{background:#d2c199}
body.dark .stat b{color:var(--heading)}
body.dark dialog::backdrop{background:#17140f99}
body.dark #toast{background:#4b4336;color:var(--ink)}
body.dark .nav button.active,body.dark .nav button:hover,body.dark .tabs{background:var(--light)}
body.dark .pill.bad,body.dark .answer-grid button.wrong{background:#49342f}
@media(min-width:1500px){#content{padding-right:46px;padding-left:46px}}
@media(max-width:1100px){
 .layout{grid-template-columns:184px minmax(0,1fr)}.sidebar{padding:14px 8px}.brand{padding:0 8px;font-size:21px}
 main{padding:0 12px 12px 0}#content{padding:26px 24px 40px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .answer-layout{grid-template-columns:minmax(0,1fr)}.answer-map{order:2}.answer-grid{grid-template-columns:repeat(10,minmax(0,1fr))}
 .stats{gap:10px}.stat{padding:17px}.cols{gap:22px}.type-options{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
 .layout{display:block}.sidebar{position:fixed;bottom:0;top:auto;height:auto;width:100%;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--chrome);box-shadow:0 -3px 16px #73563908;z-index:20}
 .sidebar .brand{display:none}.nav{grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:5px 4px;border-radius:10px}
 .nav button{flex-direction:column;justify-content:center;gap:5px;padding:7px 0;font-size:12px;border-radius:8px}.nav .symbol{width:20px;height:20px}
 .nav button[data-page=settings]{display:none}main{padding:0 7px}#content{padding:18px 13px calc(100px + env(safe-area-inset-bottom));min-height:calc(100dvh - 52px);border-radius:12px 12px 0 0}
 .topbar{min-height:52px;padding:0 11px;gap:8px}.breadcrumb{font-size:13px}.desktop-crumb{display:none}.mobile-brand{display:inline;font-weight:600;color:var(--heading)}.breadcrumb{white-space:nowrap}.mobile-logo{display:inline-block;width:25px;vertical-align:middle;margin-right:6px}
 .topbar .actions{gap:0}.status{font-size:11px;max-width:98px;text-align:right}.topbar button{padding:8px;min-height:40px;font-size:13px}.avatar{display:none}
 h1{font-size:25px}.page-head{align-items:center;margin-bottom:20px;gap:10px}.page-head p{font-size:14px}.page-head>button{padding:10px;font-size:14px}
 .hero{padding:23px;display:block;margin-bottom:16px}.hero h2{font-size:21px}.hero p{font-size:15px}.hero .row{gap:8px}.hero .row button{padding:10px 12px;font-size:14px}.daily-goal{display:none}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:26px}.stat{padding:16px 19px}.stat b{font-size:26px}
 .grid,.cols{grid-template-columns:minmax(0,1fr)}.card{padding:21px}.card-head h2{font-size:19px}.card-head button{font-size:12px;padding:9px}.bank-card{min-height:210px}
 .tabs{width:100%}.tabs button{flex:1;min-width:0;padding:10px 7px;font-size:15px}
 .type-options{grid-template-columns:repeat(3,minmax(0,1fr))}.type-choice{padding:8px;gap:6px;font-size:14px}
 .question-text{margin:20px 0}.option{padding:14px;gap:10px}
 .answer-actions{position:sticky;bottom:calc(85px + env(safe-area-inset-bottom));background:var(--paper);padding:12px 0;z-index:10;gap:6px}
 .answer-actions button{padding:10px;font-size:14px}.answer-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.answer-layout .card{padding:18px}
 .field input:not([type=checkbox]):not([type=radio]),.field textarea,.field select{font-size:16px}
 dialog{padding:20px}.history-item{align-items:flex-start}.history-item .row{gap:5px}.history-item button{font-size:12px;padding:8px}
 #toast{bottom:95px;width:max-content}.row{gap:8px}th,td{padding:12px 7px}.answer-map h3{margin-bottom:12px}
}
@media(max-width:350px){main{padding-left:5px;padding-right:5px}#content{padding-left:9px;padding-right:9px}.card{padding:16px}.type-options{grid-template-columns:repeat(2,minmax(0,1fr))}.breadcrumb{font-size:11px}.mobile-logo{width:22px;margin-right:4px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

dialog.preview-dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.preview-dialog .modal-head{flex-shrink:0}
.preview-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:5px;scrollbar-gutter:stable}
.preview-dialog .modal-actions{flex-shrink:0;margin-top:0;padding-top:16px;background:var(--paper)}
.review-tools{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.review-type{margin:0;min-width:200px}
@media(max-width:700px){.review-type{width:100%}.preview-dialog .modal-actions{padding-top:12px}.preview-dialog .modal-actions button{font-size:14px;padding:11px}.preview-dialog .modal-head{margin-bottom:12px}.preview-dialog .modal-head h2{font-size:19px}}
.review-type-options{grid-template-columns:repeat(2,minmax(0,1fr))}.review-type-options small{display:block;margin-top:3px}.review-type-options .type-choice:has(input:disabled){opacity:.5;cursor:default}

.update-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 20px;margin:0 0 12px;background:var(--light);color:var(--heading);border-radius:10px}
.update-notice[hidden]{display:none}
.update-notice p{margin:5px 0 0;font-size:13px;color:var(--ink)}
.update-notice .row{flex-shrink:0}
@media(max-width:700px){.update-notice{align-items:flex-start;flex-direction:column;gap:10px;padding:14px;margin-bottom:8px}.update-notice .row{align-self:flex-end}.update-notice button{font-size:14px;padding:9px 12px}}
