@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.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{--bg-top:#dcebff;--bg-mid:#eef5ff;--bg-bottom:#f8fbff;--surface:#ffffffd6;--surface-solid:#fff;--glass:#ffffff85;--glass-strong:#ffffffbd;--glass-border:#ffffffd9;--primary:#3d8bfd;--primary-deep:#2a74e8;--primary-soft:#e4f0ff;--primary-tint:#3d8bfd1f;--text:#0f1f38;--secondary:#5f7190;--tertiary:#94a3ba;--separator:#0f1f3814;--fill:#0f1f380b;--danger:#e5484d;--shadow:0 10px 30px #245cb41a, 0 2px 6px #245cb40f;--shadow-primary:0 14px 34px #3d8bfd59;--radius-card:22px;--radius-pill:999px;--gradient-primary:linear-gradient(135deg, #5ea4ff 0%, #3d8bfd 55%, #2f78f0 100%);--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter Variable", system-ui, sans-serif;--spring:cubic-bezier(.3, 1.3, .5, 1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0}body{min-height:100dvh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;background:linear-gradient(180deg, var(--bg-top) 0%, var(--bg-mid) 38%, var(--bg-bottom) 100%);background-attachment:fixed;overflow-x:hidden}button{font:inherit;color:inherit}a{color:var(--primary-deep)}.blob{filter:blur(60px);z-index:0;pointer-events:none;border-radius:50%;position:fixed}.blob.one{opacity:.7;background:#b9d6ff;width:320px;height:320px;top:-80px;right:-100px}.blob.two{opacity:.8;background:#d6e6ff;width:260px;height:260px;top:380px;left:-120px}.blob.three{opacity:.6;background:#c4ddff;width:220px;height:220px;bottom:60px;right:-60px}.screen{z-index:1;max-width:440px;padding:calc(env(safe-area-inset-top) + 18px) 16px calc(env(safe-area-inset-bottom) + 120px);margin:0 auto;position:relative}.screen.no-tabbar{padding-bottom:calc(env(safe-area-inset-bottom) + 32px)}.glass{background:var(--glass);-webkit-backdrop-filter:blur(24px)saturate(180%);backdrop-filter:blur(24px)saturate(180%);border:1px solid var(--glass-border);box-shadow:inset 0 1px 0 #fffffff2, var(--shadow)}.top{justify-content:space-between;align-items:center;gap:12px;min-height:40px;margin-bottom:6px;display:flex}.caption{letter-spacing:.02em;color:var(--secondary);text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.pill-btn{border-radius:var(--radius-pill);cursor:pointer;color:var(--primary-deep);flex:none;align-items:center;gap:6px;padding:8px 14px;font-size:15px;font-weight:600;display:inline-flex}.back-btn{border-radius:var(--radius-pill);cursor:pointer;color:var(--primary-deep);border:0;align-items:center;gap:2px;padding:8px 12px 8px 8px;font-size:16px;font-weight:500;display:inline-flex}.back-btn svg{width:20px;height:20px}.large-title{letter-spacing:-.025em;margin:4px 0;font-size:34px;font-weight:700;line-height:1.1}.subtitle{color:var(--secondary);margin:0 0 18px;font-size:15px}.subtitle b{color:var(--primary-deep);font-weight:600}.segmented{border-radius:var(--radius-pill);grid-template-columns:1fr 1fr;margin-bottom:18px;padding:4px;display:grid;position:relative}.segmented .thumb{width:calc((100% - 8px) / var(--count,2));transform:translateX(calc(100% * var(--index,0)));border-radius:var(--radius-pill);background:var(--surface-solid);transition:transform .35s var(--spring);position:absolute;top:4px;bottom:4px;left:4px;box-shadow:0 3px 10px #245cb424,0 1px 2px #245cb414}.segmented button{z-index:1;cursor:pointer;color:var(--secondary);border-radius:var(--radius-pill);background:0 0;border:0;padding:9px 0;font-size:15px;font-weight:600;transition:color .2s;position:relative}.segmented button[aria-selected=true]{color:var(--text)}.now{color:#fff;background:var(--gradient-primary);box-shadow:var(--shadow-primary);border-radius:26px;margin-bottom:20px;padding:18px 18px 16px;position:relative;overflow:hidden}.now:after{content:"";border-radius:inherit;pointer-events:none;background:radial-gradient(120% 80% at 0 0,#ffffff59 0%,#fff0 55%);position:absolute;inset:0}.now-label{border-radius:var(--radius-pill);background:#ffffff38;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:600;display:inline-flex}.now-label i{background:#fff;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #ffffff4d}.now h2{letter-spacing:-.02em;margin:10px 0 2px;font-size:24px;font-weight:700}.now .meta{opacity:.92;font-size:15px}.now .after{opacity:.88;margin-top:10px;font-size:14px}.progress{background:#ffffff47;border-radius:3px;height:6px;margin:14px 0 8px;overflow:hidden}.progress span{border-radius:inherit;background:#fff;height:100%;transition:width .6s;display:block}.now .times{opacity:.92;font-feature-settings:"tnum" 1;justify-content:space-between;font-size:13px;display:flex}.now.soft{background:var(--glass-strong);color:var(--text);box-shadow:var(--shadow);border:1px solid var(--glass-border)}.now.soft:after{display:none}.now.soft .now-label{background:var(--primary-tint);color:var(--primary-deep)}.now.soft .now-label i{background:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.now.soft .meta,.now.soft .after{color:var(--secondary);opacity:1}.section-title{justify-content:space-between;align-items:baseline;gap:12px;margin:0 4px 10px;display:flex}.section-title h3{letter-spacing:-.015em;margin:0;font-size:20px;font-weight:700}.section-title span{color:var(--secondary);font-size:14px}.notice{background:var(--primary-tint);color:var(--primary-deep);border-radius:18px;align-items:center;gap:10px;margin-bottom:14px;padding:12px 14px;font-size:14px;font-weight:500;display:flex}.notice svg{flex:none;width:20px;height:20px}.notice.muted{background:var(--fill);color:var(--secondary)}.notice.preliminary{background:var(--glass-strong);color:var(--text);border:1px dashed #3d8bfd73;align-items:flex-start}.notice.preliminary svg{color:var(--primary-deep);margin-top:1px}.notice.preliminary b{color:var(--primary-deep);margin-bottom:2px;font-size:15px;font-weight:600;display:block}.notice.preliminary span{color:var(--secondary);font-size:13px;font-weight:400;line-height:1.4;display:block}.list{flex-direction:column;gap:10px;display:flex}.lesson{border-radius:var(--radius-card);background:var(--surface);-webkit-backdrop-filter:blur(20px)saturate(160%);backdrop-filter:blur(20px)saturate(160%);box-shadow:var(--shadow);border:1px solid #ffffffe6;grid-template-columns:58px 1fr;align-items:start;gap:12px;padding:14px 16px;transition:opacity .3s;display:grid}.lesson.past{opacity:.5}.lesson.current{box-shadow:0 0 0 2px var(--primary), var(--shadow)}.lesson.allday{grid-template-columns:1fr}.time{font-feature-settings:"tnum" 1}.time .start{letter-spacing:-.01em;font-size:17px;font-weight:600}.time .end{color:var(--tertiary);margin-top:2px;font-size:14px}.lesson .row{align-items:flex-start;gap:8px;display:flex}.pair{min-width:22px;height:22px;color:var(--primary-deep);background:var(--primary-soft);border-radius:11px;flex:none;place-items:center;margin-top:1px;padding:0 6px;font-size:12px;font-weight:700;display:inline-grid}.subject{letter-spacing:-.01em;overflow-wrap:anywhere;font-size:17px;font-weight:600;line-height:1.3}.chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.chip{color:var(--secondary);border-radius:var(--radius-pill);background:var(--fill);align-items:center;gap:5px;padding:4px 9px;font-size:13px;display:inline-flex}.chip svg{opacity:.8;flex:none;width:13px;height:13px}.chip.accent{color:var(--primary-deep);background:var(--primary-tint)}.allday-label{color:var(--primary-deep);margin-bottom:4px;font-size:13px;font-weight:600}.footer-note{text-align:center;color:var(--tertiary);margin-top:18px;font-size:13px}.empty{text-align:center;border-radius:26px;margin-top:4px;padding:36px 24px}.empty .icon{width:56px;height:56px;color:var(--primary-deep);background:var(--primary-tint);border-radius:18px;place-items:center;margin:0 auto 14px;display:grid}.empty .icon svg{width:28px;height:28px}.empty h3{letter-spacing:-.01em;margin:0 0 6px;font-size:19px;font-weight:700}.empty p{color:var(--secondary);margin:0;font-size:15px;line-height:1.45}.empty .btn{margin-top:18px}.btn{cursor:pointer;text-align:center;border:0;border-radius:16px;width:100%;padding:15px;font-size:17px;font-weight:600;text-decoration:none;transition:transform .15s,opacity .15s;display:block}.btn:active{transform:scale(.98)}.btn.primary{background:var(--primary);color:#fff;box-shadow:0 8px 20px #3d8bfd4d}.btn.secondary{background:var(--primary-tint);color:var(--primary-deep)}.btn:disabled{opacity:.5;cursor:default}.group-list{margin-bottom:22px}.group-list .header{color:var(--secondary);text-transform:uppercase;letter-spacing:.02em;margin:0 16px 8px;font-size:13px;font-weight:600}.group-list .footer{color:var(--tertiary);margin:8px 16px 0;font-size:13px;line-height:1.4}.group-list .items{border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow);border:1px solid #ffffffe6;overflow:hidden}.item{text-align:left;cursor:pointer;width:100%;min-height:52px;color:inherit;background:0 0;border:0;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;display:flex;position:relative}.item+.item:before{content:"";background:var(--separator);height:1px;position:absolute;top:0;left:16px;right:0}.item:active{background:var(--fill)}.item .item-icon{color:#fff;background:var(--primary);border-radius:9px;flex:none;place-items:center;width:30px;height:30px;display:grid}.item .item-icon svg{width:18px;height:18px}.item .texts{flex:1;min-width:0}.item .title{font-size:17px;line-height:1.3}.item .sub{color:var(--secondary);margin-top:1px;font-size:14px}.item .value{color:var(--secondary);font-size:16px}.item .chevron{width:16px;height:16px;color:var(--tertiary);flex:none}.item .check{width:20px;height:20px;color:var(--primary);flex:none}.item.static{cursor:default}.item.static:active{background:0 0}.search{border-radius:14px;align-items:center;gap:8px;margin-bottom:18px;padding:10px 14px;display:flex}.search svg{width:18px;height:18px;color:var(--tertiary);flex:none}.search input{min-width:0;font:inherit;color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:17px}.search input::placeholder{color:var(--tertiary)}.welcome{text-align:center;flex-direction:column;justify-content:center;min-height:calc(100dvh - 60px);display:flex}.app-icon{color:#fff;background:var(--gradient-primary);width:96px;height:96px;box-shadow:var(--shadow-primary);border-radius:28px;place-items:center;margin:0 auto 22px;font-size:46px;font-weight:700;display:grid}.welcome h1{letter-spacing:-.03em;margin:0 0 8px;font-size:40px;font-weight:700}.welcome p{color:var(--secondary);margin:0 0 32px;font-size:17px;line-height:1.45}.features{text-align:left;gap:16px;margin:0 8px 36px;display:grid}.feature{align-items:flex-start;gap:14px;display:flex}.feature .item-icon{width:40px;height:40px;color:var(--primary-deep);background:var(--primary-tint);border-radius:12px;flex:none;place-items:center;display:grid}.feature .item-icon svg{width:22px;height:22px}.feature b{margin-bottom:2px;font-size:16px;display:block}.feature span{color:var(--secondary);font-size:14px;line-height:1.4}.skeleton{border-radius:var(--radius-card);background:linear-gradient(90deg,#ffffff8c 0%,#ffffffe6 50%,#ffffff8c 100%) 0 0/200% 100%;animation:1.4s linear infinite shimmer}.skeleton.card{height:84px}.skeleton.now-card{border-radius:26px;height:150px;margin-bottom:20px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.tabbar{z-index:10;left:50%;bottom:calc(env(safe-area-inset-bottom) + 14px);background:var(--glass-strong);border-radius:30px;grid-template-columns:repeat(4,1fr);width:min(400px,100% - 32px);padding:6px;display:grid;position:fixed;transform:translate(-50%)}.tab{cursor:pointer;z-index:1;color:var(--secondary);transition:color .25s, transform .3s var(--spring);background:0 0;border:0;border-radius:24px;flex-direction:column;align-items:center;gap:3px;padding:7px 0 6px;font-size:11px;font-weight:600;text-decoration:none;display:flex;position:relative}.tab:active{transform:scale(.9)}.tab svg{width:24px;height:24px}.tab.active{color:var(--primary-deep)}.tab.active svg{animation:tab-pop .5s var(--spring)}.tab-thumb{background:var(--primary-tint);width:calc(25% - 3px);transform:translateX(calc(100% * var(--index,0)));transition:transform .5s var(--spring);border-radius:24px;position:absolute;top:6px;bottom:6px;left:6px;box-shadow:inset 0 1px #ffffffb3,0 4px 14px #3d8bfd24}.sheet-backdrop{z-index:20;background:#0f1f3840;animation:.25s fade-in;position:fixed;inset:0}.sheet{z-index:21;overscroll-behavior:contain;width:min(440px,100%);min-height:75dvh;max-height:88dvh;padding:10px 16px calc(env(safe-area-inset-bottom) + 20px);-webkit-backdrop-filter:blur(30px)saturate(180%);backdrop-filter:blur(30px)saturate(180%);animation:sheet-up .4s var(--spring);background:#f4f9ffeb;border-radius:30px 30px 0 0;position:fixed;bottom:0;left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:0 -10px 40px #245cb42e}.sheet .grabber{background:#0f1f382e;border-radius:3px;width:38px;height:5px;margin:0 auto 12px}.sheet-head{justify-content:space-between;align-items:center;margin:0 4px 14px;display:flex}.sheet-head h2{letter-spacing:-.015em;margin:0;font-size:20px;font-weight:700}.sheet-head button{cursor:pointer;color:var(--primary-deep);background:0 0;border:0;padding:6px;font-size:17px;font-weight:600}.fade{animation:.3s fade-up}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translate(-50%,100%)}to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.picker-heading{color:var(--secondary);text-transform:uppercase;letter-spacing:.02em;margin:0 4px 10px;font-size:13px;font-weight:600}.picker-nav{align-items:center;gap:12px;margin-bottom:18px;display:flex}.picker-title{letter-spacing:-.015em;font-size:20px;font-weight:700}.tile-section{margin-bottom:18px}.tile-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px;display:grid}.tile-grid.groups{grid-template-columns:repeat(3,1fr);margin-bottom:0}.tile{cursor:pointer;background:var(--surface);-webkit-backdrop-filter:blur(20px)saturate(160%);backdrop-filter:blur(20px)saturate(160%);box-shadow:var(--shadow);color:var(--text);transition:transform .2s var(--spring), background .2s, color .2s;border:1px solid #ffffffe6;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.tile:active{transform:scale(.94)}.tile.prefix{aspect-ratio:1;padding:6px}.tile.prefix .letter{letter-spacing:-.02em;font-size:26px;font-weight:700;line-height:1}.tile.prefix .count{color:var(--secondary);font-size:11px;font-weight:500}.tile.group{letter-spacing:-.01em;padding:16px 6px;font-size:17px;font-weight:600}.tile.selected{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-primary);border-color:#0000}.tile.selected .count{color:#ffffffd9}.skeleton.tile-skeleton{aspect-ratio:1;border-radius:20px}.switch{cursor:pointer;background:#78809638;border:0;border-radius:31px;flex:none;width:51px;height:31px;padding:0;transition:background .25s;position:relative}.switch:after{content:"";width:27px;height:27px;transition:transform .3s var(--spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 3px 8px #00000026,0 1px 1px #0000001f}.switch[aria-checked=true]{background:var(--primary)}.switch[aria-checked=true]:after{transform:translate(20px)}.switch:disabled{opacity:.5;cursor:default}.steps{text-align:left;gap:14px;margin:4px 0 6px;display:grid}.step{color:var(--text);align-items:center;gap:12px;font-size:15px;display:flex}.step .num{width:28px;height:28px;color:var(--primary-deep);background:var(--primary-tint);border-radius:50%;flex:none;place-items:center;font-size:14px;font-weight:700;display:grid}.step svg{vertical-align:-3px;width:18px;height:18px;color:var(--primary-deep)}.notice.success{color:#1f7a57;background:#34c08b24}.notice.error{color:#b4292f;background:#e5484d1f}.notice-text{flex:1}.notice-action{cursor:pointer;color:inherit;font:inherit;background:#ffffffd9;border:0;border-radius:12px;flex:none;padding:7px 12px;font-size:13px;font-weight:600}.stack{gap:10px;margin-bottom:22px;display:grid}.pair-chips{scrollbar-width:none;gap:8px;margin:0 -2px 16px;padding:2px 2px 6px;display:flex;overflow-x:auto}.pair-chips::-webkit-scrollbar{display:none}.pair-chip{cursor:pointer;background:var(--surface);min-width:64px;box-shadow:var(--shadow);color:var(--text);border:1px solid #ffffffe6;border-radius:16px;flex-direction:column;flex:none;align-items:center;gap:1px;padding:9px 10px;transition:background .2s,color .2s;display:flex}.pair-chip b{font-size:15px;font-weight:700}.pair-chip span{color:var(--secondary);font-feature-settings:"tnum" 1;font-size:11px}.pair-chip[aria-pressed=true]{background:var(--gradient-primary);color:#fff;border-color:#0000}.pair-chip[aria-pressed=true] span{color:#ffffffd9}.tile.room{cursor:default;padding:12px 4px;font-size:15px;font-weight:600}.tile.room:active{transform:none}.tile-grid.rooms{grid-template-columns:repeat(4,1fr);margin-bottom:0}.push-prompt{z-index:15;left:50%;top:calc(env(safe-area-inset-top) + 10px);width:min(416px,100% - 24px);animation:prompt-in .5s var(--spring);background:#ffffffd1;border-radius:24px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex;position:fixed;transform:translate(-50%);box-shadow:inset 0 1px #fffffff2,0 18px 40px #245cb438}.push-prompt-icon{color:#fff;background:var(--gradient-primary);border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid}.push-prompt-icon svg{width:22px;height:22px}.push-prompt-icon.success{background:#34c08b}.push-prompt-text{flex:1;min-width:0}.push-prompt-text b{margin-bottom:2px;font-size:15px;font-weight:700;display:block}.push-prompt-text span{color:var(--secondary);font-size:13px;line-height:1.4;display:block}.push-prompt-actions{gap:8px;margin-top:10px;display:flex}.push-prompt-primary,.push-prompt-secondary{cursor:pointer;border:0;border-radius:12px;padding:8px 14px;font-size:14px;font-weight:600}.push-prompt-primary{background:var(--primary);color:#fff}.push-prompt-primary:disabled{opacity:.6}.push-prompt-secondary{background:var(--fill);color:var(--secondary)}@keyframes prompt-in{0%{opacity:0;transform:translate(-50%,-140%)}to{opacity:1;transform:translate(-50%)}}.with-index{padding-right:18px}.letter-section{scroll-margin-top:calc(env(safe-area-inset-top) + 12px)}.letter-section .group-list{margin-bottom:14px}.letter-section .group-list .header{color:var(--primary-deep);text-transform:none;font-size:15px}.alphabet{z-index:6;touch-action:none;-webkit-user-select:none;user-select:none;opacity:0;pointer-events:none;flex-direction:column;align-items:center;padding:4px 2px;transition:opacity .2s;display:flex;position:fixed;top:50%;right:max(4px,50vw - 218px);transform:translateY(-50%)}.alphabet.visible{opacity:1;pointer-events:auto}.alphabet button{cursor:pointer;color:var(--primary-deep);background:0 0;border:0;padding:0 3px;font-size:11px;font-weight:700;line-height:1.25}.week-nav{justify-content:space-between;align-items:center;gap:12px;margin:-4px 4px 16px;display:flex}.week-nav span{color:var(--secondary);font-size:15px;font-weight:600}.week-nav button{cursor:pointer;width:36px;height:36px;color:var(--primary-deep);border:1px solid var(--glass-border);border-radius:50%;place-items:center;display:grid}.week-nav button:disabled{opacity:.35;cursor:default}.week-nav svg{width:18px;height:18px}.week-day{border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow);border:1px solid #ffffffe6;margin-bottom:12px;padding:14px 16px}.week-day.today{box-shadow:0 0 0 2px var(--primary), var(--shadow)}.week-day-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.week-day-head h3{letter-spacing:-.01em;margin:0;font-size:17px;font-weight:700}.badge{border-radius:var(--radius-pill);background:var(--primary-tint);color:var(--primary-deep);padding:3px 8px;font-size:11px;font-weight:700}.badge.muted{background:var(--fill);color:var(--secondary)}.week-row{border-top:1px solid var(--separator);grid-template-columns:28px 44px 1fr auto;align-items:baseline;gap:8px;padding:6px 0;font-size:15px;display:grid}.week-row:first-of-type{border-top:0}.week-row .pair{margin-top:0}.week-row time{color:var(--secondary);font-feature-settings:"tnum" 1;font-size:14px}.week-row .what{overflow-wrap:anywhere;line-height:1.3}.week-row .where{color:var(--tertiary);white-space:nowrap;font-size:13px}.week-empty{color:var(--tertiary);font-size:14px}.lesson .note{color:var(--primary-deep);margin-top:8px;font-size:13px;font-weight:500}.dot{background:var(--tertiary);border-radius:50%;flex:none;width:10px;height:10px}.dot.ok{background:#34c08b;box-shadow:0 0 0 4px #34c08b26}.dot.waiting{background:#f0b429;box-shadow:0 0 0 4px #f0b42926}.dot.error{background:var(--danger);box-shadow:0 0 0 4px #e5484d26}.state-label{color:var(--secondary);flex:none;font-size:13px;font-weight:600}.state-label.ok{color:#1f8a62}.state-label.waiting{color:#a0700a}.state-label.error{color:#b4292f}.health-banner{color:#fff;border-radius:22px;align-items:center;gap:12px;margin-bottom:22px;padding:16px;display:flex}.health-banner.ok{background:linear-gradient(135deg,#46cf9a,#26a877);box-shadow:0 12px 28px #26a8774d}.health-banner.error{background:linear-gradient(135deg,#f0795d,#e5484d);box-shadow:0 12px 28px #e5484d4d}.health-banner b{font-size:17px;display:block}.health-banner span{opacity:.92;font-size:13px}.health-icon{background:#ffffff38;border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid}.health-icon svg{width:22px;height:22px}.form-item{flex-direction:column;gap:4px;padding:12px 16px;display:flex;position:relative}.form-item+.form-item:before,.item+.form-item:before,.form-item+.item:before{content:"";background:var(--separator);height:1px;position:absolute;top:0;left:16px;right:0}.form-item span{color:var(--secondary);font-size:13px;font-weight:600}.form-item input,.form-item textarea{width:100%;font:inherit;color:var(--text);resize:vertical;background:0 0;border:0;outline:0;padding:2px 0;font-size:17px}.form-item input::placeholder,.form-item textarea::placeholder{color:var(--tertiary)}.code-input{text-align:center;letter-spacing:.4em;font-feature-settings:"tnum" 1;font-size:30px!important}.qr-box{justify-items:center;gap:12px;padding:18px 16px;display:grid}.qr-box img{background:#fff;border-radius:16px;width:200px;height:200px;padding:6px}.qr-box .secret{letter-spacing:.05em;color:var(--secondary);text-align:center;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px}.link-btn{cursor:pointer;color:var(--primary-deep);background:0 0;border:0;flex:none;font-size:15px;font-weight:600}.announcement-row{align-items:flex-start}.announcement-row .title .badge{vertical-align:2px;margin-left:8px}.announcements{gap:10px;margin-bottom:16px;display:grid}.announcement{border-radius:22px;align-items:flex-start;gap:12px;padding:14px 14px 14px 16px;display:flex}.announcement-icon{color:#fff;background:linear-gradient(135deg,#ffb35c,#ff8a3d);border-radius:11px;flex:none;place-items:center;width:36px;height:36px;display:grid}.announcement-icon svg{width:20px;height:20px}.announcement-text{flex:1;min-width:0}.announcement-text b{margin-bottom:2px;font-size:15px;display:block}.announcement-text span{color:var(--secondary);overflow-wrap:anywhere;font-size:14px;line-height:1.4;display:block}.announcement-close{cursor:pointer;background:var(--fill);width:28px;height:28px;color:var(--secondary);border:0;border-radius:50%;flex:none;font-size:18px;line-height:1}.assistant-fab{z-index:12;right:max(16px,50vw - 204px);bottom:calc(env(safe-area-inset-bottom) + 96px);color:#fff;background:var(--gradient-primary);width:56px;height:56px;box-shadow:var(--shadow-primary), inset 0 1px 0 #ffffff59;transition:transform .2s var(--spring);border-radius:50%;place-items:center;display:grid;position:fixed}.assistant-fab:active{transform:scale(.92)}.assistant-fab svg{width:26px;height:26px}.chat-screen{padding-bottom:calc(env(safe-area-inset-bottom) + 130px)}.chat-hello{text-align:center;padding:18px 8px 8px}.chat-hello-icon{color:#fff;background:var(--gradient-primary);width:64px;height:64px;box-shadow:var(--shadow-primary);border-radius:20px;place-items:center;margin:0 auto 12px;display:grid}.chat-hello-icon svg{width:32px;height:32px}.chat-hello p{color:var(--secondary);margin:0 0 16px;font-size:15px;line-height:1.45}.suggestions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.suggestion{border:1px solid var(--glass-border);background:var(--surface);box-shadow:var(--shadow);border-radius:var(--radius-pill);cursor:pointer;color:var(--primary-deep);padding:9px 14px;font-size:14px;font-weight:500}.chat-log{flex-direction:column;gap:10px;display:flex}.bubble{overflow-wrap:anywhere;border-radius:20px;max-width:86%;padding:11px 14px;font-size:16px;line-height:1.45}.bubble.user{color:#fff;background:var(--gradient-primary);white-space:pre-wrap;border-bottom-right-radius:6px;align-self:flex-end;box-shadow:0 6px 16px #3d8bfd40}.bubble.assistant{background:var(--surface);box-shadow:var(--shadow);border:1px solid #ffffffe6;border-bottom-left-radius:6px;align-self:flex-start}.bubble-text p{margin:0 0 6px}.bubble-text p:last-child{margin-bottom:0}.bubble-text ul{margin:4px 0 6px;padding-left:20px}.bubble-text li{margin:2px 0}.bubble-tools{color:var(--primary-deep);margin-bottom:6px;font-size:12px;font-weight:600}.bubble-actions{align-items:center;gap:4px;margin-top:8px;display:flex}.bubble-actions button{background:var(--fill);width:30px;height:30px;color:var(--secondary);cursor:pointer;border:0;border-radius:50%;place-items:center;display:grid}.bubble-actions svg{width:16px;height:16px}.bubble-actions .copied{color:var(--tertiary);margin-left:4px;font-size:12px}.typing{gap:5px;padding:15px 16px;display:flex}.typing span{background:var(--tertiary);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite blink}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}.chat-wait{color:var(--secondary);align-self:flex-start;padding:0 6px;font-size:13px}@keyframes blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.composer{z-index:11;left:50%;bottom:calc(env(safe-area-inset-bottom) + 34px);background:var(--glass-strong);border-radius:28px;align-items:center;gap:6px;width:min(416px,100% - 24px);padding:6px;display:flex;position:fixed;transform:translate(-50%)}.composer input{min-width:0;font:inherit;color:var(--text);background:0 0;border:0;outline:0;flex:1;padding:10px 8px;font-size:16px}.composer-mic,.composer-send{cursor:pointer;border:0;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.composer-mic{background:var(--fill);color:var(--primary-deep)}.composer-mic.active{background:var(--danger);color:#fff;animation:1.2s infinite pulse}.composer-send{background:var(--primary);color:#fff}.composer-send:disabled{opacity:.4;cursor:default}.composer svg{width:20px;height:20px}@keyframes pulse{0%{box-shadow:0 0 #e5484d73}to{box-shadow:0 0 0 12px #e5484d00}}.chat-privacy{z-index:11;left:50%;bottom:calc(env(safe-area-inset-bottom) + 8px);text-align:center;width:min(416px,100% - 24px);color:var(--tertiary);font-size:11px;position:fixed;transform:translate(-50%)}.pill-btn svg{width:16px;height:16px}.tile.room.link{cursor:pointer;color:var(--text);text-decoration:none}.tile.room.link:active{transform:scale(.94)}:root{--ease-out:cubic-bezier(.22, .9, .25, 1);--spring-soft:cubic-bezier(.34, 1.4, .64, 1)}html[data-motion] .screen{view-transition-name:screen}html[data-motion] .tabbar{view-transition-name:tabbar}html[data-motion] .assistant-fab{view-transition-name:fab}::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}::view-transition-group(screen){animation-duration:.42s;animation-timing-function:var(--ease-out)}::view-transition-old(tabbar){display:none}::view-transition-new(tabbar){animation:none}html[data-motion=push]::view-transition-old(screen){animation:.2s ease-in both vt-out-left}html[data-motion=push]::view-transition-new(screen){animation:vt-in-right .34s var(--ease-out) 60ms both}html[data-motion=back]::view-transition-old(screen){animation:.2s ease-in both vt-out-right}html[data-motion=back]::view-transition-new(screen){animation:vt-in-left .34s var(--ease-out) 60ms both}html[data-motion=tab]::view-transition-old(screen){animation:.16s both vt-fade-out}html[data-motion=tab]::view-transition-new(screen){animation:vt-fade-up .32s var(--ease-out) 50ms both}@keyframes vt-in-right{0%{opacity:0;transform:translate(48px)}}@keyframes vt-out-left{to{opacity:0;transform:translate(-36px)}}@keyframes vt-in-left{0%{opacity:0;transform:translate(-48px)}}@keyframes vt-out-right{to{opacity:0;transform:translate(36px)}}@keyframes vt-fade-out{to{opacity:0;transform:scale(.985)}}@keyframes vt-fade-up{0%{opacity:0;transform:translateY(10px)}}@supports not (view-transition-name:none){.screen{animation:fade-up .32s var(--ease-out) backwards}}.list>*{animation:rise .5s var(--ease-out) backwards}.list>:nth-child(2){animation-delay:40ms}.list>:nth-child(3){animation-delay:80ms}.list>:nth-child(4){animation-delay:.12s}.list>:nth-child(5){animation-delay:.16s}.list>:nth-child(6){animation-delay:.2s}.list>:nth-child(n+7){animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(14px)scale(.98)}}.now{animation:card-in .6s var(--spring-soft) backwards}.now:before{content:"";pointer-events:none;border-radius:inherit;background:linear-gradient(110deg,#0000 35%,#ffffff3d 48%,#0000 60%);animation:6s ease-in-out 1.2s infinite sheen;position:absolute;inset:0;transform:translate(-120%)}.now.soft:before{display:none}.now-label i{animation:2.2s ease-out infinite live}.now.soft .now-label i{animation-name:live-soft}@keyframes card-in{0%{opacity:0;transform:translateY(12px)scale(.97)}}@keyframes sheen{0%{transform:translate(-120%)}35%,to{transform:translate(120%)}}@keyframes live{0%{box-shadow:0 0 #ffffff8c}70%,to{box-shadow:0 0 0 8px #fff0}}@keyframes live-soft{0%{box-shadow:0 0 #3d8bfd73}70%,to{box-shadow:0 0 0 8px #3d8bfd00}}@keyframes tab-pop{0%{transform:scale(.72)}55%{transform:scale(1.14)}to{transform:scale(1)}}.blob{will-change:transform}.blob.one{animation:22s ease-in-out infinite alternate drift-one}.blob.two{animation:26s ease-in-out infinite alternate drift-two}.blob.three{animation:30s ease-in-out infinite alternate drift-three}@keyframes drift-one{to{transform:translate(-46px,34px)scale(1.1)}}@keyframes drift-two{to{transform:translate(52px,-28px)scale(1.06)}}@keyframes drift-three{to{transform:translate(-30px,-40px)scale(1.12)}}.pill-btn,.back-btn,.suggestion,.notice-action,.bubble-actions button,.composer-mic,.composer-send,.item,.announcement-close{transition:transform .28s var(--spring), background .2s, color .2s, opacity .2s}.pill-btn:active,.back-btn:active,.suggestion:active,.notice-action:active,.bubble-actions button:active,.announcement-close:active{transform:scale(.93)}.composer-mic:active,.composer-send:not(:disabled):active{transform:scale(.86)}.composer-send:not(:disabled){animation:pop .35s var(--spring)}@keyframes pop{0%{transform:scale(.7)}to{transform:scale(1)}}.bubble.user{transform-origin:100% 100%;animation:bubble-right .42s var(--spring-soft) backwards}.bubble.assistant{transform-origin:0 100%;animation:bubble-left .46s var(--spring-soft) backwards}@keyframes bubble-right{0%{opacity:0;transform:translate(14px,12px)scale(.86)}}@keyframes bubble-left{0%{opacity:0;transform:translate(-14px,12px)scale(.9)}}.chat-wait,.chat-log>.notice{animation:fade-up .3s var(--ease-out) backwards}.chat-hello-icon{animation:4s ease-in-out infinite float}@keyframes float{50%{transform:translateY(-5px)rotate(-3deg)}}.suggestion{animation:rise .45s var(--spring-soft) backwards}.suggestion:nth-child(2){animation-delay:50ms}.suggestion:nth-child(3){animation-delay:.1s}.suggestion:nth-child(4){animation-delay:.15s}.suggestion:nth-child(5){animation-delay:.2s}.assistant-fab{animation:fab-in .6s var(--spring-soft) .3s backwards}@keyframes fab-in{0%{opacity:0;transform:scale(.4)rotate(-30deg)}}.sheet-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
