:root{color-scheme:light;--font-cjk:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC";--font-sans:"DM Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",var(--font-cjk),sans-serif;--font-display:var(--font-sans);--font-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,"Liberation Mono",var(--font-cjk),monospace;--radius:0;--ease:cubic-bezier(0.2,0.7,0.2,1);--header-height:73px;--blue:#2349df;--on-blue:#fffdf7;--on-blue-muted:rgba(255,253,247,0.72);--accent-yellow:#eafa64;--on-yellow:#24261f;--bg:#f3f1e9;--bg-subtle:#ebe9df;--surface:#fffdf7;--surface-2:#e8e8dc;--surface-hover:#e4e3d7;--callout-bg:#edeee4;--text:#24261f;--text-2:#33352d;--muted:#62665b;--faint:#7d8074;--border:#cecec0;--border-strong:#a9aa9b;--rule-ink:#24261f;--heading:#24261f;--accent:#2349df;--accent-hover:#24261f;--accent-soft:#e2e6f6;--accent-text:#2349df;--on-accent:#fffdf7;--success:#1e7148;--success-soft:#dfeedd;--warning:#85590a;--warning-soft:#f4ecd2;--danger:#b0302a;--danger-soft:#f4e1dc;--inverse-bg:#24261f;--inverse-text:#f3f1e9;--inverse-muted:#b3b5a8;--code-bg:#e8e8dc;--code-text:#364494;--pre-bg:#24261f;--pre-text:#f3f1e9;--header-bg:#f3f1e9;--overlay:rgba(30,31,27,0.4);--focus:#2349df;--selection:#eafa64;--on-selection:#24261f;--shadow:6px 6px 0 var(--rule-ink);--shadow-sm:3px 3px 0 var(--rule-ink);--marker:rgba(234,250,100,0.62);--ink:var(--text);--paper:var(--bg);--paper-deep:var(--surface-2);--line:var(--border);--navy:var(--heading);--navy-soft:var(--accent-text);--coral:var(--accent);--coral-soft:var(--accent-soft);--green:var(--success);--green-soft:var(--success-soft)}:root:lang(ja){--font-cjk:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo","Noto Sans JP","Noto Sans CJK JP"}:root:lang(zh-TW){--font-cjk:"PingFang TC","Microsoft JhengHei","Noto Sans TC","Noto Sans CJK TC"}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#191a15;--bg-subtle:#1f201a;--surface:#24261f;--surface-2:#2d2f27;--surface-hover:#32342b;--callout-bg:#23251e;--text:#ecebe2;--text-2:#d4d3c9;--muted:#a3a698;--faint:#878a7d;--border:#393b32;--border-strong:#5a5d50;--rule-ink:#ecebe2;--heading:#f3f1e9;--accent:#3456f0;--accent-hover:#4e6df5;--accent-soft:rgba(84,110,255,0.16);--accent-text:#98aaff;--on-accent:#ffffff;--success:#6fcf9b;--success-soft:rgba(111,207,155,0.14);--warning:#e3b85a;--warning-soft:rgba(227,184,90,0.14);--danger:#f0857a;--danger-soft:rgba(240,133,122,0.14);--inverse-bg:#0f100c;--inverse-text:#ecebe2;--inverse-muted:#a3a698;--code-bg:#2d2f27;--code-text:#b5c1ff;--pre-bg:#0f100c;--pre-text:#ecebe2;--header-bg:#191a15;--overlay:rgba(0,0,0,0.6);--focus:#98aaff;--marker:rgba(234,250,100,0.2)}}:root[data-theme=dark]{color-scheme:dark;--bg:#191a15;--bg-subtle:#1f201a;--surface:#24261f;--surface-2:#2d2f27;--surface-hover:#32342b;--callout-bg:#23251e;--text:#ecebe2;--text-2:#d4d3c9;--muted:#a3a698;--faint:#878a7d;--border:#393b32;--border-strong:#5a5d50;--rule-ink:#ecebe2;--heading:#f3f1e9;--accent:#3456f0;--accent-hover:#4e6df5;--accent-soft:rgba(84,110,255,0.16);--accent-text:#98aaff;--on-accent:#ffffff;--success:#6fcf9b;--success-soft:rgba(111,207,155,0.14);--warning:#e3b85a;--warning-soft:rgba(227,184,90,0.14);--danger:#f0857a;--danger-soft:rgba(240,133,122,0.14);--inverse-bg:#0f100c;--inverse-text:#ecebe2;--inverse-muted:#a3a698;--code-bg:#2d2f27;--code-text:#b5c1ff;--pre-bg:#0f100c;--pre-text:#ecebe2;--header-bg:#191a15;--overlay:rgba(0,0,0,0.6);--focus:#98aaff;--marker:rgba(234,250,100,0.2)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 24px);-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.7 var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,select,textarea{font:inherit}button{border-radius:0}a,button{color:inherit}a{text-decoration:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:750;line-height:1.3;text-wrap:balance}h1,h2,h3,h4,p{margin-top:0}li,p{text-wrap:pretty}.brand strong,.lesson-footer strong,.lesson-link strong,.module-name,h1,h2,h3,h4{word-break:keep-all;overflow-wrap:anywhere}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:4px}::selection{background:var(--selection);color:var(--on-selection)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip{position:fixed;z-index:100;left:18px;top:-100px;padding:10px 20px;background:var(--accent-yellow);color:var(--on-yellow)}.skip:focus{top:12px}.shell{width:100%;max-width:1388px;margin:0 auto;padding:0 54px}.muted{color:var(--muted)}.title-unit,.wordmark{display:inline-block;white-space:nowrap}.wordmark{font-family:DM Sans,Arial,sans-serif;font-weight:1000;line-height:.83;letter-spacing:-.083em;text-transform:lowercase}.wordmark-dot{display:inline-block;width:.155em;height:.155em;margin-left:.06em;overflow:hidden;background:var(--text);color:transparent;vertical-align:baseline}.brand-mark{width:25px;height:25px;flex:none;overflow:hidden;padding-left:4px;background:var(--blue);color:var(--on-blue);font:900 27px/20px DM Sans,Arial,sans-serif;letter-spacing:-.11em}.brand-name{text-transform:lowercase}.micro{font:10px/1.7 var(--font-mono);letter-spacing:.12em}.eyebrow,.micro{text-transform:uppercase}.eyebrow{display:flex;align-items:center;gap:13px;margin-bottom:25px;color:var(--accent-text);font:11px/1.6 var(--font-mono);letter-spacing:.09em}.eyebrow:before{content:"";display:block;width:22px;height:2px;flex:none;background:currentColor}.badge{display:inline-flex;align-items:center;padding:1px 6px;border:1px solid;color:var(--accent-text);font:10px/1.7 var(--font-sans);white-space:nowrap}.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:11px;margin-bottom:20px;color:var(--muted);font-size:12px}.button-primary,.solid-link{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;min-height:49px;padding:12px 19px;border:0;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:600;line-height:1.6;cursor:pointer;transition:background .18s var(--ease),transform .18s var(--ease)}.button-primary:hover,.solid-link:hover{background:var(--accent-hover);transform:translateY(-2px)}.button-primary .arrow,.solid-link .arrow{font-size:19px;line-height:1}.button-primary{justify-content:center;gap:14px}.button-secondary,.outline-button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:9px 16px;border:1px solid var(--rule-ink);background:none;color:var(--text);font-size:13px;font-weight:600;cursor:pointer;transition:color .16s var(--ease),border-color .16s var(--ease)}.button-secondary:hover,.outline-button:hover{border-color:var(--accent-text);color:var(--accent-text)}.button-large{min-height:52px;font-size:15px}.button-primary:disabled,.button-secondary:disabled,.solid-link:disabled{opacity:.5;cursor:not-allowed;transform:none}.text-link{display:inline-flex;align-items:center;gap:26px;padding-bottom:5px;border-bottom:1px solid var(--rule-ink);font-size:13px;font-weight:650;white-space:nowrap;transition:color .18s var(--ease),border-color .18s var(--ease)}.form-error,.form-success{margin:10px 0 0;font-size:14px;line-height:1.6}.form-error{color:var(--danger)}.form-success{color:var(--success)}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:30;height:var(--header-height);border-bottom:1px solid var(--border);background:var(--header-bg)}.header-inner{height:100%;display:flex;align-items:center;gap:28px}.site-header .brand{display:flex;align-items:center;gap:11px;font-size:21px;font-weight:850;letter-spacing:-.055em}.site-meta{min-width:0;margin-right:auto;padding-left:22px;overflow:hidden;color:var(--muted);font-size:11px;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis}.nav{display:flex;gap:31px;font-size:13px}.nav,.nav a{align-items:center}.nav a{position:relative;display:inline-flex;min-height:44px}.nav a:hover,.nav a[aria-current=page]{color:var(--accent-text)}.nav a[aria-current=page]:after{content:"";position:absolute;bottom:2px;left:calc(50% - 2px);width:5px;height:5px;background:var(--accent)}.site-menu{display:flex;align-items:center;gap:12px}.site-menu-backdrop,.site-menu-button{display:none}.language-switcher select{height:34px;padding:0 26px 0 0;border:0;border-bottom:1px solid var(--border);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='none' stroke='%2362665b' stroke-width='1.6'%3E%3Cpath d='M1 3l4 4 4-4'/%3E%3C/svg%3E") no-repeat right 4px center,transparent;color:var(--text);font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.theme-toggle{display:inline-grid;place-items:center;width:34px;height:34px;border:0;background:transparent;color:var(--text);cursor:pointer}.language-switcher select:hover,.theme-toggle:hover{color:var(--accent-text)}.site-account{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 0 2px;border-bottom:1px solid var(--rule-ink);font-size:13px;white-space:nowrap}.auth-page{display:grid;place-items:center;min-height:58vh;padding:56px 0}.auth-card{width:min(100%,460px);padding:32px 30px 30px;border:1px solid var(--rule-ink);background:var(--surface);box-shadow:8px 8px 0 var(--accent-yellow)}.auth-card h1{margin-bottom:12px;font-size:28px;line-height:1.35;letter-spacing:-.04em}.auth-card>p{margin:0 0 26px;color:var(--muted);font-size:14px;line-height:1.85}.auth-form{display:grid;grid-gap:10px;gap:10px}.auth-form label{font-size:12px;font-weight:650}.adm-shell input,.adm-shell select,.adm-shell textarea,.auth-form input,.redeem-form input{width:100%;min-height:46px;padding:0 12px;border:1px solid var(--border-strong);background:var(--bg);color:var(--text);font-size:15px;transition:border-color .16s var(--ease)}.auth-form input:focus,.redeem-form input:focus{border-color:var(--accent)}.auth-form input[inputmode=numeric]{font:500 22px/1 var(--font-mono);letter-spacing:.32em}.auth-form .button-primary{margin-top:8px}.auth-sent{margin:0 0 6px;color:var(--muted);font-size:13px;line-height:1.7}.auth-links{display:flex;justify-content:space-between;margin-top:4px}.auth-links button{min-height:44px;border:0;padding:0;background:none;color:var(--accent-text);font-size:13px;cursor:pointer}.auth-links button:hover{text-decoration:underline;text-underline-offset:4px}.site-header .brand{color:var(--text)}.header-inner{justify-content:space-between}.header-actions{display:flex;align-items:center;gap:18px}.header-actions .nav{gap:22px}.link-button{min-height:34px;padding:0;border:0;border-bottom:1px solid var(--rule-ink);background:none;font-size:13px;cursor:pointer}.link-button:hover{color:var(--accent-text);border-color:var(--accent-text)}main.shell{padding-top:48px;padding-bottom:80px}.page-title{margin:0 0 8px;font-size:clamp(30px,5vw,46px);line-height:1.1;letter-spacing:-.05em}.page-lede{margin:0 0 36px;color:var(--muted)}.panel{margin-bottom:28px;padding:28px 28px 26px;border:1px solid var(--rule-ink);background:var(--surface)}.panel h2{margin:0 0 18px;font-size:20px;letter-spacing:-.03em}.panel-shadow{box-shadow:var(--shadow)}.meter-numbers{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 24px;margin-bottom:14px}.meter-used{font-size:clamp(34px,6vw,56px);font-weight:850;line-height:1;letter-spacing:-.05em}.meter-used small{margin-left:8px;color:var(--muted);font-size:16px;font-weight:500;letter-spacing:0}.meter-left{color:var(--muted);font-size:14px}.meter{position:relative;height:26px;border:1px solid var(--rule-ink);background:var(--bg)}.meter-fill{height:100%;background:var(--accent);transition:width .4s var(--ease)}.meter[data-level=warn] .meter-fill{background:var(--warning)}.meter[data-level=full] .meter-fill{background:var(--danger)}.meter-ticks{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);pointer-events:none}.meter-ticks span{border-right:1px solid var(--border)}.meter-ticks span:last-child{border-right:0}.notice{margin:18px 0 0;padding:12px 14px;border-left:3px solid var(--danger);background:var(--danger-soft);color:var(--text);font-size:14px}.notice.ok{border-color:var(--success);background:var(--success-soft)}.sub-url{display:flex;gap:0;margin-bottom:14px}.sub-url input{flex:1 1;min-width:0;padding:0 12px;border:1px solid var(--border-strong);border-right:0;background:var(--bg);color:var(--text);font:13px var(--font-mono)}.sub-url .button-primary,.sub-url input{min-height:46px}.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.hint{margin:14px 0 0;color:var(--muted);font-size:13px;line-height:1.8}.hint code,.table code{padding:1px 5px;background:var(--code-bg);color:var(--code-text);font:12px var(--font-mono)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{padding:9px 10px;background:var(--inverse-bg);color:var(--inverse-text);font-weight:600;text-align:left;white-space:nowrap}.table td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:hover td{background:var(--surface-hover)}.mini-meter{width:120px;height:8px;border:1px solid var(--rule-ink);background:var(--bg)}.mini-meter>span{display:block;height:100%;background:var(--accent)}.dot{display:inline-block;width:8px;height:8px;margin-right:6px;background:var(--success)}.dot.bad{background:var(--danger)}.dot.unknown{background:var(--faint)}.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.inline-form label{display:grid;grid-gap:4px;gap:4px;font-size:12px;font-weight:650}.inline-form input{min-height:40px;padding:0 10px;border:1px solid var(--border-strong);background:var(--bg);color:var(--text)}.inline-form input:focus{border-color:var(--accent);outline:none}.small-button{min-height:32px;padding:4px 10px;font-size:12px}@media (max-width:600px){.shell{padding:0 16px}main.shell{padding-top:28px}.panel{padding:20px 16px}.site-meta{display:none}.header-actions{gap:12px}.header-actions .nav{gap:14px}.sub-url{flex-direction:column}.sub-url input{border-right:1px solid var(--border-strong);border-bottom:0}}@media (prefers-reduced-motion:reduce){*,:after,:before{transition:none!important}}