@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(../media/atkinson-hyperlegible-latin-ext-400-normal.2-qiblqvy4tin.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-ext-400-normal.0ui-kbwrql7nn.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(../media/atkinson-hyperlegible-latin-400-normal.2_4quiuxbm00_.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-400-normal.1814tdl5ng145.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(../media/atkinson-hyperlegible-latin-ext-700-normal.39fx4g5252mtj.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-ext-700-normal.1jgehju1n4bgu.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(../media/atkinson-hyperlegible-latin-700-normal.3ij26zqblfe95.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-700-normal.0kr4d1tyihlyu.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(../media/source-serif-4-cyrillic-ext-opsz-normal.1de0btrvrx1g0.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(../media/source-serif-4-cyrillic-opsz-normal.0ro4h4xo3qx8u.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(../media/source-serif-4-greek-opsz-normal.3_-y5ukx9q-pk.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(../media/source-serif-4-vietnamese-opsz-normal.168d4l_ytwlsw.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(../media/source-serif-4-latin-ext-opsz-normal.2bbbeamtyurje.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(../media/source-serif-4-latin-opsz-normal.2fkb5nt7yf_6p.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Comic Neue;font-style:normal;font-display:swap;font-weight:400;src:url(../media/comic-neue-latin-400-normal.2zb05lufeic9h.woff2)format("woff2"),url(../media/comic-neue-latin-400-normal.09275ge-tf2cg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Comic Neue;font-style:normal;font-display:swap;font-weight:700;src:url(../media/comic-neue-latin-700-normal.0w72prq77o_0o.woff2)format("woff2"),url(../media/comic-neue-latin-700-normal.0xpe_ckem9r46.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-cyrillic-ext-400-normal.3llip5gdtq6ee.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-ext-400-normal.37cpwuas_4tpy.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-cyrillic-400-normal.123gmka-u-660.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-400-normal.2qqi-jaq060ud.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-greek-400-normal.11tra_3r8gne-.woff2)format("woff2"),url(../media/jetbrains-mono-greek-400-normal.18cfsy-6ft9zs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-vietnamese-400-normal.0l8l0wb2sbqrm.woff2)format("woff2"),url(../media/jetbrains-mono-vietnamese-400-normal.0c64nmg3blt24.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-ext-400-normal.2osyrgmzpqw_0.woff2)format("woff2"),url(../media/jetbrains-mono-latin-ext-400-normal.3vtl6hswl5p-t.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-400-normal.37baup9wa8gsy.woff2)format("woff2"),url(../media/jetbrains-mono-latin-400-normal.27_azdahucoj5.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--bg:#fcfcfd;--surface:#fff;--ink:#292b31;--ink-2:#3f424d;--muted:#595d6c;--faint:#75798c;--placeholder:#8a8e9f;--hairline:#eceef4;--border:#e0e3ec;--border-strong:#d6d9e4;--divider:#b2b6ca;--hover:#f3f4f8;--hover-2:#f5f6fa;--accent:#5d5294;--accent-deep:#423a6a;--accent-ring:#796cbf;--accent-soft:#f5f4ff;--accent-softer:#e7e5fe;--accent-line:#d2cefd;--free:#2c7a4b;--danger:#b23a3a;--font-body:"Atkinson Hyperlegible", system-ui, sans-serif;--font-serif:"Source Serif 4 Variable", Georgia, serif;--font-brand:"Comic Sans MS", "Comic Sans", "Chalkboard SE", "Comic Neue", cursive;--font-mono:"JetBrains Mono", ui-monospace, monospace;--page-max:1240px;--gutter:24px;--shadow-pop:0 16px 40px #292b311f}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-deep)}button,input,select,textarea{font-family:inherit}:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}input::placeholder,textarea::placeholder{color:var(--placeholder)}img{max-width:100%;display:block}.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{flex-direction:column;min-height:100vh;display:flex}.app main{flex:1}.container{max-width:var(--page-max);padding-left:var(--gutter);padding-right:var(--gutter);margin:0 auto}@media (max-width:600px){:root{--gutter:16px}}.serif{font-family:var(--font-serif)}.h-section{font-family:var(--font-serif);letter-spacing:-.005em;margin:0;font-size:24px;font-weight:500}.h-page{font-family:var(--font-serif);letter-spacing:-.012em;margin:0 0 36px;font-size:clamp(30px,4vw,40px);font-weight:500;line-height:1.15}.h-sub{font-family:var(--font-serif);margin:0 0 10px;font-size:18px;font-weight:600}.muted{color:var(--muted)}.lede{color:var(--muted);margin:0;font-size:16px;line-height:1.55}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:24px;display:flex}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:36px 24px;display:grid}@media (max-width:520px){.grid-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 14px}}.btn{border:1.5px solid var(--accent);height:44px;color:var(--accent);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--accent-soft);color:var(--accent)}.btn:active{background:var(--accent-softer)}.btn:disabled{opacity:.5;cursor:not-allowed;background:var(--surface)}.btn-lg{border-width:2px;border-radius:10px;gap:10px;width:100%;height:58px;font-size:18px}.btn-md{border-radius:10px;height:52px;padding:0 24px;font-size:16px}.btn-block{width:100%}.btn-quiet{border:1px solid var(--border);background:var(--surface);height:44px;color:var(--ink);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.btn-quiet:hover{background:var(--hover-2);color:var(--ink)}.btn-danger{color:var(--danger);border-color:#e7c3c3}.btn-danger:hover{color:var(--danger);background:#fdf3f3}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.link-btn:hover{color:var(--accent-deep)}.link-plain{color:inherit;text-decoration:none}.link-plain:hover{color:var(--accent)}.seg{border:1px solid var(--border);background:var(--surface);border-radius:8px;display:inline-flex;overflow:hidden}.seg button,.seg a{color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none}.seg [aria-pressed=true],.seg [aria-current=true]{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)}.field{flex-direction:column;gap:6px;display:flex}.field>span:first-child,.field-label{color:var(--ink-2);font-size:14px;font-weight:500}.input,.select,.textarea{border:1px solid var(--border);width:100%;height:48px;color:var(--ink);background:var(--surface);border-radius:8px;outline:none;padding:0 14px;font-size:16px}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent-ring)}.input[aria-invalid=true]{border-color:var(--danger)}.textarea{resize:vertical;height:auto;min-height:96px;padding:12px 14px;line-height:1.5}.select-wrap{display:block;position:relative}.select{appearance:none;cursor:pointer;padding-right:44px}.select-wrap svg{color:var(--muted);pointer-events:none;position:absolute;top:50%;right:16px;transform:translateY(-50%)}.field-error{color:var(--danger);min-height:1em;font-size:13px}.hint{color:var(--faint);font-size:13px}.site-header{border-bottom:1px solid var(--hairline);background:var(--surface);z-index:20;position:sticky;top:0}.site-header .container{flex-wrap:wrap;align-items:center;gap:28px;padding-top:14px;padding-bottom:14px;display:flex}.brand{font-family:var(--font-brand);color:var(--ink);white-space:nowrap;font-size:22px;font-weight:700;text-decoration:none}.brand:hover{color:var(--ink)}.nav-search{flex:240px;max-width:420px;position:relative}.nav-search svg{color:var(--faint);position:absolute;top:50%;left:12px;transform:translateY(-50%)}.nav-search input{border:1px solid var(--border);width:100%;height:40px;color:var(--ink);background:var(--surface);border-radius:8px;outline:none;padding:0 12px 0 36px;font-size:15px}.nav-search input:focus{border-color:var(--accent-ring)}.header-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.header-btn{color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.header-btn:hover{background:var(--hover);color:var(--ink)}.header-btn.outlined{border:1px solid var(--border);padding:8px 12px}.header-user{color:var(--muted);align-items:center;gap:6px;padding:0 8px;font-size:14px;display:inline-flex}@media (max-width:640px){.site-header .container{gap:12px 16px}.nav-search{flex-basis:100%;order:3;max-width:none}.header-user .email{display:none}}.site-footer{border-top:1px solid var(--hairline);background:var(--surface)}.site-footer .container{color:var(--muted);flex-wrap:wrap;align-items:center;gap:16px 32px;padding-top:36px;padding-bottom:36px;font-size:14px;display:flex}.site-footer strong{color:var(--ink)}.crumbs{color:var(--faint);flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.crumbs li{align-items:center;gap:8px;display:flex}.crumbs li:after{content:"/";color:var(--divider)}.crumbs li:last-child:after{content:none}.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--accent)}.ws-card{color:var(--ink);flex-direction:column;gap:12px;min-width:0;text-decoration:none;display:flex}.ws-card:hover{color:var(--ink)}.ws-card-art{aspect-ratio:4/5;border-radius:12px;justify-content:center;align-items:flex-end;padding:42px 22px 0;transition:transform .15s;display:flex;position:relative;overflow:hidden}.ws-card:hover .ws-card-art{transform:translateY(-2px)}.ws-card-paper{background:#fff;border-radius:3px 3px 0 0;width:100%;height:100%;overflow:hidden;box-shadow:0 1px 3px #292b310f,0 8px 24px #292b310f}.ws-card-paper img{width:100%;height:auto}.ws-card-chip{color:var(--ink-2);background:#ffffffd9;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:500;position:absolute;top:12px;left:12px}.ws-card-body{flex-direction:column;gap:4px;display:flex}.ws-card-kicker{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.ws-card-title{font-size:16px;font-weight:700;line-height:1.3}.ws-card:hover .ws-card-title{color:var(--accent)}.ws-card-row{color:var(--muted);justify-content:space-between;align-items:baseline;gap:10px;font-size:14px;display:flex}.price{color:var(--ink);white-space:nowrap;font-weight:600}.price.free{color:var(--free)}.faux-page{flex-direction:column;gap:7%;width:100%;height:100%;padding:12% 10%;display:flex}.faux-page .fp-head{gap:10%;display:flex}.faux-page .fp-head span{background:var(--hairline);flex:1;height:2px;margin-top:6%}.faux-page .fp-title{border-radius:3px;width:62%;height:7%}.faux-page .fp-rows{grid-template-columns:1fr 1fr;gap:12% 10%;display:grid}.faux-page .fp-rows span{background:#eef0f5;border-radius:3px;height:5px}.faux-page .fp-label{text-align:center;font-family:var(--font-mono);color:var(--placeholder);margin-top:auto;font-size:12px;line-height:1.6}.hero{padding-top:clamp(48px,8vw,96px);padding-bottom:56px}.hero h1{font-family:var(--font-brand);-webkit-text-stroke:.8px currentColor;letter-spacing:-.012em;text-align:center;text-wrap:balance;margin:0 0 40px;font-size:clamp(34px,5.2vw,56px);font-weight:400;line-height:1.06}.hero-search{position:relative}.hero-search>svg{color:var(--muted);position:absolute;top:30px;left:20px;transform:translateY(-50%)}.hero-search input{border:1.5px solid var(--border-strong);width:100%;height:60px;color:var(--ink);background:var(--surface);border-radius:12px;outline:none;padding:0 120px 0 54px;font-size:18px;box-shadow:0 2px 10px #292b310a}.hero-search input:focus{border-color:var(--accent-ring)}.hero-search .btn{height:44px;padding:0 20px;font-size:16px;position:absolute;top:8px;right:8px}@media (max-width:520px){.hero-search input{padding-right:16px;font-size:16px}.hero-search .btn{display:none}}.suggest{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-pop);z-index:10;border-radius:12px;padding:8px;position:absolute;top:68px;left:0;right:0}.suggest-item{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:0;border-radius:8px;align-items:center;gap:14px;padding:10px 12px;text-decoration:none;display:flex}.suggest-item:hover,.suggest-item[data-active=true]{background:var(--hover-2);color:var(--ink)}.suggest-icon{border-radius:8px;flex:none;place-items:center;width:34px;height:34px;display:grid}.suggest-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.suggest-text b{font-size:15px;font-weight:500}.suggest-text small{color:var(--muted);font-size:13px}.suggest-all{border-top:1px solid var(--hairline);color:var(--accent);margin-top:6px;padding:12px;font-size:15px;font-weight:500}.suggest-all:hover{background:var(--accent-soft);color:var(--accent)}.suggest-empty{color:var(--muted);padding:12px;font-size:15px}.popular{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:6px 18px;margin-top:18px;font-size:15px;display:flex}.popular a{color:var(--accent);-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line)}.popular a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.browse-picker{flex-wrap:wrap;align-items:flex-end;gap:16px;max-width:820px;display:flex}.browse-picker .field{flex:220px}.browse-picker .select{border-color:var(--border-strong);border-radius:10px;height:52px;padding-left:16px}.course-strip{gap:8px;margin:0 0 36px;padding:2px 2px 6px;display:flex;overflow-x:auto}.course-chip{border:1px solid var(--border);background:var(--surface);height:48px;color:var(--ink);cursor:pointer;border-radius:10px;flex:none;align-items:center;gap:10px;padding:0 18px;font-size:15px;font-weight:500;text-decoration:none;display:flex}.course-chip:hover{border-color:var(--accent-ring);color:var(--ink)}.course-chip[aria-current=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.course-chip small{color:var(--faint);font-size:13px;font-weight:400}.browse-layout{align-items:flex-start;gap:48px;display:flex}.filters{flex-direction:column;flex:0 0 252px;gap:32px;display:flex}.filters-title{margin-bottom:12px;font-size:15px;font-weight:600}.grade-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.grade-grid a{border:1px solid var(--border);background:var(--surface);height:40px;color:var(--ink-2);border-radius:8px;place-items:center;font-size:14px;font-weight:500;text-decoration:none;display:grid}.grade-grid a:hover{border-color:var(--accent-ring);color:var(--ink-2)}.grade-grid a[aria-current=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.topic-selected{border:1px solid var(--accent);background:var(--accent-soft);border-radius:10px;align-items:flex-start;gap:10px;margin-bottom:10px;padding:12px 14px;display:flex}.topic-selected div{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.topic-selected small{color:var(--muted);font-size:13px}.topic-selected b{color:var(--accent);font-size:15px;font-weight:600}.icon-btn{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;padding:4px;display:inline-grid}.icon-btn:hover{background:var(--hover)}.topic-search{margin-bottom:6px;position:relative}.topic-search svg{color:var(--faint);position:absolute;top:50%;left:11px;transform:translateY(-50%)}.topic-search input{border:1px solid var(--border);width:100%;height:40px;color:var(--ink);background:var(--surface);border-radius:8px;outline:none;padding:0 10px 0 34px;font-size:14px}.topic-list{flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.topic-row{text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:8px;text-decoration:none;display:flex}.topic-row:hover{background:var(--hover-2);color:var(--ink)}.topic-row[aria-current=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.topic-row span:first-child{flex-direction:column;flex:1;gap:1px;min-width:0;font-size:15px;display:flex}.topic-row small{color:var(--faint);font-size:13px;font-weight:400}.topic-row .count{color:var(--faint);font-size:14px;font-weight:400}.check-row{cursor:pointer;color:var(--ink);align-items:center;gap:10px;padding:5px 0;font-size:15px;text-decoration:none;display:flex}a.check-row:hover{color:var(--ink)}.check-row .box{background:var(--surface);border:1.5px solid #8a8e9f;border-radius:4px;flex:none;place-items:center;width:18px;height:18px;display:grid}.check-row:hover .box{border-color:var(--accent-ring)}.check-row[aria-checked=true] .box{background:var(--accent);border-color:var(--accent)}.check-row[aria-checked=true] .box:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:9px;transform:translateY(-1px)rotate(45deg)}.check-row input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;margin:0}.check-row span{flex:1}.check-row small{color:var(--faint);font-size:14px}.results{flex:1;min-width:0}.results-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.filters-toggle{display:none}@media (max-width:820px){.browse-layout{flex-direction:column;gap:24px}.filters{flex-basis:auto;width:100%;display:none}.filters.open{display:flex}.filters-toggle{height:38px;font-size:14px;display:inline-flex}}.sheet-layout{flex-wrap:wrap;align-items:flex-start;gap:56px;margin-top:24px;display:flex}.sheet-gallery{flex-direction:column;flex:460px;gap:16px;min-width:0;display:flex}.sheet-stage{border-radius:16px;justify-content:center;padding:clamp(24px,5vw,48px);display:flex}.sheet-page{aspect-ratio:8.5/11;background:#fff;border-radius:4px;width:100%;max-width:480px;position:relative;overflow:hidden;box-shadow:0 2px 6px #292b3114,0 20px 50px #292b311a}.sheet-page img{object-fit:cover;object-position:top;width:100%;height:100%}.sheet-lock{text-align:center;background:#fcfcfdc7;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px;display:flex;position:absolute;inset:0}.sheet-lock b{font-size:17px}.sheet-lock span{color:var(--muted);max-width:280px;font-size:15px;line-height:1.5}.thumbs{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.thumb{aspect-ratio:8.5/11;border:2px solid var(--border);cursor:pointer;background:#fff;border-radius:6px;place-items:center;width:64px;padding:0;display:grid;position:relative;overflow:hidden}.thumb[aria-current=true]{border-color:var(--accent)}.thumb img{object-fit:cover;object-position:top;width:100%;height:100%}.thumb .n{font-family:var(--font-mono);color:var(--placeholder);font-size:10px}.thumb svg{color:var(--faint);position:absolute}.sheet-info{flex-direction:column;flex:380px;min-width:0;max-width:540px;display:flex}.sheet-kicker{align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.sheet-title-row{justify-content:space-between;align-items:baseline;gap:20px;margin:10px 0 12px;display:flex}.sheet-title-row h1{font-family:var(--font-serif);letter-spacing:-.012em;text-wrap:balance;margin:0;font-size:clamp(28px,3.4vw,38px);font-weight:500;line-height:1.15}.sheet-title-row .price{font-size:clamp(24px,2.8vw,30px)}.sheet-meta{color:var(--muted);font-size:16px;line-height:1.6}.sheet-actions{flex-direction:column;gap:12px;margin-top:32px;display:flex}.sheet-facts{flex-direction:column;gap:12px;margin-top:28px;font-size:15px;display:flex}.sheet-facts div{align-items:flex-start;gap:12px;display:flex}.sheet-facts svg{flex:none;margin-top:2px}.bundle-card{background:var(--surface);border:1px solid #e6e8f0;border-radius:12px;flex-direction:column;gap:10px;margin-top:32px;padding:22px;display:flex}.sheet-about{flex-direction:column;gap:32px;margin-top:44px;display:flex}.sheet-about p{color:var(--ink-2);text-wrap:pretty;margin:0;font-size:16px;line-height:1.65}.objectives{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.objectives li{color:var(--ink-2);gap:12px;font-size:16px;line-height:1.55;display:flex}.objectives svg{color:var(--accent);flex:none;margin-top:4px}.mono{font-family:var(--font-mono);font-size:14px}.two-col{flex-wrap:wrap;align-items:flex-start;gap:48px;display:flex}.two-col>:first-child{flex:480px;min-width:0}.summary{background:var(--surface);border:1px solid #e6e8f0;border-radius:14px;flex-direction:column;flex:0 340px;gap:12px;width:100%;padding:26px;display:flex}.summary-row{justify-content:space-between;gap:16px;font-size:15px;display:flex}.summary-total{border-top:1px solid var(--hairline);justify-content:space-between;padding-top:12px;font-size:18px;font-weight:600;display:flex}.cart-item{border-bottom:1px solid var(--hairline);align-items:center;gap:18px;padding:20px 0;display:flex}.cart-thumb{aspect-ratio:4/5;border-radius:8px;flex:none;justify-content:center;align-items:flex-end;width:64px;padding:8px 10px 0;display:flex}.cart-thumb div{background:#fff;border-radius:2px 2px 0 0;width:100%;height:100%}.cart-item-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.cart-item-body a{color:var(--ink);font-size:16px;font-weight:600;text-decoration:none}.cart-item-body a:hover{color:var(--accent)}.text-btn{color:var(--muted);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;align-self:flex-start;margin-top:2px;padding:0;font-size:14px;text-decoration:underline}.text-btn:hover{color:var(--accent)}.notice{color:#6b5413;background:#fff8e6;border:1px solid #f1dfae;border-radius:10px;align-items:flex-start;gap:12px;padding:14px 16px;font-size:14px;line-height:1.5;display:flex}.notice svg{flex:none;margin-top:1px}.order-line{border-bottom:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;display:flex}.toast{z-index:50;background:var(--ink);color:#f3f5fe;border-radius:10px;align-items:center;gap:10px;max-width:calc(100vw - 48px);padding:14px 18px;font-size:15px;display:flex;position:fixed;bottom:24px;left:24px;box-shadow:0 12px 32px #292b3140}.toast svg{color:#9ad3ad;flex:none}.modal-backdrop{z-index:60;background:#292b316b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px;flex-direction:column;gap:14px;width:min(460px,100%);padding:32px;display:flex;box-shadow:0 24px 60px #292b3140}.modal-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.modal-head h2{letter-spacing:-.005em;margin:0;font-size:22px;font-weight:600;line-height:1.25}.modal p{color:var(--ink-2);margin:0;font-size:16px;line-height:1.6}.modal .foot{color:var(--muted);font-size:14px;line-height:1.5}.admin-bar{background:var(--ink);color:#f3f5fe;font-size:14px}.admin-bar .container{align-items:center;gap:20px;height:44px;display:flex}.admin-bar a,.admin-bar button{color:#d9dcf0;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;text-decoration:none}.admin-bar a:hover,.admin-bar button:hover{color:#fff}.admin-bar .mode{font-family:var(--font-mono);color:#a9adc3;margin-left:auto;font-size:12px}.admin-table{border-collapse:collapse;width:100%;font-size:14px}.admin-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px;font-weight:600}.admin-table td{border-bottom:1px solid var(--hairline);vertical-align:middle;padding:12px}.admin-table tr:hover td{background:var(--hover-2)}.table-scroll{border:1px solid var(--hairline);background:var(--surface);border-radius:12px;overflow-x:auto}.badge{background:var(--hover);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.badge.ok{color:var(--free);background:#e8f5ec}.badge.warn{color:#8a6510;background:#fff4dc}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;display:grid}.form-section{background:var(--surface);border:1px solid var(--hairline);border-radius:14px;flex-direction:column;gap:20px;padding:24px;display:flex}.form-section h2{margin:0;font-size:17px}.drop{border:1.5px dashed var(--border-strong);background:var(--bg);border-radius:12px;flex-direction:column;gap:8px;padding:18px;display:flex}.drop.has-file{border-style:solid;border-color:var(--accent-line);background:var(--accent-soft)}.preview-strip{flex-wrap:wrap;gap:10px;display:flex}.preview-strip figure{width:86px;color:var(--muted);flex-direction:column;gap:4px;margin:0;font-size:12px;display:flex}.preview-strip img{aspect-ratio:8.5/11;object-fit:cover;object-position:top;border:1px solid var(--border);background:#fff;border-radius:4px;width:86px}.progress{color:var(--muted);font-size:14px}.error-box{color:var(--danger);background:#fdf3f3;border:1px solid #f0cfcf;border-radius:10px;padding:12px 14px;font-size:14px}.grade-picker{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;max-width:640px;display:grid}.grade-picker button{border:1px solid var(--border);background:var(--surface);height:40px;color:var(--ink-2);cursor:pointer;border-radius:8px;font-size:14px;font-weight:500}.grade-picker button:hover{border-color:var(--accent-ring)}.grade-picker button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.tax{flex-direction:column;gap:14px;max-width:900px;display:flex}.tax.busy{opacity:.7;pointer-events:none}.tax-error{z-index:5;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:sticky;top:76px}.tax-course{background:var(--surface);border:1px solid var(--hairline);border-left:4px solid var(--border);border-radius:12px}.tax-new{border-left-color:var(--accent);padding:22px}.tax-course-head{align-items:center;gap:8px;padding:6px 12px 6px 6px;display:flex}.tax-toggle{cursor:pointer;text-align:left;min-width:0;color:var(--ink);background:0 0;border:0;border-radius:8px;flex-wrap:wrap;flex:1;align-items:center;gap:12px;padding:10px;display:flex}.tax-toggle:hover{background:var(--hover-2)}.tax-toggle .caret{color:var(--faint);transition:transform .15s}.tax-toggle[aria-expanded=true] .caret{transform:rotate(90deg)}.tax-icon{border-radius:8px;flex:none;place-items:center;width:32px;height:32px;display:grid}.tax-course-name{font-size:17px;font-weight:700}.tax-course-body{border-top:1px solid var(--hairline);flex-direction:column;gap:24px;padding:4px 22px 22px;display:flex}.tax-course-form{flex-direction:column;gap:16px;padding-top:18px;display:flex}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatches button{border:3px solid var(--surface);width:30px;height:30px;box-shadow:0 0 0 1px var(--border);cursor:pointer;border-radius:50%}.swatches button[aria-checked=true]{box-shadow:0 0 0 2px var(--ink)}.icon-choices{flex-wrap:wrap;gap:6px;display:flex}.icon-choices button{border:1px solid var(--border);background:var(--surface);width:38px;height:38px;color:var(--muted);cursor:pointer;border-radius:8px;place-items:center;display:grid}.icon-choices button[aria-checked=true]{border-color:currentColor}.tax-topics{flex-direction:column;gap:6px;display:flex}.tax-topic{border:1px solid var(--hairline);border-radius:10px;padding:6px 12px 8px}.tax-row{align-items:center;gap:10px;min-height:36px;display:flex}.tax-row>.hint{white-space:nowrap;margin-left:auto}.tax-subs{border-left:2px solid var(--hairline);margin:0;padding:0 0 0 18px;list-style:none}.tax-name{flex:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.tax-name .tax-rename{opacity:0}.tax-row:hover .tax-rename,.tax-rename:focus-visible{opacity:1}.tax-input{max-width:320px;height:34px;font-size:15px}.tax-move{display:inline-flex}.tax-move .icon-btn:disabled,.tax-del .icon-btn:disabled{opacity:.3;cursor:not-allowed}.tax-del{align-items:center;gap:8px;display:inline-flex}.tax-danger{border-top:1px solid var(--hairline);padding-top:14px}@media (hover:none){.tax-name .tax-rename{opacity:1}}.prose{color:var(--ink-2);font-size:17px;line-height:1.7}.prose p{text-wrap:pretty;margin:0 0 18px}.prose h2{font-family:var(--font-serif);color:var(--ink);margin:36px 0 10px;font-size:22px;font-weight:600}.prose ul{margin:0 0 18px;padding-left:22px}.prose li{margin-bottom:6px}.prose .lede-box{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:12px;padding:16px 18px}.site-footer nav{flex-wrap:wrap;gap:20px;margin-left:auto;display:flex}.site-footer nav a{color:var(--muted);text-decoration:none}.site-footer nav a:hover{color:var(--accent)}
