@font-face{font-family:"Baloo 2";font-style:normal;font-weight:400 800;font-display:swap;src:url(../fonts/baloo2-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:400 800;font-display:swap;src:url(../fonts/baloo2-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:"Baloo 2";font-style:normal;font-weight:400 800;font-display:swap;src:url(../fonts/baloo2-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Quicksand;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/quicksand-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Quicksand;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/quicksand-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Quicksand;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/quicksand-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #fff9f0;--surface: #ffffff;--surface-2: #fdf1e2;--border: #f0e4d7;--text: #2a2e43;--text-soft: #5a6079;--text-faint: #8a90a8;--brand: #ec1c24;--brand-dark: #c8151c;--brand-soft: #ffe9ea;--brand-text: #c8151c;--on-brand: #ffffff;--navy: #00468a;--navy-dark: #003569;--navy-soft: #eaf0ff;--navy-text: #00468a;--accent: #ffc93c;--accent-soft: #fff3d6;--accent-text: #8a5b00;--ok: #3ec6a8;--ok-soft: #e5f8f3;--ok-text: #0e8c6f;--warn: #ffc93c;--warn-soft: #fff3d6;--warn-text: #8a5b00;--err: #ec1c24;--err-soft: #ffe9ea;--err-text: #c8151c;--tier-1: #c0651f;--tier-2: #6b7fa3;--tier-3: #c98a00;--tier-4: #0fa588;--font: "Quicksand", "Segoe UI", system-ui, -apple-system, sans-serif;--font-heading: "Baloo 2", "Quicksand", "Segoe UI", system-ui, sans-serif;--fs-body: 20px;--fs-sm: 17px;--fs-lg: 24px;--fs-xl: 30px;--fs-2xl: 38px;--lh: 1.6;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--radius: 20px;--radius-sm: 12px;--radius-lg: 28px;--tap: 48px;--shadow: 0 1px 2px rgb(0 70 138 / .05), 0 4px 14px rgb(0 70 138 / .08);--shadow-lg: 0 10px 32px rgb(0 70 138 / .14);color-scheme:light}:root[data-present=on]{--fs-body: 34px;--fs-sm: 28px;--fs-lg: 44px;--fs-xl: 56px;--fs-2xl: 72px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh);color:var(--text);background-color:var(--bg);background-image:url(../icons/bg-doodle.svg),linear-gradient(165deg,#ffedcf,#ffd9e0 48%,#cfe5ff);background-size:360px 360px,100% 100%;background-attachment:scroll,fixed;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}h1,h2,h3{margin:0 0 var(--sp-3);line-height:1.25;font-family:var(--font-heading);color:var(--navy)}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}p{margin:0 0 var(--sp-3)}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.page{max-width:900px;margin:0 auto;padding:var(--sp-5) var(--sp-4) var(--sp-7)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-5);box-shadow:var(--shadow)}a.card{transition:transform .12s ease,box-shadow .12s ease}a.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.spacer{flex:1}.btn{min-height:var(--tap);padding:var(--sp-3) var(--sp-5);border-radius:999px;background:var(--surface-2);color:var(--text);font-family:var(--font-heading);font-weight:700;transition:transform .08s ease,background .15s ease,box-shadow .15s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand);color:var(--on-brand);box-shadow:0 4px 14px #ec1c2447}.btn-primary:hover:not(:disabled){background:var(--brand-dark)}.btn-navy{background:var(--navy);color:var(--on-brand);box-shadow:0 4px 14px #00468a38}.btn-navy:hover:not(:disabled){background:var(--navy-dark)}.btn-ghost{background:var(--surface);border:2px solid var(--border)}.btn-ghost:hover:not(:disabled){border-color:var(--navy);color:var(--navy)}.btn-lg{min-height:60px;font-size:var(--fs-lg);padding:var(--sp-4) var(--sp-6)}.appbar-title,.appbar-slogan{font-family:var(--font-heading);color:var(--navy);font-size:var(--fs-lg);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appbar-brand-spacer{flex:0 0 0}@media (max-width: 640px){.appbar-brand{flex-wrap:wrap!important}.appbar-brand-spacer{flex:1}.appbar-slogan{order:9;flex-basis:100%;font-size:var(--fs-sm);white-space:normal;line-height:1.3}}.badge{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--sp-1);padding:2px var(--sp-3);border-radius:999px;font-size:var(--fs-sm);font-weight:600;background:var(--surface-2);color:var(--text-soft);white-space:nowrap}.tier-1{background:color-mix(in srgb,var(--tier-1) 15%,transparent);color:var(--tier-1)}.tier-2{background:color-mix(in srgb,var(--tier-2) 15%,transparent);color:var(--tier-2)}.tier-3{background:color-mix(in srgb,var(--tier-3) 18%,transparent);color:var(--tier-3)}.tier-4{background:color-mix(in srgb,var(--tier-4) 15%,transparent);color:var(--tier-4)}.feedback{border-radius:var(--radius-sm);padding:var(--sp-4);font-weight:600}.feedback-ok{background:var(--ok-soft);color:var(--ok-text)}.feedback-err{background:var(--err-soft);color:var(--err-text)}.feedback-hint{background:var(--navy-soft);color:var(--navy-text)}.frac{display:inline-grid;grid-template-rows:auto auto;vertical-align:middle;margin:0 .18em;font-size:.92em;line-height:1.1;text-align:center;white-space:nowrap}.frac-num{border-bottom:2px solid currentColor;padding:0 .22em}.frac-den{padding:0 .22em}.frac-wrap{display:inline-block;white-space:nowrap}.bang-giong-phu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;padding:var(--sp-3);background:#00000073}.bang-giong{width:100%;max-width:560px;max-height:85vh;overflow:auto;overscroll-behavior:contain}.giong-dong{display:flex;align-items:center;gap:var(--sp-2)}.giong-dong .grade-pill{flex:1;min-width:0;text-align:left}.giong-nhan{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nut-nghe{min-width:150px;min-height:48px;font-size:var(--fs-body)}.sup{font-size:.68em;vertical-align:super;line-height:0;margin-left:.04em}.expr{font-family:inherit;font-weight:700;color:var(--navy-text);background:var(--navy-soft);border-radius:var(--radius-sm);padding:.06em .4em;white-space:nowrap}.blank-input{min-width:4.5ch;min-height:var(--tap);padding:var(--sp-2) var(--sp-3);margin:0 var(--sp-1);border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:center;font-weight:700;font-size:var(--fs-body)}.blank-input:focus{border-color:var(--brand)}.blank-ok{border-color:var(--ok);background:var(--ok-soft)}.blank-err{border-color:var(--err);background:var(--err-soft)}.figure{display:block;max-width:100%;height:auto;margin:var(--sp-4) auto}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}.picker{max-width:900px;margin:0 auto;padding:var(--sp-4) var(--sp-3) 0}.picker-heading{font-size:var(--fs-xl);margin-bottom:var(--sp-4)}.picker-grid{display:grid;grid-template-columns:104px 1fr;gap:var(--sp-3);align-items:start}.picker-col{display:flex;flex-direction:column;gap:var(--sp-2);max-height:calc(100dvh - 250px);overflow-y:auto;padding-bottom:var(--sp-2)}.picker-col.is-waiting{opacity:.55}.picker-group{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-3)}.picker-group-title{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);margin:0;line-height:1.3}.picker-hint{color:var(--text-faint);font-size:var(--fs-sm);padding:var(--sp-3)}.grade-pill{min-height:48px;padding:var(--sp-2) var(--sp-3);border:2px solid var(--border);border-radius:999px;background:var(--surface);font-family:var(--font-heading);font-weight:700;font-size:var(--fs-sm);text-align:center;transition:border-color .15s ease,background .15s ease}.grade-pill.is-on{border-color:var(--navy);background:var(--navy);color:var(--on-brand)}.subject-card{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--sp-1) var(--sp-3);min-height:60px;padding:var(--sp-3);border:2px solid var(--border);border-left:6px solid var(--subject-color, var(--brand));border-radius:var(--radius-sm);background:var(--surface);text-align:left;width:100%}.subject-card .badge{grid-column:2}.subject-card.is-on{border-color:var(--navy);border-left-color:var(--subject-color, var(--navy));background:var(--navy-soft)}.subject-icon{font-size:26px;line-height:1;flex:none}.subject-name{flex:1 1 auto;font-weight:700;min-width:0}.badge-ready{background:var(--ok-soft);color:var(--ok-text)}.subject-group{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);border:2px solid var(--border);border-left:6px solid var(--subject-color, var(--brand));border-radius:var(--radius-sm);background:var(--surface);width:100%}.subject-group.is-on{border-color:var(--navy);border-left-color:var(--subject-color, var(--navy))}.subject-group-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.subject-group-hint{font-size:var(--fs-sm);color:var(--text-faint);margin-left:auto}.program-list{display:flex;flex-direction:column;gap:var(--sp-2)}.program-pill{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--sp-1) var(--sp-2);min-height:48px;padding:var(--sp-2) var(--sp-3);border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);text-align:left;width:100%}.program-pill .badge{grid-column:2}.program-pill.is-on{border-color:var(--navy);background:var(--navy-soft);color:var(--navy-text)}.program-name{font-weight:700}@media (min-width: 640px){.program-pill{grid-template-columns:auto 1fr auto}.program-pill .badge{grid-column:3}}.picker-cta{position:sticky;bottom:0;display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;max-width:900px;margin:0 auto;padding:var(--sp-3) var(--sp-3) calc(var(--sp-3) + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border)}.picker-summary{flex:1;min-width:140px;display:flex;flex-direction:column;line-height:1.3}.picker-summary-sub{font-size:var(--fs-sm);color:var(--text-faint)}.picker-coming{flex:1;min-width:200px;font-size:var(--fs-sm)}@media (min-width: 640px){.picker-grid{grid-template-columns:220px 1fr;gap:var(--sp-4)}.picker{padding:var(--sp-5) var(--sp-4) 0}.subject-card{grid-template-columns:auto 1fr auto}.subject-card .badge{grid-column:3}}@media (max-width: 560px){.page{padding:var(--sp-4) var(--sp-3) var(--sp-6)}.card{padding:var(--sp-4)}.appbar{padding:var(--sp-2) var(--sp-3);gap:var(--sp-1)}.appbar strong{font-size:var(--fs-body)}.appbar .btn{min-height:44px;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm)}.appbar .badge{padding:2px var(--sp-2)}.appbar-logo-mark{display:none!important}.appbar:not(.appbar-brand){flex-wrap:wrap!important}.appbar-title{order:9;flex-basis:100%;font-size:var(--fs-sm);white-space:normal;line-height:1.25;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.appbar .appbar-lang{min-width:0!important;padding:var(--sp-2)}.appbar>.badge,.appbar>.btn{flex:none}}@media print{.no-print{display:none!important}body{background:#fff;font-size:13pt}.card{box-shadow:none;border:1px solid #ccc;break-inside:avoid}}
