:root{--bg:#101010;--surface:#161616;--surface-container:#1e1e1e;--surface-high:#262626;--surface-highest:#303030;--text-primary:#e6e1e5;--text-secondary:#9e9e9e;--outline:#3c3c3c;--outline-variant:#2a2a2a;--accent:#7b61db;--accent-rgb:123, 97, 219;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-display:"Outfit", var(--font-family)}[data-theme=light]{--bg:#f8f9fa;--surface:#fff;--surface-container:#f1f3f5;--surface-high:#e9ecef;--surface-highest:#dee2e6;--text-primary:#1c1b1f;--text-secondary:#49454f;--outline:#79747e;--outline-variant:#cac4d0}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;margin:0;padding:0;scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}.avatar-btn{background:var(--surface-highest);color:var(--accent);font-family:var(--font-display);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-weight:800;display:flex;overflow:hidden}.avatar-btn img{object-fit:cover;width:100%;height:100%;display:block}body{font-family:var(--font-family);color:var(--text-primary);background-color:#000;justify-content:center;align-items:center;min-height:100vh;display:flex;overflow:hidden}#root{justify-content:center;align-items:stretch;width:100%;height:100vh;display:flex}.app-viewport{background-color:var(--bg);flex-direction:column;width:100%;max-width:480px;height:100vh;display:flex;position:relative;overflow:hidden;box-shadow:0 0 60px #000000b3}@media (width>=500px){.app-viewport{border-left:1px solid var(--outline-variant);border-right:1px solid var(--outline-variant)}}@keyframes shimmerPass{0%{transform:translate(-150%)}to{transform:translate(150%)}}@keyframes fadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.splash-container{background-color:var(--bg);z-index:1000;justify-content:center;align-items:center;transition:opacity .45s cubic-bezier(0,0,.2,1);display:flex;position:absolute;inset:0}.splash-logo-wrapper{justify-content:center;align-items:center;width:150px;height:150px;display:flex;position:relative}.splash-logo-mask{background-color:#fff;width:100%;height:100%;position:relative;overflow:hidden;-webkit-mask-image:url(/orbit.svg);mask-image:url(/orbit.svg);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[data-theme=light] .splash-logo-mask{background-color:#1c1b1f}.splash-logo-mask:after{content:"";background:linear-gradient(115deg,#0000 20%,#fffc 50%,#0000 80%);width:200%;height:200%;animation:1.3s linear infinite shimmerPass;position:absolute;top:-50%;left:-50%}.top-bar{background-color:var(--bg);z-index:10;justify-content:space-between;align-items:center;padding:10px 14px 6px;display:flex;position:sticky;top:0}.time-pill{background:var(--surface-high);font-size:13px;font-weight:700;font-family:var(--font-display);color:var(--text-primary);border-radius:50px;align-items:center;gap:6px;padding:6px 12px;display:flex}.center-app-title-pill{background:var(--surface-high);border-radius:50px;align-items:center;gap:6px;padding:6px 14px;font-size:14px;display:flex}.orbit-title-brand{color:var(--accent);font-weight:700;font-family:var(--font-display)}.orbit-title-sep{color:var(--text-secondary);opacity:.6}.orbit-title-class{color:var(--text-primary);font-weight:600}.orbit-title-name{color:var(--text-secondary);font-weight:500}.settings-avatar-btn{background:rgba(var(--accent-rgb), .15);width:38px;height:38px;color:var(--accent);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:transform .15s;display:flex;overflow:hidden}.settings-avatar-btn:active{transform:scale(.92)}.settings-avatar-btn img{object-fit:cover;width:100%;height:100%}.week-nav{justify-content:space-between;align-items:center;padding:4px 16px 8px;display:flex}.week-nav-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:background .2s,color .2s;display:flex}.week-nav-btn:disabled{opacity:.3;cursor:not-allowed}.week-nav-btn:not(:disabled):active{background:var(--surface-high)}.week-nav-pill{background:var(--surface-high);cursor:pointer;border-radius:20px;align-items:center;gap:8px;padding:6px 14px;font-size:13px;font-weight:700;transition:transform .15s;display:flex}.week-nav-pill:active{transform:scale(.97)}.week-nav-pill.current{color:var(--accent)}.today-chip{background:var(--accent);color:#fff;text-transform:uppercase;border-radius:8px;padding:2px 7px;font-size:10px;font-weight:800}.schedule-scroll{flex-direction:column;flex:1;gap:10px;padding:4px 16px 120px;display:flex;overflow-y:auto}.schedule-scroll::-webkit-scrollbar{width:4px}.schedule-scroll::-webkit-scrollbar-thumb{background:var(--surface-highest);border-radius:4px}.announcement-schedule-card{border:1px solid var(--outline-variant);cursor:pointer;background:#26262680;border-radius:16px;align-items:center;gap:12px;padding:10px 14px;transition:transform .15s;display:flex}.announcement-schedule-card:active{transform:scale(.98)}.announcement-card-icon{color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.announcement-card-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:700;overflow:hidden}.announcement-card-sub{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.attendance-schedule-card{border:1px solid var(--outline-variant);background:#26262680;border-radius:16px;justify-content:space-between;align-items:center;padding:8px 14px;display:flex}.attendance-label{color:var(--text-secondary);margin-bottom:4px;font-size:12px;font-weight:600}.attendance-two-buttons{gap:6px;display:flex}.att-toggle-btn{background:var(--surface-highest);color:var(--text-primary);cursor:pointer;border:none;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:600;transition:all .15s}.att-toggle-btn.active-present{color:#fff;background:#2e7d32;font-weight:700}.att-toggle-btn.active-sick{color:#fff;background:#e65100;font-weight:700}.attendance-list-btn{background:rgba(var(--accent-rgb), .15);color:var(--accent);cursor:pointer;border:none;border-radius:12px;padding:6px 12px;font-size:12px;font-weight:700;transition:transform .15s}.attendance-list-btn:active{transform:scale(.94)}.lesson-row-container{align-items:flex-start;gap:8px;width:100%;display:flex}.lesson-time-col{flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:48px;padding-top:14px;display:flex}.lesson-time-start{color:var(--text-secondary);font-size:11px;font-weight:600;line-height:1.2}.lesson-time-end{color:var(--text-secondary);opacity:.55;font-size:11px;font-weight:500;line-height:1.2}.lesson-card{background:var(--surface-container);border:1px solid var(--outline-variant);cursor:pointer;border-radius:16px;flex-direction:column;flex:1;gap:6px;min-width:0;padding:12px 14px;transition:transform .15s,border-color .2s;display:flex;position:relative;overflow:hidden}.lesson-card:active{transform:scale(.985)}.lesson-card.active-lesson{border-color:var(--accent);background:linear-gradient(180deg, var(--surface) 0%, rgba(var(--accent-rgb), .08) 100%)}.lesson-main-row{align-items:center;gap:10px;width:100%;display:flex}.lesson-color-bar{border-radius:2px;flex-shrink:0;width:4px;height:38px}.lesson-emoji{flex-shrink:0;justify-content:center;align-items:center;font-size:20px;line-height:1;display:flex}.lesson-info{flex:1;min-width:0}.lesson-subject{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;overflow:hidden}.lesson-meta{align-items:center;gap:6px;margin-top:2px;display:flex}.lesson-room-text{color:var(--text-secondary);font-size:12px}.consultation-badge{text-transform:uppercase;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:700}.lesson-comments-btn{background:var(--surface-highest);color:var(--text-secondary);cursor:pointer;border:none;border-radius:10px;flex-shrink:0;align-items:center;gap:4px;padding:5px 8px;font-size:11px;font-weight:700;transition:all .15s;display:flex}.lesson-comments-btn.has-comments{background:rgba(var(--accent-rgb), .18);color:var(--accent)}.lesson-num-chip{font-size:12px;font-weight:800;font-family:var(--font-display);border-radius:12px;flex-shrink:0;padding:3px 8px}.lesson-progress-bar{background:var(--surface-highest);border-radius:2px;width:100%;height:4px;overflow:hidden}.lesson-progress-fill{background:var(--accent);height:100%;transition:width .3s linear}.lesson-remaining-tag{color:var(--accent);align-items:center;gap:4px;font-size:11px;font-weight:700;display:flex}.homework-preview{background:var(--surface-high);color:var(--text-primary);border-radius:8px;align-items:flex-start;gap:6px;margin-top:4px;padding:6px 10px;font-size:12px;display:flex}.homework-tag{color:#ff9800;flex-shrink:0;font-weight:700}.break-divider-row{align-items:center;gap:12px;width:100%;padding:4px 0 4px 56px;display:flex}.break-divider-line{background:var(--outline-variant);opacity:.45;flex:1;height:1px}.break-divider-text{color:var(--text-secondary);opacity:.6;white-space:nowrap;font-size:11px;font-weight:500}.break-card.active-break{background:var(--surface-high);border:1px solid var(--outline-variant);border-radius:12px;flex-direction:column;gap:6px;margin-left:56px;padding:10px 14px;display:flex}.break-active-header{justify-content:space-between;align-items:center;font-size:13px;font-weight:600;display:flex}.break-active-title{color:var(--text-primary)}.break-active-remaining{color:var(--accent);font-size:12px;font-weight:700}.dock-bar-wrapper{pointer-events:none;z-index:20;background:linear-gradient(#0000 0%,#00000040 40%,#000000a6 100%);justify-content:center;padding:24px 20px 18px;display:flex;position:absolute;bottom:0;left:0;right:0}.dock-bar{pointer-events:auto;background:var(--surface-high);cursor:grab;touch-action:none;border-radius:50px;align-items:center;width:100%;max-width:440px;height:62px;padding:5px;transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s;display:flex;position:relative;box-shadow:0 8px 30px #00000073}.dock-bar.is-dragging{cursor:grabbing;transform:scale(1.06);box-shadow:0 14px 40px #0009}.dock-active-pill{background:rgba(var(--accent-rgb), .22);border:1px solid rgba(var(--accent-rgb), .35);pointer-events:none;z-index:1;border-radius:50px;height:52px;transition:transform .36s cubic-bezier(.34,1.45,.64,1);position:absolute;top:5px;left:5px}.dock-active-pill.pill-dragging{transition:none}.dock-item-btn{z-index:2;cursor:pointer;height:52px;color:var(--text-secondary);background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:4px;font-size:13px;font-weight:700;transition:color .2s;display:flex;position:relative}.dock-item-btn.selected{color:var(--accent)}.dock-day-text{font-family:var(--font-display);letter-spacing:.3px}.dock-today-dot{background:var(--accent);border-radius:50%;width:5px;height:5px}.sheet-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#000000a6;flex-direction:column;justify-content:flex-end;animation:.2s fadeIn;display:flex;position:absolute;inset:0}.sheet-content{background:var(--surface);border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl);border-top:1px solid var(--outline-variant);flex-direction:column;max-height:88vh;animation:.25s cubic-bezier(.1,.9,.2,1) slideUp;display:flex;overflow:hidden}.sheet-handle{background:var(--outline);border-radius:2px;width:36px;height:4px;margin:10px auto 4px}.sheet-header{border-bottom:1px solid var(--outline-variant);justify-content:space-between;align-items:center;padding:12px 20px 14px;display:flex}.sheet-title{font-size:18px;font-weight:800;font-family:var(--font-display)}.sheet-body{flex-direction:column;gap:16px;padding:18px 20px;display:flex;overflow-y:auto}.sheet-close-btn{background:var(--surface-high);color:var(--text-secondary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.input-group{flex-direction:column;gap:6px;display:flex}.input-label{color:var(--text-secondary);font-size:13px;font-weight:600}.text-input{background:var(--surface-high);border:1px solid var(--outline-variant);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-size:15px;font-family:var(--font-family);outline:none;padding:12px 14px;transition:border-color .2s}.text-input:focus{border-color:var(--accent)}.primary-btn{border-radius:var(--radius-md);background:var(--accent);color:#fff;width:100%;font-size:16px;font-weight:700;font-family:var(--font-display);cursor:pointer;box-shadow:0 4px 14px rgba(var(--accent-rgb), .35);border:none;justify-content:center;align-items:center;gap:8px;padding:14px;transition:opacity .2s,transform .15s;display:flex}.primary-btn:active{transform:scale(.98)}.primary-btn:disabled{opacity:.5;cursor:not-allowed}.comment-item{background:var(--surface-container);border-radius:var(--radius-md);flex-direction:column;gap:6px;padding:10px 12px;display:flex}.comment-author-row{justify-content:space-between;align-items:center;display:flex}.comment-author-info{align-items:center;gap:8px;display:flex}.comment-avatar{background:var(--surface-highest);width:24px;height:24px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:800;display:flex;overflow:hidden}.comment-author-name{font-size:13px;font-weight:700}.comment-time{color:var(--text-secondary);font-size:11px}.comment-content{color:var(--text-primary);word-break:break-word;font-size:13px;line-height:1.4}.comment-attachment{border-radius:8px;max-width:100%;margin-top:4px;overflow:hidden}.comment-attachment img{object-fit:cover;width:100%;max-height:200px;display:block}.comment-del-btn{color:#f44336;cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:12px}.settings-section-title{color:var(--text-secondary);margin-bottom:8px;font-size:13px;font-weight:600}.settings-card{background:var(--surface-high);border-radius:var(--radius-lg);border:1px solid var(--outline-variant);transition:background .15s}.settings-card.clickable{cursor:pointer}.settings-card.clickable:active{background:var(--surface-highest)}.avatar-camera-badge{color:#fff;cursor:pointer;background:#000000a6;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex;position:absolute;bottom:-2px;right:-2px}.icon-action-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.icon-action-btn.danger{color:#f44336}.tonal-btn{background:rgba(var(--accent-rgb), .18);color:var(--accent);cursor:pointer;border:none;border-radius:12px;padding:8px 16px;font-size:13px;font-weight:700;transition:transform .15s}.tonal-btn:active{transform:scale(.96)}.m3-switch{background:var(--surface-highest);border:2px solid var(--outline);cursor:pointer;border-radius:16px;width:52px;height:32px;transition:background .2s,border-color .2s;position:relative}.m3-switch.checked{background:var(--accent);border-color:var(--accent)}.m3-switch-thumb{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s cubic-bezier(.34,1.4,.64,1),width .15s,height .15s;position:absolute;top:5px;left:5px}[data-theme=light] .m3-switch-thumb{background:#1e1e1e}[data-theme=light] .m3-switch.checked .m3-switch-thumb{background:#fff}.m3-switch.checked .m3-switch-thumb{width:22px;height:22px;top:3px;left:3px;transform:translate(20px)}.accent-circle-btn{cursor:pointer;color:#fff;border:3px solid #0000;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;transition:transform .15s;display:flex}.accent-circle-btn.selected{border-color:var(--text-primary);transform:scale(1.06)}.lang-choice-btn{background:var(--surface-high);border:1px solid var(--outline-variant);color:var(--text-primary);cursor:pointer;border-radius:14px;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:12px 6px;transition:all .15s;display:flex}.lang-choice-btn.selected{border-color:var(--accent);background:rgba(var(--accent-rgb), .15);color:var(--accent)}.danger-button{border-radius:var(--radius-md);color:#ff8a80;cursor:pointer;background:#f443361f;border:1px solid #f443364d;justify-content:center;align-items:center;gap:8px;width:100%;padding:12px;font-size:14px;font-weight:700;transition:transform .15s;display:flex}.danger-button:active{transform:scale(.98)}.danger-outline-btn{border-radius:var(--radius-md);color:#ff8a80;cursor:pointer;background:#f443361f;border:1px solid #f44336;padding:12px 18px;font-size:14px;font-weight:700}.global-dialog-backdrop,.inner-modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;background:#000000bf;justify-content:center;align-items:center;padding:20px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.global-dialog-box,.inner-modal-dialog{background:var(--surface);border:1px solid var(--outline-variant);border-radius:24px;flex-direction:column;width:100%;max-width:400px;padding:24px;display:flex;box-shadow:0 16px 48px #000000b3}.user-match-card{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .3);border-radius:10px;align-items:center;gap:8px;margin-top:8px;padding:10px 12px;display:flex}.success-banner{color:#81c784;background:#2e7d322e;border:1px solid #2e7d32;border-radius:10px;margin-top:10px;padding:10px 12px;font-size:13px;font-weight:600}.secondary-btn{border-radius:var(--radius-md);border:1px solid var(--outline-variant);background:var(--surface-high);color:var(--text-primary);cursor:pointer;padding:12px 16px;font-size:14px;font-weight:600}.segmented-tab-row{background:var(--surface-high);border:1px solid var(--outline-variant);border-radius:14px;gap:4px;padding:4px;display:flex}.segmented-tab-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 8px;font-size:13px;font-weight:700;transition:all .2s;display:flex}.segmented-tab-btn.active{background:rgba(var(--accent-rgb), .2);color:var(--accent)}.choice-card-btn{border:1px solid var(--outline-variant);background:var(--surface-high);color:var(--text-primary);cursor:pointer;border-radius:14px;flex:1;padding:12px 10px;font-size:13px;font-weight:600;transition:all .15s}.choice-card-btn.selected{border:2px solid var(--accent);background:rgba(var(--accent-rgb), .15);color:var(--accent);font-weight:700}.lesson-select-row{border:1px solid var(--outline-variant);background:var(--surface-high);cursor:pointer;border-radius:14px;align-items:center;gap:12px;padding:10px 14px;transition:all .15s;display:flex}.lesson-select-row.selected{border:2px solid var(--accent);background:rgba(var(--accent-rgb), .16)}.lesson-select-row.replaced{background:rgba(var(--accent-rgb), .08)}.lesson-select-badge{background:var(--surface-highest);width:28px;height:28px;color:var(--text-primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:flex}.lesson-select-row.selected .lesson-select-badge{background:var(--accent);color:#fff}.override-tag{color:var(--accent);background:rgba(var(--accent-rgb), .18);border-radius:6px;flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:700}.quick-chip-btn{border:1px solid var(--outline-variant);background:var(--surface-highest);color:var(--text-primary);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:11px;font-weight:600}.sheet-icon-box{background:rgba(var(--accent-rgb), .15);width:44px;height:44px;color:var(--accent);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.att-status-choice-btn{border:1px solid var(--outline-variant);background:var(--surface-highest);color:var(--text-primary);cursor:pointer;border-radius:12px;flex:1;padding:10px 4px;font-size:12px;font-weight:600;transition:all .15s}.att-status-choice-btn.active-present{color:#fff;background:#2e7d32;border-color:#2e7d32;font-weight:700}.att-status-choice-btn.active-sick{color:#fff;background:#e65100;border-color:#e65100;font-weight:700}.att-status-choice-btn.active-absent{color:#fff;background:#c62828;border-color:#c62828;font-weight:700}.att-summary-pill{text-align:center;white-space:nowrap;border-radius:8px;flex:1;padding:6px 8px;font-size:11px;font-weight:700}.att-summary-pill.green{color:#4caf50;background:#2e7d322e}.att-summary-pill.orange{color:#ff9800;background:#e651002e}.att-summary-pill.red{color:#ef5350;background:#c628282e}.att-student-row{background:var(--surface-high);border:1px solid #0000;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;display:flex}.att-student-row.is-me{background:rgba(var(--accent-rgb), .08);border-color:rgba(var(--accent-rgb), .35)}.att-avatar-circle{background:var(--surface-highest);width:28px;height:28px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:flex}.att-mini-toggle{border:1px solid var(--outline-variant);background:var(--surface-highest);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;transition:all .15s;display:flex}.att-mini-toggle.active-present{background:#2e7d32;border-color:#2e7d32}.att-mini-toggle.active-sick{background:#e65100;border-color:#e65100}.att-mini-toggle.active-absent{background:#c62828;border-color:#c62828}.att-badge{border-radius:8px;padding:3px 8px;font-size:11px;font-weight:700}.att-badge.present{color:#4caf50;background:#2e7d322e}.att-badge.sick{color:#ff9800;background:#e651002e}.att-badge.absent{color:#ef5350;background:#c628282e}.att-badge.unmarked{color:var(--text-secondary);opacity:.6}
