@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(../media/bricolage-grotesque-vietnamese-wght-normal.0h_qcmzvudf58.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(../media/bricolage-grotesque-latin-ext-wght-normal.0i4j_a8lim1a-.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(../media/bricolage-grotesque-latin-wght-normal.300rpl789hft0.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:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(../media/dm-sans-latin-ext-wght-normal.0x9ccydb91kkt.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(../media/dm-sans-latin-wght-normal.0fpdy-lufm69d.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}
:root{--primary:#2f54eb;--primary-dark:#1e3bb8;--ink:#0e1a3a;--accent:#ffc933;--tint:#e3e9ff;--ground:#f5f7ff;--paper:#fff;--muted:#4f5b73;--line:#dde3f3;--radius:16px;--tap:48px;--font-display:"Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--font-body:"DM Sans Variable", "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--header-h:60px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 56px)}body{background:var(--ground);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.5}img{max-width:100%;display:block}a{color:var(--primary-dark);text-underline-offset:3px}a:hover{color:var(--ink)}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.015em;margin:0;line-height:1.08}h1{font-size:clamp(32px,8vw,56px);font-weight:800}h2{font-size:clamp(22px,5vw,30px);font-weight:800}h3{font-size:19px;font-weight:700}p{margin:0}:focus-visible{outline:3px solid var(--accent);box-shadow:0 0 0 5px var(--ink);outline-offset:2px;border-radius:6px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 16px}@media (min-width:720px){.wrap{padding:0 24px}}.site-header{z-index:40;-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--line);background:#f5f7fff0;position:sticky;top:0}.site-header .wrap{height:var(--header-h);justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{color:var(--ink);min-height:var(--tap);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-word{line-height:.9;font-family:var(--font-display);flex-direction:column;display:flex}.brand-word b{color:var(--primary);letter-spacing:-.01em;font-size:22px;font-weight:800}.brand-word span{letter-spacing:.16em;font-size:10.5px;font-weight:700}.header-actions{align-items:center;gap:6px;display:flex}.icon-btn{width:var(--tap);height:var(--tap);color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--tint);color:var(--ink)}.btn{min-height:var(--tap);font:700 16px/1 var(--font-body);cursor:pointer;white-space:nowrap;border:2px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;text-decoration:none;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);color:#fff}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover{color:#fff;background:#060d22}.btn-accent{background:var(--accent);color:var(--ink)}.btn-accent:hover{color:var(--ink);background:#ffb800}.btn-ghost{background:var(--paper);color:var(--ink);border-color:var(--line)}.btn-ghost:hover{border-color:var(--ink);color:var(--ink)}.btn-sm{min-height:40px;padding:0 14px;font-size:15px}.btn-block{width:100%}.hero{background:var(--primary);color:#fff;padding:28px 0 24px}.hero h1{color:#fff}.hero p.lede{color:#e3e9ff;max-width:34ch;margin-top:10px;font-size:18px}.hero .search{margin-top:20px}.search{flex-direction:column;gap:10px;display:flex}.search-row{gap:8px;display:flex}.search-input{border:2px solid var(--line);background:var(--paper);min-width:0;min-height:52px;font:500 17px var(--font-body);color:var(--ink);border-radius:999px;flex:1;padding:0 20px}.hero .search-input{border-color:#0000}.search-input::placeholder{color:#7a828d}.search-submit{min-height:52px;padding:0 22px}.near-btn{color:#fff;min-height:44px;font:700 15px var(--font-body);cursor:pointer;background:0 0;border:2px solid #ffffff8c;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:0 16px;display:inline-flex}.near-btn.on-light{color:var(--ink);border-color:var(--line);background:var(--paper)}.near-btn[aria-busy=true]{opacity:.7}.chips{scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;margin:0 -16px;padding:2px 16px 6px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}@media (min-width:720px){.chips{flex-wrap:wrap;margin:0;padding:2px 0 6px;overflow:visible}}.chip{scroll-snap-align:start;background:var(--paper);min-height:42px;color:var(--ink);border:1.5px solid var(--line);font:600 15px var(--font-body);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 16px;text-decoration:none;display:inline-flex}.chip:hover{border-color:var(--ink);color:var(--ink)}.chip[aria-current=true]{background:var(--ink);border-color:var(--ink);color:#fff}.hero .chip{color:#fff;background:#ffffff24;border-color:#ffffff59}.hero .chip:hover{background:#ffffff3d}.section{padding:28px 0}.section-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.section-head a{white-space:nowrap;font-size:15px;font-weight:700}.muted{color:var(--muted)}.small{font-size:14px}.day{margin-top:8px}.day-head{top:var(--header-h);z-index:5;background:var(--ground);font:800 16px var(--font-display);letter-spacing:.01em;color:var(--ink);border-bottom:2px solid var(--ink);padding:12px 0 8px;position:sticky}.cards{gap:10px;margin:0;padding:10px 0 0;list-style:none;display:grid}@media (min-width:900px){.cards.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}}.card{border-radius:var(--radius);background:var(--paper);color:var(--ink);border:1px solid var(--line);gap:14px;min-height:88px;padding:14px;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.card:hover{border-color:var(--ink);color:var(--ink)}.card:active{transform:scale(.99)}.badge{background:var(--tint);height:64px;color:var(--primary-dark);border-radius:12px;flex-direction:column;flex:0 0 58px;justify-content:center;align-items:center;line-height:1;display:flex}.badge .wk{font:700 11px var(--font-body);letter-spacing:.08em;color:var(--primary-dark)}.badge .num{font:800 26px var(--font-display);color:var(--ink);margin:2px 0}.badge .mon{font:700 11px var(--font-body);letter-spacing:.08em}.card-body{flex-direction:column;gap:3px;min-width:0;display:flex}.card-title{font:700 18px/1.25 var(--font-display);overflow-wrap:anywhere}.card-meta{color:var(--muted);font-size:15px}.card-meta strong{color:var(--ink);font-weight:700}.tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.tag{font:700 12px var(--font-body);letter-spacing:.04em;text-transform:uppercase;background:var(--tint);color:var(--primary-dark);border-radius:999px;padding:4px 8px}.tag.free{background:var(--accent);color:var(--ink)}.empty{background:var(--paper);border:1px dashed var(--line);border-radius:var(--radius);text-align:center;padding:28px 20px}.empty p+p{margin-top:8px}.toolbar{justify-content:space-between;align-items:center;gap:10px;padding:14px 0 4px;display:flex}.results-layout{gap:20px;display:grid}@media (min-width:960px){.results-layout{grid-template-columns:290px minmax(0,1fr);align-items:start}}.filters-panel{display:none}@media (min-width:960px){.filters-panel{top:calc(var(--header-h) + 16px);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:block;position:sticky}.filters-toggle{display:none!important}}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label,.field .label{font:700 14px var(--font-body)}.field select,.field input,.field textarea{min-height:var(--tap);border:1.5px solid var(--line);background:var(--paper);font:500 16px var(--font-body);color:var(--ink);border-radius:12px;width:100%;padding:0 14px}.field textarea{resize:vertical;min-height:120px;padding:12px 14px}.field .hint{color:var(--muted);font-size:13px}.checkbox{align-items:flex-start;gap:10px;font-size:15px;display:flex}.checkbox input{width:22px;height:22px;accent-color:var(--primary);margin-top:2px}dialog.sheet{background:var(--paper);width:100%;max-width:100%;max-height:88dvh;color:var(--ink);border:0;border-radius:22px 22px 0 0;margin:auto 0 0;padding:0}dialog.sheet::backdrop{background:#1e2a3a80}dialog.sheet[open]{animation:.2s ease-out up}@keyframes up{0%{opacity:.6;transform:translateY(40px)}to{opacity:1;transform:none}}.sheet-inner{padding:8px 18px calc(18px + env(safe-area-inset-bottom));max-height:88dvh;overflow-y:auto}.sheet-grip{background:var(--line);border-radius:99px;width:44px;height:5px;margin:6px auto 10px}.sheet-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.sheet-actions{background:var(--paper);gap:10px;padding-top:10px;display:flex;position:sticky;bottom:0}@media (min-width:720px){dialog.sheet{border-radius:22px;max-width:480px;margin:auto}}.detail{padding-top:20px;padding-bottom:120px}@media (min-width:900px){.detail{padding-bottom:48px}}.crumbs{color:var(--muted);flex-wrap:wrap;gap:6px;margin-bottom:12px;font-size:14px;display:flex}.crumbs a{color:var(--muted)}.detail-grid{gap:20px;display:grid}@media (min-width:900px){.detail-grid{grid-template-columns:minmax(0,1fr) 340px;align-items:start}}.detail h1{font-size:clamp(30px,7vw,46px)}.facts{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:6px 16px}.fact{border-bottom:1px solid var(--line);gap:12px;padding:12px 0;display:flex}.fact:last-child{border-bottom:0}.fact svg{color:var(--primary);flex:0 0 22px;margin-top:2px}.fact b{display:block}.detail-hero-img{border-radius:var(--radius);aspect-ratio:16/9;object-fit:cover;background:var(--tint);width:100%}.actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.action-bar{z-index:30;background:var(--paper);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));grid-template-columns:1fr 1fr;gap:10px;display:grid;position:fixed;bottom:0;left:0;right:0}@media (min-width:900px){.action-bar{display:none}}.notice{background:#fff6dd;border:1px solid #f0d58a;border-radius:12px;padding:12px 14px;font-size:15px}.prose p+p{margin-top:12px}.link-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}@media (min-width:720px){.link-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.tile{background:var(--paper);border:1px solid var(--line);min-height:64px;color:var(--ink);border-radius:14px;flex-direction:column;justify-content:center;gap:2px;padding:12px 14px;text-decoration:none;display:flex}.tile:hover{border-color:var(--ink);color:var(--ink)}.tile b{font:700 16px var(--font-display)}.tile span{color:var(--muted);font-size:13px}.topic-tile{flex-direction:row;justify-content:flex-start;align-items:center;gap:12px}.topic-tile svg{color:var(--primary);flex:none}.ad-slot{text-align:center;background:0 0;min-height:120px;margin:14px 0}.ad-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:11px}.site-footer{background:var(--ink);color:#d7dde6;padding:36px 0 calc(36px + env(safe-area-inset-bottom));margin-top:40px}.site-footer a{color:#fff;text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:underline}.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}@media (min-width:720px){.footer-grid{grid-template-columns:2fr 1fr 1fr 1fr}}.footer-grid h3{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;font-size:13px;font-family:var(--font-body);margin-bottom:10px}.footer-grid ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.footer-brand{grid-column:1/-1}@media (min-width:720px){.footer-brand{grid-column:auto}}.footer-legal{color:#aeb7c4;border-top:1px solid #2a3760;margin-top:28px;padding-top:16px;font-size:13px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.stack{gap:16px;display:grid}.row-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.success{background:#e7f3ea;border:1px solid #b9dcc3;border-radius:12px;padding:14px}.error{color:#8c2215;background:#fdecea;border:1px solid #f3c1bb;border-radius:12px;padding:14px}.admin-item{border-bottom:1px solid var(--line);gap:8px;padding:14px 0;display:grid}.admin-item:last-child{border-bottom:0}.admin-actions{flex-wrap:wrap;gap:8px;display:flex}.table-scroll{border:1px solid var(--line);background:var(--paper);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:10px 12px}.ok{color:#1f6a36;font-weight:700}.bad{color:#8c2215;font-weight:700}.pager{justify-content:space-between;gap:10px;margin-top:20px;display:flex}
