:root{--primary:#18704f;--primary-pressed:#135c41;--primary-soft:#e7f4ee;--accent:#f59e0b;--accent-soft:#fef3c7;--danger:#dc2626;--success:#16a34a;--bg:#f6f7f9;--surface:#fff;--text:#1f2937;--text-2:#4b5563;--muted:#6b7280;--border:#e5e7eb;--star:#f5b301;--accent-text:#854d0e;--danger-soft:#fef2f2;--danger-text:#b91c1c;--success-text:#166534;--overlay:#10182866;--card-shadow:0 1px 2px #1018280f;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--radius-button:12px;--radius-card:16px;--radius-input:12px;--radius-pill:999px;--font-body:16px;--font-small:13px;--font-label:14px;--font-step:12px;--font-title:22px;--font-card:18px;--font-weight:600;--control-height:44px;--primary-height:52px;--input-height:48px;--nav-height:64px;--app-width:480px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:var(--font-body);font-synthesis:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-weight:400;line-height:1.6}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}h1,h2,h3,p{margin:0 0 var(--space-3)}h1{font-size:var(--font-title);font-weight:var(--font-weight);line-height:1.4}h2,h3{font-size:var(--font-card);font-weight:var(--font-weight);line-height:1.5}strong,b,legend{font-weight:var(--font-weight)}small,.fine{font-size:var(--font-small);color:var(--muted)}a{color:var(--primary);text-underline-offset:var(--space-1)}a[href]{min-height:var(--control-height);align-items:center;display:inline-flex}[hidden]{display:none!important}.icon{vertical-align:middle;flex-shrink:0}.icon-star{color:var(--star)}.button{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-height);padding:var(--space-2) var(--space-4);border-radius:var(--radius-button);font-size:var(--font-body);font-weight:var(--font-weight);white-space:nowrap;cursor:pointer;border:1px solid #0000;line-height:1.5;text-decoration:none;transition:background-color .15s;display:inline-flex}.button .icon{width:20px;height:20px}.primary{color:var(--surface);background:var(--primary)}.primary:active:not(:disabled){background:var(--primary-pressed)}.secondary{color:var(--text);background:var(--surface);border-color:var(--border)}.secondary:active:not(:disabled){background:var(--bg)}.tertiary{color:var(--primary);background:0 0}.danger{color:var(--danger);background:var(--surface);border-color:var(--danger)}.button-large{min-height:var(--primary-height)}.button-icon{width:var(--control-height);height:var(--control-height);flex-shrink:0;padding:0}.button:disabled,fieldset:disabled .file-button{opacity:.4;cursor:not-allowed}.full{width:100%}.file-button:focus-within{outline:2px solid var(--primary);outline-offset:2px}button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px}input:focus-visible{outline:2px solid var(--primary);outline-offset:2px}textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}select:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.button-row{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.button-row>*{width:100%;min-width:0;padding-inline:var(--space-2)}.button-row>:only-child{grid-column:1/-1}.card{background:var(--surface);border-radius:var(--radius-card);padding:var(--space-4);margin-bottom:var(--space-3);box-shadow:var(--card-shadow);border:0;min-width:0}.card>:last-child{margin-bottom:0}.card .card{box-shadow:none;margin-top:var(--space-4);border-top:1px solid var(--border);border-radius:0;padding-inline-start:0;padding-inline-end:0}.card-heading,.section-heading{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.card-heading h2,.card-heading p,.section-heading h2{margin-bottom:var(--space-1)}.section-heading{margin:var(--space-6) 0 var(--space-3)}.section-heading>span,.muted,.period-label{color:var(--muted)}.page-title{margin-bottom:var(--space-5)}.page-title>p:last-child{color:var(--muted);font-size:var(--font-small)}.eyebrow{color:var(--primary);font-size:var(--font-small);margin-bottom:var(--space-2)}.fine{margin-top:var(--space-4)}.notice{align-items:flex-start;gap:var(--space-2);border-radius:var(--radius-input);padding:var(--space-3);margin-bottom:var(--space-3);font-size:var(--font-small);white-space:normal;text-align:left;font-weight:400;display:flex}.notice.info{background:var(--primary-soft);color:var(--primary-pressed)}.notice.warn{background:var(--accent-soft);color:var(--accent-text)}.notice.error{background:var(--danger-soft);color:var(--danger-text)}.notice>.icon{width:20px;height:20px}.notice-content{flex:1;min-width:0}.notice-content p{margin:0}.notice .button{margin-top:var(--space-2)}.empty{align-items:center;gap:var(--space-3);text-align:center;color:var(--muted);padding:var(--space-6) var(--space-4);margin-bottom:var(--space-3);background:var(--surface);border-radius:var(--radius-card);flex-direction:column;display:flex}.empty p{margin-bottom:0}.empty-art{width:80px;height:64px;color:var(--primary)}.badge{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);font-size:var(--font-small);white-space:nowrap;color:var(--text-2);background:var(--bg);font-weight:400;display:inline-flex}.badge.queued,.badge.running{background:var(--accent-soft);color:var(--accent-text)}.badge.succeeded{background:var(--primary-soft);color:var(--success-text)}.badge.failed{background:var(--danger-soft);color:var(--danger)}fieldset{border:0;min-width:0;margin:0;padding:0}legend{margin-bottom:var(--space-4)}label{color:var(--text-2);font-size:var(--font-label);margin-bottom:var(--space-4);display:block}input:not([type=radio]):not([type=checkbox]):not([type=file]),textarea,select{width:100%;min-width:0;min-height:var(--input-height);border:1px solid var(--border);border-radius:var(--radius-input);padding:var(--space-3);margin-top:var(--space-2);background:var(--surface);color:var(--text);font-size:var(--font-body);display:block}textarea{resize:vertical}input[type=radio],input[type=checkbox]{accent-color:var(--primary);width:20px;height:20px;margin:0 var(--space-2) 0 0;flex-shrink:0}label small{margin-top:var(--space-1);display:block}.inline-check{min-height:var(--control-height);margin-bottom:var(--space-1);cursor:pointer;align-items:center;display:flex}.form-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.form-grid label{min-width:0}summary{color:var(--primary);font-weight:var(--font-weight);min-height:var(--control-height);padding:var(--space-2) 0;cursor:pointer}details p{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:var(--space-3)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app,.welcome{max-width:var(--app-width);min-height:100dvh;margin-inline-start:auto;margin-inline-end:auto}.content{width:100%;max-width:var(--app-width);padding:var(--space-5) var(--space-4) calc(var(--nav-height) + var(--space-6) + env(safe-area-inset-bottom));overflow-wrap:anywhere;min-width:0;margin-inline-start:auto;margin-inline-end:auto}.topbar{z-index:25;background:var(--surface);color:var(--text);border-bottom:1px solid var(--border);padding-top:env(safe-area-inset-top);position:sticky;top:0}.topbar-main{min-height:var(--nav-height);padding:var(--space-2) var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.brand{align-items:center;gap:var(--space-2);font-size:var(--font-card);font-weight:var(--font-weight);color:var(--text);white-space:nowrap;text-decoration:none;display:inline-flex}.topbar-actions,.stars,.earned-stars{align-items:center;gap:var(--space-2);display:inline-flex}.stars{font-size:var(--font-small);font-variant-numeric:tabular-nums}.stars .icon{width:20px;height:20px}.parent-entry{height:var(--control-height);border-block:var(--space-1) solid var(--surface);background:var(--surface);box-shadow:inset 0 0 0 1px var(--border);padding:0 var(--space-3);font-size:var(--font-label);background-clip:padding-box}.parent-mode-info{align-items:center;gap:var(--space-1);background:var(--accent-soft);color:var(--accent-text);border-left:var(--space-1) solid var(--accent);padding:0 var(--space-2);min-height:var(--control-height);display:flex}.parent-mode-info>.icon{width:20px;height:20px}.parent-mode-info strong{font-size:var(--font-small);white-space:nowrap;font-variant-numeric:tabular-nums}.parent-mode-actions{margin-left:auto;display:flex}.parent-mode-actions .button{color:var(--accent-text);background:var(--accent-soft);padding-inline:var(--space-2);font-size:var(--font-small)}.parent-back{margin-bottom:var(--space-3);padding-left:0}.bottom-nav{width:100%;max-width:var(--app-width);z-index:20;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav .button{height:var(--nav-height);min-width:0;padding:var(--space-1);color:var(--muted);font-size:var(--font-small);background:0 0;border:0;border-radius:0;flex-direction:column;gap:0;font-weight:400;display:flex}.bottom-nav .active{color:var(--primary);font-weight:var(--font-weight)}.nav-icon{border-radius:var(--radius-pill);place-items:center;width:52px;height:32px;display:grid}.nav-icon .icon{width:24px;height:24px}.active .nav-icon{background:var(--primary-soft)}.parent-home-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.parent-home-card{min-width:0;padding:var(--space-4);border-radius:var(--radius-card);box-shadow:var(--card-shadow);align-items:flex-start;gap:var(--space-3);white-space:normal;text-align:left;border:0;flex-direction:column;display:flex;position:relative}.parent-card-icon{width:var(--input-height);height:var(--input-height);border-radius:var(--radius-pill);color:var(--primary);background:var(--primary-soft);place-items:center;display:grid}.parent-card-icon .icon{width:24px;height:24px}.parent-card-copy strong{font-size:var(--font-body);display:block}.parent-card-copy>span{font-size:var(--font-small);color:var(--muted);margin-top:var(--space-1);font-weight:400;display:block}.pending-count{top:var(--space-3);right:var(--space-3);background:var(--danger);color:var(--surface);border-radius:var(--radius-pill);min-width:20px;padding-inline:var(--space-1);text-align:center;font-size:var(--font-small);position:absolute}.task-meta{align-items:center;gap:var(--space-1);color:var(--muted);font-size:var(--font-small);display:flex}.task-meta .icon{width:16px;height:16px}.task-steps{margin:var(--space-5) 0;grid-template-columns:repeat(4,minmax(0,1fr));padding:0;list-style:none;display:grid}.task-steps li{align-items:center;gap:var(--space-2);font-size:var(--font-step);color:var(--muted);flex-direction:column;display:flex;position:relative}.task-steps li:not(:last-child):after{content:"";background:var(--border);width:calc(100% - 32px);height:1px;position:absolute;top:12px;left:calc(50% + 16px)}.task-steps li.completed:after{background:var(--primary)}.step-dot{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg);place-items:center;width:24px;height:24px;display:grid}.step-dot .icon{width:16px;height:16px}.completed .step-dot{color:var(--surface);background:var(--primary);border-color:var(--primary)}.task-steps [aria-current]{color:var(--primary);font-weight:var(--font-weight)}[aria-current] .step-dot{border:2px solid var(--primary);background:var(--surface)}.task-card .button-row{margin-top:var(--space-3)}.task-result{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.earned-stars{color:var(--text);font-size:var(--font-small);gap:var(--space-1);margin-left:auto}.future-task{padding:var(--space-4);margin-bottom:var(--space-3);background:var(--surface);color:var(--text-2);border-radius:var(--radius-card)}.worker-status{border-radius:0;margin:0}.topbar .worker-status{padding:var(--space-2) var(--space-4)}.install-banner{align-items:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-input);background:var(--primary-soft);margin-bottom:var(--space-3);font-size:var(--font-small);flex-wrap:wrap;display:flex}.install-banner p{flex:1;margin:0}.hero-card{padding:var(--space-5);background:var(--primary-soft);border-radius:var(--radius-card);margin-bottom:var(--space-4)}.sheet-grid,.report-grid{gap:var(--space-3);margin-bottom:var(--space-3);grid-template-columns:minmax(0,1fr);display:grid}.sheet-grid .card,.report-grid .card{margin-bottom:0}.sheet-code{color:var(--muted);font-size:var(--font-small)}.sheet-card h3{margin-top:var(--space-3)}.segments{margin:var(--space-4) 0;padding:0;list-style:none}.segments li{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;display:flex}.segment-index,.list-symbol{width:var(--control-height);height:var(--control-height);color:var(--primary);background:var(--primary-soft);border-radius:var(--radius-input);flex-shrink:0;place-items:center;display:grid}.segments small{display:block}.knowledge-picker{max-height:240px;margin-bottom:var(--space-3);overflow:auto}.lookup{gap:var(--space-2);align-items:center;display:flex}.lookup input{margin:0!important}.lookup .button{flex-shrink:0}.card form{margin-top:var(--space-4)}.card .lookup{margin-top:0}.optional-knowledge,.sheet-submission{margin-block:var(--space-3)}.create-submit{bottom:calc(var(--nav-height) + var(--space-3) + env(safe-area-inset-bottom));z-index:2;width:100%;margin-top:var(--space-4);position:sticky}.capture-zone{background:var(--bg);padding:var(--space-5) var(--space-3);border-radius:var(--radius-card);text-align:center;margin:var(--space-4) 0}.camera-symbol{border-radius:var(--radius-card);width:64px;height:64px;margin:0 auto var(--space-3);background:var(--primary-soft);color:var(--primary);place-items:center;display:grid}.camera-symbol .icon{width:32px;height:32px}.capture-zone strong{display:block}.capture-zone p{font-size:var(--font-small);color:var(--muted);margin:var(--space-2) 0 var(--space-4)}.file-button{margin:0;position:relative;overflow:hidden}.file-button input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0}.choice-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.choice{min-height:var(--control-height);padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-input);background:var(--surface);cursor:pointer;flex:1;justify-content:center;align-items:center;display:flex}.selected{color:var(--primary-pressed);background:var(--primary-soft);border-color:var(--primary)}.photo-grid{gap:var(--space-3);margin:var(--space-4) 0;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.photo-preview{min-width:0;position:relative}.photo-preview img{object-fit:cover;border-radius:var(--radius-input);width:100%;height:160px}.photo-preview>span{font-size:var(--font-small);display:block}.photo-preview .button{top:var(--space-1);right:var(--space-1);position:absolute}.success-panel{gap:var(--space-3);background:var(--primary-soft);color:var(--success-text);padding:var(--space-4);border-radius:var(--radius-card);margin-bottom:var(--space-3);display:flex}.success-mark{color:var(--success)}.gentle-note{text-align:center;font-size:var(--font-small);color:var(--muted);margin-top:var(--space-4)}progress{width:100%;accent-color:var(--primary)}.result-row{text-align:left;gap:var(--space-3);width:100%;padding:var(--space-4);background:var(--surface);box-shadow:var(--card-shadow);margin-bottom:var(--space-3);white-space:normal;border:0;display:flex}.row-main{flex:1;min-width:0}.row-main strong,.row-main small{overflow-wrap:anywhere;display:block}.row-main p{font-size:var(--font-small);margin:0}.history-row{align-items:flex-start;gap:var(--space-2);text-align:left;white-space:normal;flex-direction:column;width:100%;font-weight:400;display:flex}.history-row>span{font-size:var(--font-small);color:var(--muted)}.question{background:var(--surface);padding:var(--space-4);border-radius:var(--radius-card);margin-bottom:var(--space-3);box-shadow:var(--card-shadow)}.question-heading{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.question-heading h3{overflow-wrap:anywhere;flex:1;margin:0}.question-number{background:var(--bg);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-2);font-size:var(--font-small)}.answer-status{font-size:var(--font-small);color:var(--success-text)}.retry .answer-status{color:var(--accent-text)}.hint{background:var(--accent-soft);color:var(--accent-text);padding:var(--space-3);border-radius:var(--radius-input)}.answer-pair{gap:var(--space-5);font-size:var(--font-small);flex-wrap:wrap;display:flex}.answer-pair strong{font-size:var(--font-body);display:block}.tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.tags span{padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);color:var(--text-2);background:var(--bg);font-size:var(--font-small)}.submission-photo{object-fit:contain;background:var(--bg);border-radius:var(--radius-input);width:100%;max-height:240px}.stats{gap:var(--space-2);margin-bottom:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stats>div{background:var(--surface);border-radius:var(--radius-card);padding:var(--space-3);box-shadow:var(--card-shadow)}.stats span{color:var(--muted);font-size:var(--font-small);display:block}.stats strong{font-size:var(--font-title);color:var(--primary);margin-top:var(--space-1);display:block}.stats small{font-weight:400}.mastery-row{align-items:center;gap:var(--space-3);padding:var(--space-4) 0;border-bottom:1px solid var(--border);display:flex}.mastery-row:last-child{border:0}.mastery-row>div{flex:1;min-width:0}.mastery-row strong,.mastery-row b{font-size:var(--font-label)}.mastery-row small{margin:var(--space-1) 0 var(--space-2);display:block}.rank{color:var(--muted);font-size:var(--font-small)}.mastery-row meter{width:100%;height:8px;display:block}.mastery-row meter::-webkit-meter-bar{background:var(--bg);border:0}.mastery-row meter::-webkit-meter-optimum-value{background:var(--primary)}.mastery-row meter::-moz-meter-bar{background:var(--primary)}.unpracticed-list{padding-left:var(--space-5);color:var(--text-2);font-size:var(--font-small)}.unpracticed-list li{padding-block:var(--space-1)}.trend-chart{align-items:flex-end;gap:var(--space-3);min-height:160px;margin:var(--space-5) 0;display:flex;overflow-x:auto}.trend-chart>div{min-width:44px;font-size:var(--font-small);flex-direction:column;flex:1;align-items:center;display:flex}.trend-chart b{color:var(--text-2)}.trend-chart span{background:var(--primary);border-radius:var(--space-1) var(--space-1) 0 0;width:20px;margin:var(--space-1) 0;display:block}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:var(--font-small)}th,td{padding:var(--space-2);border-bottom:1px solid var(--border);text-align:left}th{font-weight:var(--font-weight);color:var(--text-2)}.distribution{margin:var(--space-4) 0}.distribution>div:first-child{justify-content:space-between;gap:var(--space-2);font-size:var(--font-small);margin-bottom:var(--space-2);display:flex}.distribution b{color:var(--muted);font-weight:400}.bar{border-radius:var(--radius-pill);background:var(--bg);height:8px;overflow:hidden}.bar span{background:var(--accent);height:100%;display:block}.advice ul{padding-left:var(--space-5)}.advice li{padding-bottom:var(--space-2)}.device-row{align-items:center;gap:var(--space-3);display:flex}.device-row h2{font-size:var(--font-body)}.modal-backdrop{padding:var(--space-4);background:var(--overlay);z-index:30;place-items:center;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.modal{width:100%;max-width:calc(var(--app-width) - var(--space-4) * 2);max-height:calc(100dvh - var(--space-6) * 2);margin:0;overflow:auto}.welcome{padding:var(--space-6) var(--space-4);display:block}.welcome-story{padding:var(--space-4) 0}.brand-icon{width:var(--control-height);height:var(--control-height);border-radius:var(--radius-input);background:var(--primary-soft);color:var(--primary);place-items:center;display:grid}.welcome-copy{padding-top:var(--space-5)}.welcome-copy p{color:var(--muted);font-size:var(--font-small)}.join-panel{padding:var(--space-5) 0;min-width:0}.join-panel>.button{margin-top:var(--space-3);width:100%}.join-panel>p.muted{font-size:var(--font-small)}.sheet-preview{width:100%;max-width:var(--app-width);background:var(--bg);height:100dvh;max-height:none;color:var(--text);border:0;margin:auto;padding:0;position:fixed;top:0;bottom:0;left:0;right:0}.sheet-preview[open]{flex-direction:column;display:flex}.sheet-preview::backdrop{background:var(--overlay)}.preview-toolbar{padding:max(var(--space-3), env(safe-area-inset-top)) var(--space-3) var(--space-3);background:var(--surface);flex-shrink:0}.preview-heading{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.preview-heading strong{overflow-wrap:anywhere;min-width:0}.preview-heading .button{flex-shrink:0}.preview-controls{justify-content:space-between;align-items:center;gap:var(--space-1);margin-top:var(--space-2);display:flex}.preview-controls .button{padding-inline:var(--space-2)}.preview-controls span{white-space:nowrap;font-size:var(--font-small);font-variant-numeric:tabular-nums}.preview-pages{min-height:0;padding:var(--space-3) var(--space-3) max(var(--space-3), env(safe-area-inset-bottom));touch-action:pan-x pan-y pinch-zoom;flex:1;overflow:auto}.preview-pages img{background:var(--surface);max-width:none;height:auto;display:block}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.list>.card>.button,.sheet-submission .button{width:100%}.list>.card>.button{margin-top:var(--space-2)}.mastery-basis{margin-top:var(--space-1);font-weight:400;display:block}.recovery{max-width:calc(var(--app-width) - var(--space-4) * 2);margin:var(--space-6) auto}.offline-banner{max-width:var(--app-width);margin-inline-start:auto;margin-inline-end:auto}.result-summary{padding:var(--space-4);margin-bottom:var(--space-3);background:var(--primary-soft);color:var(--primary-pressed);border-radius:var(--radius-card)}.result-summary>strong{font-size:var(--font-title)}.result-summary p{margin-bottom:0}.pagination{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.pagination>.button{flex:1}.photo-grid a{width:100%;min-width:0}
