:root{--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--font-brand:"LXGW WenKai", "Kaiti SC", "STKaiti", var(--font-sans);--font-mono:"SFMono-Regular", "Cascadia Mono", "Roboto Mono", Consolas, "Liberation Mono", ui-monospace, monospace;--pku-red:#a03a24;--brand-900:#6f2414;--brand-800:#872c18;--brand-100:#f7e3d3;--brand-050:#fcf3e9;--canvas:#faf6ed;--surface:#fff;--surface-warm:#fdfaf2;--surface-hover:#f6f0e3;--border:#e8dfcf;--border-strong:#d6c9b4;--text-primary:#201b1b;--text-secondary:#6e6565;--text-tertiary:#6f6868;--free:#2f7d5a;--free-bg:#e8f3ed;--free-border:#b9d9c8;--busy-bg:#f0eeec;--busy-border:#ddd8d4;--warning:#9a6515;--warning-bg:#fdf3e1;--warning-border:#efd49f;--danger:#b42318;--danger-bg:#feeceb;--danger-border:#efc4c0;--shadow-card:0 12px 32px #2c1f1814;--shadow-overlay:0 24px 80px #201b1b2e;--radius-control-sm:8px;--radius-control:10px;--radius-panel:14px;--radius-panel-lg:16px;--radius-overlay:18px;--radius-pill:999px;--focus-ring:var(--pku-red);--disabled-opacity:.48;--motion-fast:.12s;--motion-base:.18s;--motion-slow:.24s;--ease-standard:cubic-bezier(.2, .8, .2, 1);--ease-emphasized:cubic-bezier(.16, 1, .3, 1);--sidebar:216px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--text-primary);background-color:var(--canvas);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}:where(button,a,input,select,textarea,[role=combobox]):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.ui-icon{flex:none;width:1.125em;height:1.125em;display:block}.icon-button{place-items:center;padding:0;display:inline-grid}:where(button,input,select,textarea):disabled{opacity:var(--disabled-opacity);cursor:not-allowed}:where(.sidebar a,.bottom-nav a,.avatar-menu a,.avatar-menu button,.member-chips button,.run-day-chips button,.mode-toggle button,.day-chips button,.run-copy,.copy-time,.my-grid-cell,.my-day-cell,.my-course-block,.my-busy-block){transition:color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), opacity var(--motion-fast) var(--ease-standard), filter var(--motion-fast) var(--ease-standard)}.brand strong,.identity-brand strong,.page-heading h1,.groups-heading h1,.form-card h1,.import-content h1,.identity-heading h1,.schedule-heading h1,.settings-heading h1{font-family:var(--font-brand);font-weight:700}.week-control,.period,.free-run-list,.detail-meta,.invite-row strong,.import-stats,.my-week-switcher,.my-period,.week-grid,.ig-period,.day-slot-time,.admin-stats,.admin-mono,.info-period-table{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.app-frame{min-height:100vh;padding:64px 0 0 var(--sidebar)}.topbar{z-index:30;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff0;align-items:center;gap:24px;height:64px;padding:0 28px;display:flex;position:fixed;inset:0 0 auto}.brand{width:calc(var(--sidebar) - 28px);color:inherit;align-items:center;gap:11px;text-decoration:none;display:flex}.brand>span:last-child{flex-direction:column;line-height:1.05;display:flex}.brand strong{letter-spacing:.08em;font-size:18px}.brand small{color:var(--text-tertiary);letter-spacing:.08em;margin-top:3px;font-size:11px}.logo-mark{background:radial-gradient(circle at 32% 28%,#b8502e,#8f2c18 70%);border-radius:50%;flex:none;justify-content:center;align-items:center;gap:4px;width:34px;height:34px;padding:0;display:inline-flex;position:relative;overflow:visible}.logo-mark i{background:#fff;border-radius:4px;order:1;width:7px;height:17px;display:block}.logo-mark i:last-child{opacity:1;order:3;transform:none}.logo-mark:before{content:"";background:#ffd66b;border-radius:50%;order:2;width:6px;height:6px}.group-quick{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--text-primary);cursor:pointer;border-radius:10px;align-items:center;padding:0 14px;display:inline-flex}.group-quick span{color:var(--text-tertiary);margin-left:12px}.avatar{color:#fff;background:var(--brand-800);cursor:pointer;border:0;border-radius:50%;place-items:center;width:36px;height:36px;font-weight:700;text-decoration:none;display:grid}.topbar-end{align-items:center;gap:14px;margin-left:auto;display:flex;position:relative}.avatar-menu{z-index:60;border:1px solid var(--border);background:var(--surface);min-width:216px;box-shadow:var(--shadow-card);border-radius:12px;padding:8px;display:grid;position:absolute;top:calc(100% + 12px);right:0}.avatar-menu-id{border-bottom:1px solid var(--border);gap:3px;margin-bottom:6px;padding:10px 12px 12px;display:grid}.avatar-menu-id strong{font-size:14px}.avatar-menu-id small{color:var(--text-tertiary);word-break:break-all;font-size:11px}.avatar-menu a,.avatar-menu button{min-height:40px;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;padding:0 12px;font-size:13px;text-decoration:none;display:flex}.avatar-menu a:hover,.avatar-menu button:hover{background:var(--surface-hover)}.avatar-menu button{color:var(--danger)}.sidebar{z-index:20;width:var(--sidebar);background:var(--surface-warm);border-right:1px solid var(--border);flex-direction:column;padding:28px 16px 22px;display:flex;position:fixed;top:64px;bottom:0;left:0}.sidebar nav{gap:6px;display:grid}.sidebar a{min-height:44px;color:var(--text-secondary);border-radius:10px;align-items:center;gap:13px;padding:0 13px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.sidebar a span{text-align:center;width:19px;color:var(--text-tertiary);place-items:center;font-size:18px;display:grid}.sidebar a:hover{background:var(--surface-hover);color:var(--text-primary)}.sidebar a.active{color:var(--brand-800);background:var(--brand-050)}.sidebar a.active span{color:var(--pku-red)}.semester-note{border-top:1px solid var(--border);color:var(--text-secondary);margin-top:auto;padding:15px 13px;font-size:13px;line-height:1.5}.semester-note>span{background:var(--pku-red);border-radius:50%;width:7px;height:7px;margin:0 8px 1px 0;display:inline-block}.semester-note small{color:var(--text-tertiary);padding-left:17px}.main-content{width:100%;max-width:1440px;margin:0 auto;padding:38px 32px 64px}.page-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px;display:flex}.eyebrow{color:#b0541d;letter-spacing:.16em;margin:0 0 5px;font-size:11px;font-weight:700}.page-heading h1{letter-spacing:0;margin:0;font-size:clamp(27px,3vw,33px);line-height:1.25}.page-heading>p{color:var(--text-secondary);margin:0 0 2px;font-size:14px}.workspace{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel-lg);overflow:hidden}.controls{border-bottom:1px solid var(--border);align-items:flex-end;gap:32px;padding:22px 24px 19px;display:flex}.controls label>span,.week-control>span{color:var(--text-tertiary);margin-bottom:8px;font-size:12px;font-weight:600;display:block}.group-control button,.group-control select{border:1px solid var(--border-strong);border-radius:var(--radius-control);min-width:230px;min-height:48px;color:var(--text-primary);background:var(--surface);cursor:pointer;align-items:center;gap:9px;padding:0 14px;font-weight:600;display:flex}.group-control button:hover,.group-control select:hover{border-color:#bdb2ab}.group-control .tsel{min-width:230px}.group-control .tsel-input{border-color:var(--border-strong);background:var(--surface);min-height:48px;font-weight:600}.group-control .tsel-input:hover,.group-control .tsel.open .tsel-input{border-color:#bdb2ab}.group-control button small{color:var(--text-tertiary);font-weight:400}.group-control button b{color:var(--text-tertiary);margin-left:auto;font-weight:500}.week-control{margin-left:auto}.week-control>span{text-align:center}.week-control>div{align-items:center;gap:4px;display:flex}.week-control button{border-radius:var(--radius-control);min-width:44px;height:44px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;font-size:18px}.week-control button:hover:not(:disabled){background:var(--surface-hover);color:var(--brand-800)}.week-control button:disabled{opacity:.3;cursor:default}.week-control .week-select{border:1px solid var(--border-strong);border-radius:var(--radius-control);max-width:168px;min-height:44px;color:var(--text-primary);background:var(--surface);cursor:pointer;padding:0 12px;font-weight:700}.week-control .tsel.week-select{background:0 0;border:0;width:168px;padding:0}.week-control .tsel.week-select .tsel-input{text-align:center;border-color:var(--border-strong);background:var(--surface);min-height:44px;font-weight:700}.back-to-now{margin-left:4px;padding:0 12px;font-weight:600;border:1px solid var(--border-strong)!important;border-radius:var(--radius-control)!important;min-width:0!important;height:44px!important;color:var(--brand-800)!important;background:var(--brand-050)!important;font-size:13px!important}.back-to-now:hover{background:#f6e9e8!important;border-color:#bdb2ab!important}.member-bar{background:var(--surface-warm);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:17px 24px;display:flex}.member-bar>div:first-child{flex:none}.member-bar strong{font-size:14px;display:block}.member-bar>div:first-child span{color:var(--text-tertiary);margin-top:3px;font-size:12px;display:block}.member-chips{scrollbar-width:none;align-items:center;gap:8px;display:flex;overflow-x:auto}.member-chips::-webkit-scrollbar{display:none}.member-chips button{white-space:nowrap;border:1px solid var(--border);border-radius:var(--radius-pill);min-height:38px;color:var(--text-secondary);background:var(--surface);cursor:pointer;padding:0 13px;font-size:13px}.member-chips button:hover{border-color:var(--border-strong)}.member-chips button.selected{color:var(--brand-800);background:var(--brand-050);border-color:#dcb5b6;font-weight:600}.member-chips button span{color:var(--pku-red);margin-right:5px}.member-chips button .chip-flag{border-radius:var(--radius-pill);color:var(--warning);background:var(--warning-bg);margin-left:5px;padding:2px 6px;font-size:10px;font-style:normal;font-weight:600}.timetable-wrap{border-top:1px solid var(--border);margin-top:20px;padding:20px 24px 25px}.matrix-head{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:14px;display:flex}.matrix-heading h2{margin:0;font-size:16px}.matrix-heading p{color:var(--text-tertiary);margin:4px 0 0;font-size:12.5px}.legend{color:var(--text-secondary);align-items:center;gap:18px;margin-bottom:12px;font-size:12px;display:flex}.legend>span{align-items:center;gap:7px;display:inline-flex}.legend .ramp{gap:8px}.ramp-bar{background:linear-gradient(90deg,#db6b43 0%,#8bdc28 50%,#1cce8d 100%);border-radius:99px;width:130px;height:12px;box-shadow:inset 0 0 0 1px #ffffff80}.ramp em{color:var(--text-tertiary);font-size:11px;font-style:normal}.legend small{color:var(--text-tertiary);margin-left:auto}.grid-scroller{border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--border);overflow:auto}.timetable-grid{background:var(--border);grid-template-columns:66px repeat(7,minmax(82px,1fr));gap:1px;min-width:760px;display:grid}.corner,.day-heading,.period{background:var(--surface-warm)}.corner,.day-heading{height:50px;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:13px;font-weight:700;display:flex}.corner{z-index:4;color:var(--text-tertiary);justify-content:center;font-size:11px;position:sticky;left:0}.day-heading small{color:var(--text-tertiary);font-size:11px;font-weight:500}.day-heading.today{color:var(--pku-red)}.day-heading.today small{color:#c26265}.period{z-index:3;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:45px;display:flex;position:sticky;left:0}.period strong{font-size:13px}.period .period-time{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.slot{cursor:pointer;min-height:45px;transition:filter var(--motion-fast) var(--ease-standard);border:0;justify-content:center;align-items:center;display:flex}.slot:not(.slot-loading):hover{filter:brightness(1.035)}.slot .slot-count{color:inherit;font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-size:11px;font-weight:700;display:inline-flex}.slot .slot-count b{font-size:12px;line-height:1;display:inline-flex}.slot-loading{background:var(--busy-bg);cursor:wait}.completeness-note{color:#9a6515;margin:12px 0 0;font-size:12px}.free-runs{border:1px solid var(--free-border);background:color-mix(in srgb, var(--free-bg) 55%, var(--surface));border-radius:12px;margin:20px 24px 0;padding:18px}.free-runs-head{flex-wrap:wrap;align-items:flex-start;gap:18px;display:flex}.free-runs-heading{align-items:flex-start;gap:10px;min-width:210px;display:flex}.free-runs-heading h2{margin:0;font-size:16px}.free-runs-heading p{color:var(--text-secondary);margin:3px 0 0;font-size:12px}.free-runs-heading>span{border-radius:var(--radius-pill);color:var(--free);background:var(--free-bg);flex:none;padding:3px 8px;font-size:11px;font-weight:600}.free-runs-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.run-day-chips{gap:4px;display:flex}.run-day-chips button{border:1px solid var(--border);border-radius:var(--radius-pill);min-width:34px;min-height:30px;color:var(--text-tertiary);background:var(--surface);cursor:pointer;padding:0 8px;font-size:12px}.run-day-chips button.on{color:var(--brand-800);background:var(--brand-050);border-color:#dcb5b6;font-weight:600}.free-runs-filters select{border:1px solid var(--border);min-height:30px;color:var(--text-primary);background:var(--surface);cursor:pointer;border-radius:8px;padding:0 8px;font-size:12px}.free-runs-filters .tsel{width:auto}.free-runs-filters .tsel .tsel-input{border-radius:8px;min-width:0;min-height:30px;padding:0 26px 0 10px;font-size:12px}.free-runs-filters .tsel .tsel-chevron{font-size:10px;right:9px}.free-runs-filters .tsel .tsel-panel{min-width:190px;left:auto;right:0}.free-runs-filters .run-min{width:106px}.free-runs-filters .run-daypart{width:178px}.free-run-list{margin:12px 0 0;padding:0;list-style:none}.free-run-list li{border-top:1px solid var(--free-border);grid-template-columns:minmax(155px,.8fr) minmax(180px,1fr) auto;align-items:center;gap:16px;min-height:56px;padding:9px 2px;font-size:13px;display:grid}.run-date,.run-time{align-items:baseline;gap:9px;min-width:0;display:flex}.run-date{flex-direction:column;gap:2px}.run-date strong,.run-time span{font-variant-numeric:tabular-nums}.run-date small{color:var(--text-tertiary);font-size:11px}.run-time span{font-size:14px;font-weight:700}.run-time em{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:12px;font-style:normal}.run-copy{border:1px solid var(--border-strong);border-radius:var(--radius-control-sm);min-height:36px;color:var(--brand-800);background:var(--surface);cursor:pointer;justify-content:center;align-items:center;gap:5px;padding:0 14px;font-size:12px;font-weight:600;display:inline-flex}.run-copy:hover{background:var(--brand-050);border-color:#bdb2ab}.runs-empty{color:var(--text-tertiary);margin:12px 0 0;font-size:13px}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:470px;display:flex}.empty-state .logo-mark{filter:grayscale();opacity:.45}.empty-state h2{margin:17px 0 6px;font-size:18px}.empty-state p{color:var(--text-secondary);margin:0;font-size:14px}.empty-actions{gap:10px;margin-top:20px;display:flex}.empty-actions a,.groups-heading>div:last-child a,.form-actions a{border:1px solid var(--border);min-height:42px;color:var(--text-secondary);background:var(--surface);border-radius:10px;justify-content:center;align-items:center;padding:0 15px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.primary-action,.empty-actions .primary-action,.groups-heading>div:last-child .primary-action{color:#fff;border-color:var(--pku-red);background:var(--pku-red)}.editor-save,.batch-apply,.ai-import-submit,.primary-action,.mode-toggle button.on{border-radius:var(--radius-control)}.page-error{border:1px solid var(--danger-border);border-radius:var(--radius-control);color:var(--danger);background:var(--danger-bg);animation:status-in var(--motion-base) var(--ease-standard) both;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:13px 15px;font-size:14px;display:flex}.page-success{border:1px solid var(--free-border);border-radius:var(--radius-control);color:var(--free);background:var(--free-bg);animation:status-in var(--motion-base) var(--ease-standard) both;margin-bottom:16px;padding:13px 15px;font-size:14px;font-weight:600}.page-error small{color:#8d514c}.loading-panel{min-height:220px;padding:30px}.loading-state{width:100%;color:var(--text-secondary);align-content:start;gap:14px;display:grid}.loading-state.compact{gap:11px}.loading-state-label{font-size:13px;font-weight:600}.loading-track,.update-status-track{border-radius:var(--radius-pill);background:var(--busy-bg);display:block;position:relative;overflow:hidden}.loading-track{width:min(320px,70%);height:4px}.loading-track i,.update-status-track i{border-radius:inherit;background:var(--pku-red);width:38%;animation:progress-sweep 1.35s var(--ease-standard) infinite;position:absolute;inset:0 auto 0 0}.loading-skeleton{gap:9px;width:min(560px,92%);display:grid}.loading-skeleton i{background:var(--busy-bg);border-radius:5px;height:13px;display:block}.loading-skeleton i:nth-child(2){width:76%}.loading-skeleton i:nth-child(3){width:48%}.availability-results,.schedule-results{position:relative}.availability-results>.free-runs,.availability-results>.timetable-wrap,.schedule-results>:not(.update-status){transition:opacity var(--motion-base) var(--ease-standard)}.availability-results.is-updating>.free-runs,.availability-results.is-updating>.timetable-wrap,.schedule-results.is-updating>:not(.update-status){opacity:.58;pointer-events:none}.update-status{z-index:14;border:1px solid var(--border-strong);border-radius:var(--radius-pill);min-height:34px;color:var(--text-secondary);box-shadow:var(--shadow-card);animation:status-in var(--motion-base) var(--ease-standard) both;background:#fffffff0;align-items:center;gap:9px;padding:0 12px;font-size:12px;font-weight:600;display:inline-flex;position:absolute;top:12px;right:24px}.update-status-track{width:34px;height:3px}.bottom-nav{display:none}.detail-backdrop{z-index:100;animation:overlay-in var(--motion-base) var(--ease-standard) both;background:#201b1b47;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.slot-detail{border:1px solid var(--border);border-radius:var(--radius-overlay);background:var(--surface);width:min(390px,100%);box-shadow:var(--shadow-overlay);animation:panel-in var(--motion-base) var(--ease-emphasized) both;padding:26px;position:relative}.slot-detail:focus,.schedule-editor:focus{outline:none}.detail-close{border-radius:var(--radius-control);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;font-size:20px;position:absolute;top:15px;right:15px}.detail-close:hover{background:var(--surface-hover)}.slot-detail h2{margin:0 0 6px;font-size:21px}.detail-meta{color:var(--text-secondary);font-variant-numeric:tabular-nums;margin:0 0 16px;font-size:13px}.detail-summary{background:var(--busy-bg);color:var(--text-secondary);border-radius:11px;align-items:baseline;gap:7px;padding:15px;display:flex}.detail-summary.free{color:var(--free);background:var(--free-bg)}.detail-summary strong{font-size:24px}.detail-summary span{font-size:13px}.detail-note{border-radius:var(--radius-control);color:var(--warning);background:var(--warning-bg);margin:10px 0 0;padding:10px 12px;font-size:12px;line-height:1.55}.detail-actions{margin-top:14px}.copy-time{border:1px solid var(--border-strong);border-radius:var(--radius-control);width:100%;min-height:40px;color:var(--brand-800);background:var(--surface);cursor:pointer;justify-content:center;align-items:center;gap:5px;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.copy-time:hover{background:var(--brand-050);border-color:#bdb2ab}.slot-detail ul{margin:16px 0 0;padding:0;list-style:none}.slot-detail li{border-bottom:1px solid var(--border);grid-template-columns:20px 1fr auto;align-items:center;gap:8px;min-height:43px;font-size:14px;display:grid}.slot-detail li strong{font-weight:600}.slot-detail li small{max-width:180px;color:var(--text-secondary);text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-free,.status-busy,.status-unknown{justify-content:center;align-items:center;display:inline-flex}.status-free{color:var(--free);font-weight:800}.status-busy{color:#9c928d;font-size:10px}.status-unknown{color:#c8a24a;font-size:11px;font-weight:700}.runs-caveat{color:var(--text-secondary);font-weight:400}.icp-footer{text-align:center;padding:22px 0 28px}.icp-footer a{color:var(--text-tertiary);font-size:12px}.privacy-hint{color:var(--text-tertiary);margin:17px 0 0;font-size:12px;line-height:1.6}@keyframes overlay-in{0%{opacity:0}}@keyframes panel-in{0%{opacity:0;transform:translateY(8px)scale(.985)}}@keyframes sheet-in{0%{opacity:.85;transform:translateY(28px)}}@keyframes popover-in{0%{opacity:0;transform:translateY(-4px)scale(.99)}}@keyframes status-in{0%{opacity:0}}@keyframes progress-sweep{0%{transform:translate(-110%)}to{transform:translate(270%)}}.simple-header{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;height:64px;padding:0 32px;display:flex}.simple-header .brand{width:auto}.simple-header>a:last-child{color:var(--text-secondary);font-size:14px;text-decoration:none}.groups-content{width:min(1120px,100%);margin:0 auto;padding:0 0 26px}.groups-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px;display:flex}.groups-heading h1{margin:0;font-size:30px}.groups-heading>div:first-child>p:last-child{color:var(--text-secondary);margin:8px 0 0;font-size:14px}.groups-heading>div:last-child{gap:10px;display:flex}.groups-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.group-card{border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--surface);padding:23px}.group-card-heading{justify-content:space-between;gap:16px;display:flex}.group-card-heading h2{margin:0;font-size:19px}.group-card-heading span{color:var(--text-tertiary);margin-top:4px;font-size:12px;display:block}.group-card-heading>small{height:24px;color:var(--brand-800);background:var(--brand-050);border-radius:99px;padding:3px 8px;font-size:11px}.member-list{min-height:22px;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin:19px 0;font-size:14px;overflow:hidden}.invite-row{background:var(--surface-warm);border-radius:10px;align-items:center;gap:10px;min-height:48px;padding:0 12px;display:flex}.invite-row span{color:var(--text-tertiary);font-size:12px}.invite-row strong{color:var(--brand-800);letter-spacing:.12em}.invite-row button{color:var(--text-secondary);cursor:pointer;background:0 0;border:0;margin-left:auto;font-size:12px}.group-privacy-row{border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;min-height:48px;margin-top:10px;padding:0 12px;display:flex}.group-privacy-row span{color:var(--text-secondary);font-size:12px}.group-privacy-row select{max-width:155px;color:var(--text-primary);text-align:right;background:0 0;border:0;font-size:12px}.group-privacy-row{flex-wrap:wrap}.privacy-effective{color:var(--text-tertiary);flex-basis:100%;margin-top:-4px;font-size:11px}.view-group{color:var(--brand-800);justify-content:space-between;align-items:center;margin-top:18px;font-size:14px;font-weight:700;text-decoration:none;display:flex}.view-group span{display:inline-flex}.groups-section-title{color:var(--text-secondary);letter-spacing:.04em;margin:0 0 12px;font-size:13px;font-weight:700}.archived-groups{margin-top:28px}.group-card.archived{box-shadow:none;background:color-mix(in srgb, var(--surface) 72%, var(--canvas));border-style:dashed}.group-archive-note{color:var(--text-secondary);background:var(--surface-warm);border-radius:10px;padding:13px 14px;font-size:12px;line-height:1.65}.group-card-actions{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:8px;margin-top:16px;padding-top:14px;display:flex}.group-card-actions>button,.group-name-editor button,.group-member-row button,.group-danger-zone>button{border:1px solid var(--border-strong);min-height:34px;color:var(--text-secondary);background:var(--surface);cursor:pointer;border-radius:8px;padding:0 11px;font-size:12px;font-weight:600}.group-card-actions>button:hover:not(:disabled),.group-name-editor button:hover:not(:disabled),.group-member-row button:hover:not(:disabled){border-color:var(--brand-600);color:var(--brand-800)}.group-card-actions button:disabled,.group-name-editor button:disabled,.group-member-row button:disabled,.group-danger-zone>button:disabled{opacity:.55;cursor:wait}.group-card-actions .danger-link,.group-member-row .danger-link{color:var(--danger);border-color:#0000}.group-manage{border-top:1px solid var(--border);margin-top:14px;padding:16px 0 0}.group-name-editor>label,.group-member-manager h3{color:var(--text-secondary);margin:0 0 8px;font-size:12px;font-weight:700;display:block}.group-name-editor>div{gap:8px;display:flex}.group-name-editor input{border:1px solid var(--border-strong);min-width:0;height:38px;color:var(--text-primary);background:var(--surface);border-radius:8px;flex:1;padding:0 11px}.group-name-editor input:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.group-member-manager{margin-top:18px}.group-member-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:42px;display:flex}.group-member-row>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.group-member-row>span small{color:var(--brand-800);margin-left:7px;font-size:10px}.group-member-row>div{flex-shrink:0;gap:4px;display:flex}.group-danger-zone{border-top:1px solid var(--danger-border);justify-content:space-between;align-items:center;gap:14px;margin-top:16px;padding-top:15px;display:flex}.group-danger-zone strong,.group-danger-zone small{display:block}.group-danger-zone strong{color:var(--danger);font-size:12px}.group-danger-zone small{color:var(--text-tertiary);margin-top:3px;font-size:11px;line-height:1.5}.group-danger-zone>button{border-color:var(--danger-border);color:var(--danger);flex-shrink:0}.form-page{background:radial-gradient(circle at 50% 0%, #94070a12, transparent 36rem), var(--canvas);place-items:start center;min-height:100vh;padding:9vh 16px 40px;display:grid}.form-card{border:1px solid var(--border);border-radius:var(--radius-overlay);background:var(--surface);width:min(560px,100%);box-shadow:var(--shadow-card);padding:34px}.back-link{color:var(--text-secondary);align-items:center;gap:6px;margin-bottom:30px;font-size:13px;text-decoration:none;display:inline-flex}.form-card h1{margin:0;font-size:27px}.form-card>p:not(.eyebrow){color:var(--text-secondary);margin:8px 0 26px;font-size:14px;line-height:1.65}.group-form{display:grid}.field-label{gap:8px;font-size:14px;font-weight:600;display:grid}.field-label input{border:1px solid var(--border-strong);border-radius:var(--radius-control);height:46px;color:var(--text-primary);background:var(--surface);padding:0 13px}.field-label input:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.privacy-options{border:0;gap:9px;margin:24px 0 0;padding:0;display:grid}.privacy-options legend{margin-bottom:10px;font-size:14px;font-weight:600}.privacy-options label{border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:flex-start;gap:11px;padding:13px;display:flex}.privacy-options label:has(input:checked){background:var(--brand-050);border-color:#dcb5b6}.privacy-options input{accent-color:var(--pku-red);margin-top:4px}.privacy-options strong,.privacy-options small{display:block}.privacy-options strong{font-size:14px}.privacy-options small{color:var(--text-secondary);margin-top:3px;font-size:12px;line-height:1.5}.privacy-notice{color:var(--text-tertiary);margin:14px 0 22px;font-size:12px}.form-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding-top:20px;display:flex}.form-actions button{border-radius:var(--radius-control);color:#fff;background:var(--pku-red);cursor:pointer;border:0;min-height:42px;padding:0 17px;font-weight:700}.form-actions button:disabled{opacity:.6;cursor:wait}.import-page,.import-preview-page{min-height:100vh}.import-content{width:min(760px,100% - 32px);margin:0 auto;padding:54px 0 70px}.import-content h1{margin:0;font-size:30px}.import-content>p:not(.eyebrow){color:var(--text-secondary);margin:9px 0 28px;font-size:14px}.upload-flow{gap:15px;display:grid}.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius-panel-lg);background:var(--surface);text-align:center;min-height:330px;transition:border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex}.dropzone.dragging{border-color:var(--pku-red);background:var(--brand-050)}.upload-icon{border-radius:var(--radius-panel);width:54px;height:54px;color:var(--pku-red);background:var(--brand-050);place-items:center;font-size:27px;font-weight:600;display:grid}.dropzone h2{text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin:19px 0 7px;font-size:19px;overflow:hidden}.dropzone p{color:var(--text-secondary);margin:0 0 20px;font-size:13px}.dropzone button{border:1px solid var(--pku-red);min-height:44px;color:var(--pku-red);cursor:pointer;background:#fff;border-radius:10px;padding:0 17px;font-weight:700}.dropzone small{color:var(--text-tertiary);margin-top:13px;font-size:11px}.upload-actions{justify-content:space-between;align-items:center;display:flex}.upload-actions a{color:var(--brand-800);font-size:13px;font-weight:600}.upload-actions button{border-radius:var(--radius-control);color:#fff;background:var(--pku-red);cursor:pointer;border:0;min-height:44px;padding:0 18px;font-weight:700}.upload-actions button:disabled{opacity:.45;cursor:default}.import-preview-page .simple-header>span{color:var(--text-secondary);font-size:14px}.preview-layout{grid-template-columns:minmax(0,1fr) 330px;gap:20px;width:min(1240px,100% - 64px);margin:0 auto;padding:30px 0 104px;display:grid}.preview-main,.preview-aside{border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--surface)}.preview-main{overflow:hidden}.preview-toolbar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:62px;padding:0 20px;display:flex}.preview-toolbar strong{font-size:16px}.preview-toolbar button{border:1px solid var(--border);border-radius:var(--radius-control);min-height:38px;color:var(--brand-800);background:var(--surface);cursor:pointer;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.import-course-card{border-bottom:1px solid var(--border);padding:19px 20px}.import-course-card:last-child{border-bottom:0}.course-fields{grid-template-columns:1.5fr 1fr 1fr auto;align-items:end;gap:10px;display:grid}.course-fields label,.meeting-fields label{color:var(--text-secondary);gap:6px;font-size:11px;font-weight:600;display:grid}.course-fields input,.meeting-fields input,.meeting-fields select{border:1px solid var(--border);border-radius:var(--radius-control-sm);min-width:0;height:40px;color:var(--text-primary);background:var(--surface);padding:0 10px;font-size:13px}.course-fields input:focus,.meeting-fields input:focus,.meeting-fields select:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.meeting-fields .tsel .tsel-input{border:1px solid var(--border);border-radius:var(--radius-control-sm);background:var(--surface);min-width:0;height:40px;padding:0 26px 0 10px;font-size:13px}.meeting-fields .tsel .tsel-input:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.meeting-fields .tsel .tsel-chevron{font-size:10px;right:9px}.course-fields>button{width:42px;height:40px;color:var(--danger);cursor:pointer;background:0 0;border:0;border-radius:8px;font-size:12px}.course-fields>button:hover{background:var(--danger-bg)}.meeting-fields{border-radius:var(--radius-control);background:var(--surface-warm);grid-template-columns:105px 72px 72px minmax(140px,1fr) 34px;align-items:end;gap:9px;margin-top:13px;padding:13px;display:grid}.meeting-fields>button{border-radius:var(--radius-control-sm);width:34px;height:40px;color:var(--danger);cursor:pointer;background:0 0;border:0;place-items:center;font-size:17px;display:inline-grid}.meeting-fields>button:hover:not(:disabled){background:var(--danger-bg)}.meeting-fields>small{color:var(--text-tertiary);grid-column:1/-1;font-size:10px}.preview-aside{align-self:start;padding:21px}.preview-aside h2{margin:0 0 17px;font-size:18px}.import-stats{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.import-stats span{background:var(--surface-warm);min-width:0;color:var(--text-secondary);text-align:center;border-radius:9px;padding:12px 6px;font-size:10px}.import-stats strong{color:var(--text-primary);margin-bottom:3px;font-size:19px;display:block}.import-stats .warning{color:var(--warning);background:#fff4dd}.import-stats .warning strong{color:var(--warning)}.import-target-card{border:1px solid var(--border);background:var(--surface-warm);border-radius:10px;gap:5px;margin-top:14px;padding:14px;display:grid}.import-target-card small{color:var(--text-tertiary);letter-spacing:.08em;font-size:10px;font-weight:700}.import-target-card strong{color:var(--text-primary);font-size:15px}.import-target-card span{color:var(--brand-800);font-size:12px;font-weight:600}.import-target-card p{color:var(--text-secondary);margin:3px 0 0;font-size:11px;line-height:1.55}.warning-card{border:1px solid var(--warning-border);border-radius:var(--radius-control);background:var(--warning-bg);margin-top:14px;padding:13px}.warning-card strong{color:var(--warning);font-size:12px}.warning-card p{color:#70532a;margin:6px 0;font-size:12px;line-height:1.55}.warning-card small{color:#a17f4f;font-size:10px}.atomic-note{color:var(--text-tertiary);margin:18px 0 0;font-size:11px;line-height:1.6}.preview-error{z-index:50;border:1px solid var(--danger-border);border-radius:var(--radius-control);width:min(560px,100% - 32px);color:var(--danger);background:var(--danger-bg);box-shadow:var(--shadow-card);padding:13px 16px;font-size:13px;position:fixed;bottom:82px;left:50%;transform:translate(-50%)}.preview-actions{z-index:40;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff2;justify-content:flex-end;align-items:center;gap:10px;min-height:70px;padding:10px max(32px,50vw - 620px);display:flex;position:fixed;inset:auto 0 0}.preview-actions a{min-height:42px;color:var(--text-secondary);align-items:center;padding:0 16px;text-decoration:none;display:inline-flex}.preview-actions button{border-radius:var(--radius-control);color:#fff;background:var(--pku-red);cursor:pointer;border:0;min-height:44px;padding:0 19px;font-weight:700}.preview-actions button:disabled{opacity:.5}.preview-loading{border:1px solid var(--border);border-radius:var(--radius-panel);width:min(800px,100% - 32px);min-height:210px;color:var(--text-secondary);background:var(--surface);margin:40px auto;padding:30px}@media (max-width:1023px){:root{--sidebar:76px}.brand{width:48px}.brand>span:last-child{display:none}.sidebar{padding-inline:10px}.sidebar a{justify-content:center;padding:0}.sidebar a span{font-size:20px}.sidebar a:not(.active),.sidebar a.active{color:#0000;font-size:0}.semester-note{display:none}}@media (max-width:639px){.app-frame{padding:56px 0 74px}.topbar{height:56px;padding:0 16px}.brand{width:auto}.brand>span:last-child{display:flex}.brand small{display:none}.logo-mark{width:30px;height:30px}.logo-mark i{width:6px;height:15px}.logo-mark:before{width:5px;height:5px}.group-quick{display:none}.avatar{width:34px;height:34px}.sidebar{display:none}.main-content{padding:23px 16px 28px}.page-heading{align-items:flex-start;margin-bottom:17px}.page-heading>p{display:none}.page-heading h1{font-size:25px}.workspace{border-radius:14px}.controls{flex-direction:column;align-items:stretch;gap:15px;padding:17px 16px}.controls label>span,.week-control>span{margin-bottom:6px}.group-control button,.group-control select{width:100%;min-width:0;min-height:44px}.group-control .tsel{width:100%;min-width:0}.group-control .tsel-input{min-height:44px}.week-control{width:100%;margin:0}.week-control>span{text-align:left}.week-control>div{justify-content:space-between}.week-control .week-select{flex:1;min-width:0;max-width:none}.week-control .tsel.week-select{width:auto}.back-to-now{height:44px!important}.free-runs{border-inline:0;border-radius:0;margin:16px 0 0;padding:16px 15px}.free-runs-head{gap:14px;display:grid}.free-runs-heading{min-width:0}.free-runs-filters{width:100%;margin-left:0}.free-runs-filters .run-min,.free-runs-filters .run-daypart{flex:1;width:auto}.free-run-list li{grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;padding:11px 0}.run-time{grid-column:1}.run-copy{grid-area:1/2/span 2;align-self:center}.member-bar{padding:14px 16px;display:block}.member-bar>div:first-child{justify-content:space-between;align-items:baseline;margin-bottom:11px;display:flex}.member-bar>div:first-child span{margin:0}.member-chips{margin-right:-16px;padding-right:16px}.member-chips button{min-height:40px}.timetable-wrap{margin-top:16px;padding:17px 0 0}.matrix-head{flex-direction:column;align-items:stretch;gap:12px;padding:0 15px}.legend{margin-bottom:11px;padding:0 15px}.legend small{display:none}.grid-scroller{border-inline:0;border-bottom:0;border-radius:0}.timetable-grid{grid-template-columns:52px repeat(7,74px);min-width:570px}.corner{font-size:10px}.period,.slot{min-height:48px}.empty-state{min-height:360px;padding:20px}.bottom-nav{z-index:40;height:68px;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;inset:auto 0 0}.bottom-nav a{color:var(--text-tertiary);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;text-decoration:none;display:flex}.bottom-nav a span{font-size:18px;display:inline-flex}.bottom-nav a.active{color:var(--pku-red);font-weight:600}.bottom-nav a.active span{color:inherit}.detail-backdrop{align-items:flex-end;padding:0}.slot-detail{width:100%;padding:27px 20px max(25px, env(safe-area-inset-bottom));animation-name:sheet-in;animation-duration:var(--motion-slow);border-radius:20px 20px 0 0}.simple-header{height:56px;padding:0 16px}.simple-header .brand>span:last-child{display:flex}.simple-header .brand small{display:none}.groups-content{width:100%;padding:0}.groups-heading{flex-direction:column;align-items:stretch}.groups-heading>div:last-child{grid-template-columns:1fr 1fr;display:grid}.groups-grid{grid-template-columns:1fr}.group-manage{padding:14px}.group-member-row{flex-direction:column;align-items:flex-start;padding:10px 0}.group-member-row>div{width:100%}.group-member-row button{flex:1;min-height:40px}.group-danger-zone{flex-direction:column;align-items:flex-start}.group-danger-zone>button{width:100%;min-height:40px}.form-page{padding-top:5vh}.form-card{padding:27px 20px}.import-content{padding-top:32px}.dropzone{min-height:300px;padding:22px}.upload-actions{flex-direction:column-reverse;align-items:stretch;gap:12px}.upload-actions a,.upload-actions button{justify-content:center;align-items:center;min-height:44px;display:flex}.preview-layout{grid-template-columns:1fr;width:calc(100% - 24px);padding-top:14px}.preview-aside{grid-row:1}.course-fields{grid-template-columns:1fr 1fr}.course-fields label:first-child{grid-column:1/-1}.course-fields>button{grid-column:2;justify-self:end}.meeting-fields{grid-template-columns:1fr 1fr}.meeting-fields .weeks-field{grid-column:1/-1}.meeting-fields>button{grid-area:2/2;justify-self:end}.preview-actions{padding-inline:12px}.preview-actions button{flex:1}}.identity-page{background:radial-gradient(circle at 50% 0%, #94070a12, transparent 36rem), var(--canvas);place-items:center;min-height:100vh;padding:32px 16px;display:grid}.identity-card{border:1px solid var(--border);border-radius:var(--radius-overlay);background:var(--surface);width:min(440px,100%);box-shadow:var(--shadow-card);padding:36px}.identity-brand{align-items:center;gap:12px;margin-bottom:34px;display:flex}.identity-brand>div{flex-direction:column;display:flex}.identity-brand strong{letter-spacing:.1em;font-size:19px}.identity-brand small{color:var(--text-tertiary);letter-spacing:.1em;margin-top:2px;font-size:11px}.identity-heading h1{letter-spacing:0;margin:0;font-size:27px;line-height:1.4}.identity-heading>p:last-child{color:var(--text-secondary);margin:10px 0 26px;font-size:14px;line-height:1.65}.identity-form{display:grid}.identity-form label{margin:0 0 7px;font-size:14px;font-weight:600}.identity-form input{border:1px solid var(--border-strong);border-radius:var(--radius-control);width:100%;height:46px;color:var(--text-primary);background:var(--surface);margin-bottom:17px;padding:0 13px}.identity-form input::placeholder{color:var(--text-tertiary)}.identity-form input:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.identity-form>button{border-radius:var(--radius-control);color:#fff;background:var(--pku-red);cursor:pointer;height:46px;transition:background-color var(--motion-fast) var(--ease-standard);border:0;margin-top:5px;font-weight:700}.identity-form>button:hover:not(:disabled){background:var(--brand-800)}.identity-form>button:disabled{opacity:.65;cursor:wait}.form-error{color:var(--danger);margin:-5px 0 14px;font-size:13px}.code-hint{color:var(--text-secondary);margin:12px 0 8px;font-size:13px;line-height:1.6}.code-actions{justify-content:space-between;gap:12px;display:flex}.link-button{color:var(--pku-red);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:600}.link-button:disabled{color:var(--text-tertiary);cursor:default}.password-field{gap:7px;min-width:0;margin-top:16px;display:grid}.password-field label{margin-bottom:0}.password-input{min-width:0;position:relative}.password-input input{width:100%;padding-right:64px}.password-input button{min-height:44px;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.password-hint{color:var(--text-secondary);font-size:12px;line-height:1.6}.auth-links{flex-wrap:wrap;gap:12px 20px;margin-top:20px;display:flex}.auth-mode-title{margin:0 0 8px;font-size:17px}.auth-mode-note{color:var(--text-secondary);margin:0 0 18px;font-size:13px;line-height:1.7}.auth-email{overflow-wrap:anywhere}.identity-form .code-actions{flex-wrap:wrap}.identity-disclaimer{color:var(--text-tertiary);margin:20px 0 0;font-size:12px;line-height:1.6}.welcome-card{display:grid}.welcome-lede{color:var(--text-secondary);margin:10px 0 0;font-size:14px;line-height:1.7}.welcome-steps{gap:16px;margin:24px 0 0;padding:0;list-style:none;display:grid}.welcome-steps li{align-items:flex-start;gap:13px;display:flex}.welcome-steps i{color:#fff;background:var(--pku-red);border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:13px;font-style:normal;font-weight:700;display:grid}.welcome-steps strong{font-size:14px;display:block}.welcome-steps span{color:var(--text-secondary);margin-top:3px;font-size:13px;line-height:1.6;display:block}.welcome-actions{margin-top:26px}.welcome-cta{color:#fff;background:var(--pku-red);border-radius:10px;justify-content:center;align-items:center;min-height:46px;font-weight:700;text-decoration:none;display:flex}.welcome-cta:hover{background:var(--brand-800)}.welcome-link{text-align:center;margin:14px 0 0}.welcome-link a{color:var(--pku-red);align-items:center;gap:5px;font-size:12.5px;font-weight:600;text-decoration:none;display:inline-flex}.welcome-link a:hover{text-decoration:underline}@media (max-width:639px){.identity-page{place-items:start center;padding-top:11vh}.identity-card{padding:28px 22px}}.simple-header nav{gap:24px;display:flex}.simple-header nav a{color:var(--text-secondary);font-size:13px;text-decoration:none}.simple-header nav a:hover{color:var(--brand-800)}.schedule-page{width:min(1240px,100%);margin:0 auto;padding:0 0 26px}.schedule-page>.page-error{z-index:130;width:min(560px,100% - 32px);box-shadow:var(--shadow-card);position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.schedule-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;display:flex}.schedule-heading h1{margin:0;font-size:30px}.schedule-heading>div:first-child>p:last-child{color:var(--text-secondary);margin:7px 0 0;font-size:13px}.schedule-heading-actions{gap:9px;display:flex}.schedule-heading-actions a,.schedule-heading-actions button{border:1px solid var(--border-strong);border-radius:var(--radius-control);min-height:42px;color:var(--text-primary);background:var(--surface);cursor:pointer;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.schedule-heading-actions button:not(.busy-action){color:#fff;border-color:var(--pku-red);background:var(--pku-red)}.schedule-heading-actions .busy-action{color:#36525b;background:#edf4f5;border-color:#b7c9cd}.my-schedule-toolbar{justify-content:center;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.my-week-switcher{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);align-items:center;gap:4px;width:max-content;min-height:43px;margin:0;padding:3px;display:flex}.my-view-control{margin-left:0}.my-week-switcher button{border-radius:var(--radius-control-sm);width:38px;height:36px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;font-size:18px}.my-week-switcher button:hover:not(:disabled){background:var(--surface-hover)}.my-week-switcher button:disabled{opacity:.35;cursor:default}.my-week-switcher strong{text-align:center;min-width:130px;padding:0 13px;font-size:13px}.my-week-switcher em{color:var(--brand-800);background:var(--brand-050);border-radius:99px;margin-left:5px;padding:2px 6px;font-size:10px;font-style:normal}.my-grid-scroller{border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--surface);overflow-x:auto}.my-timetable{grid-template-rows:52px repeat(12,58px);grid-template-columns:68px repeat(7,minmax(105px,1fr));min-width:850px;display:grid;position:relative}.my-corner,.my-day,.my-period{z-index:2;background:var(--surface-warm);justify-content:center;align-items:center;display:flex;position:relative}.my-corner{color:var(--text-tertiary);grid-area:1/1;font-size:11px}.my-day{border-left:1px solid var(--border);color:var(--text-secondary);flex-direction:column;grid-row:1;gap:2px;font-size:12px;font-weight:700}.my-day small{color:var(--text-tertiary);font-size:10.5px;font-weight:500}.my-period{border-top:1px solid var(--border);flex-direction:column;grid-column:1}.my-period strong{font-size:14px}.my-period small{color:var(--text-tertiary);margin-top:2px;font-size:10.5px}.my-grid-cell{border:0;border-top:1px solid var(--border);border-left:1px solid var(--border);background:var(--surface);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:0;display:flex}.my-grid-cell:hover:not(:disabled),.my-grid-cell:focus-visible{background:#eef6f0}.my-grid-cell:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.my-grid-cell:disabled{cursor:default}.my-grid-hint{color:var(--text-tertiary);margin:10px 2px 8px;font-size:12px}.my-course-block,.my-busy-block{z-index:3;text-align:left;cursor:pointer;border-radius:7px;min-width:0;margin:3px;padding:7px 8px;overflow:hidden}.my-course-block{border:1px solid #e2bfc0;border-left:3px solid var(--pku-red);color:var(--text-primary);background:#fff4f3}.my-course-block:hover{border-color:var(--pku-red)}.my-course-block strong,.my-busy-block strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.35;display:block;overflow:hidden}.my-course-block span,.my-busy-block span{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:10.5px;line-height:1.3;display:block;overflow:hidden}.my-course-block.skipped{opacity:.68;background:#f5f4f3;border-color:#d8d4d1 #d8d4d1 #d8d4d1 #aaa39e}.my-course-block.skipped strong{text-decoration:line-through}.my-course-block em{color:#665f5a;background:#e7e4e1;border-radius:99px;margin-top:4px;padding:2px 5px;font-size:10px;font-style:normal;display:inline-block}.my-busy-block{color:#263f47;background:#eaf2f3;border:1px solid #b9ced2;border-left:3px solid #607d86}.my-busy-block:hover{border-color:#607d86}.my-day-view{gap:12px;display:grid}.my-day-timetable{--my-day-time-column:86px;grid-template-columns:var(--my-day-time-column) minmax(0, 1fr);border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--surface);display:grid;position:relative;overflow:hidden}.my-day-row{grid-column:1/-1;grid-template-columns:var(--my-day-time-column) minmax(0, 1fr);min-width:0;display:grid}.my-day-period{border-top:1px solid var(--border);background:var(--surface-warm);font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:5px;display:flex}.my-day-row:first-child .my-day-period,.my-day-row:first-child .my-day-cell{border-top:0}.my-day-period strong{font-size:13px}.my-day-period small{color:var(--text-tertiary);font-size:10.5px}.my-day-cell{border:0;border-top:1px solid var(--border);border-left:1px solid var(--border);background:var(--surface);cursor:pointer;min-width:0;padding:0}.my-day-cell:hover:not(:disabled),.my-day-cell:focus-visible{background:#eef6f0}.my-day-cell:hover:not(:disabled):after{content:"标记忙碌";color:#789483;font-size:12px;font-weight:600}.my-day-cell:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.my-day-cell:disabled{cursor:default}.my-day-event{z-index:3;grid-column:2;margin:4px 6px;padding:8px 10px}.my-day-event strong{font-size:13px}.my-day-event span{font-size:11px}.my-schedule-legend{color:var(--text-secondary);align-items:center;gap:18px;margin-top:13px;font-size:11px;display:flex}.my-schedule-legend span{align-items:center;gap:6px;display:flex}.my-schedule-legend i{border-radius:3px;width:10px;height:10px}.my-schedule-legend i.course{border-left:3px solid var(--pku-red);background:#fff4f3}.my-schedule-legend i.busy{background:#eaf2f3;border-left:3px solid #607d86}.my-schedule-legend i.skipped{opacity:.7;background:#d8d4d1}.my-schedule-legend small{color:var(--text-tertiary);margin-left:auto}.my-schedule-empty{border:1px solid var(--border);background:var(--surface);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;min-height:430px;display:flex}.my-schedule-empty h2{margin:18px 0 7px;font-size:20px}.my-schedule-empty p{color:var(--text-secondary);margin:0 0 20px;font-size:13px}.my-schedule-empty>div{gap:9px;display:flex}.my-schedule-empty a,.my-schedule-empty button{border:1px solid var(--pku-red);min-height:42px;color:var(--pku-red);cursor:pointer;background:#fff;border-radius:9px;align-items:center;padding:0 15px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.my-schedule-empty a{color:#fff;background:var(--pku-red)}.my-schedule-empty .link-button{background:0 0;border:0;min-height:0;padding:0}.confirmed-empty-note{color:var(--text-secondary);margin:16px 0 0;font-size:13px;line-height:1.7}.editor-backdrop{z-index:100;animation:overlay-in var(--motion-base) var(--ease-standard) both;background:#201b1b57;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.schedule-editor{border:1px solid var(--border);border-radius:var(--radius-overlay);background:var(--surface);width:min(720px,100%);max-height:calc(100vh - 40px);box-shadow:var(--shadow-overlay);animation:panel-in var(--motion-base) var(--ease-emphasized) both;flex-direction:column;display:flex;overflow:hidden}.schedule-editor>header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:76px;padding:16px 22px;display:flex}.schedule-editor h2{margin:0;font-size:21px}.schedule-editor>header>button{border-radius:var(--radius-control);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;font-size:20px}.schedule-editor>header>button:hover{background:var(--surface-hover)}.editor-body{gap:17px;padding:21px 22px;display:grid;overflow-y:auto}.editor-body label{color:var(--text-secondary);gap:7px;font-size:11px;font-weight:600;display:grid}.editor-body input,.editor-body select{border:1px solid var(--border-strong);border-radius:var(--radius-control);width:100%;min-width:0;height:42px;color:var(--text-primary);background:var(--surface);padding:0 11px}.editor-body input:focus,.editor-body select:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.editor-body .tsel .tsel-input{border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);min-width:0;height:42px;padding:0 30px 0 11px}.editor-body .tsel .tsel-input:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.editor-two{grid-template-columns:1fr 1fr;gap:12px;display:grid}.editor-three{grid-template-columns:1.2fr 1fr 1fr;gap:12px;display:grid}.meeting-editor-title{justify-content:space-between;align-items:center;margin-top:2px;display:flex}.meeting-editor-title strong{font-size:13px}.meeting-editor-title button{min-height:34px;color:var(--brand-800);cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;font-size:12px;font-weight:600;display:inline-flex}.schedule-meeting-row{background:var(--surface-warm);border-radius:10px;grid-template-columns:105px 70px 70px 1fr 34px;align-items:end;gap:8px;padding:13px;display:grid}.schedule-meeting-row>button{border-radius:var(--radius-control-sm);width:34px;height:42px;color:var(--danger);cursor:pointer;background:0 0;border:0;place-items:center;font-size:18px;display:inline-grid}.schedule-meeting-row>button:hover:not(:disabled){background:var(--danger-bg)}.schedule-meeting-row>button:disabled{opacity:.25;cursor:default}.editor-body fieldset{border:0;flex-wrap:wrap;gap:8px;padding:0;display:flex}.editor-body legend{color:var(--text-primary);margin-bottom:9px;font-size:12px;font-weight:700}.editor-body .radio-option{border:1px solid var(--border);min-height:39px;color:var(--text-primary);cursor:pointer;border-radius:9px;grid-template-columns:auto 1fr;align-items:center;gap:7px;padding:0 11px;display:flex}.radio-option:has(input:checked){background:#edf4f5;border-color:#a6bdc2}.radio-option input{accent-color:#607d86;width:auto;height:auto}.busy-weeks-preview{color:var(--text-secondary);margin:-4px 0 0;font-size:12px}.batch-skip{padding-top:2px}.batch-skip-toggle{border:1px dashed var(--border-strong);min-height:34px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:9px;padding:0 12px;font-size:12.5px}.batch-skip-toggle:hover{color:var(--brand-800);background:var(--surface-warm);border-color:#bdb2ab}.batch-skip-note{color:var(--text-secondary);margin:11px 0 9px;font-size:12.5px;line-height:1.65}.batch-presets{margin-bottom:9px}.batch-skip .week-grid button{min-height:32px}.batch-skip .busy-weeks-preview{margin:10px 0 0}.batch-apply{color:#fff;background:var(--pku-red);cursor:pointer;border:0;border-radius:9px;width:100%;min-height:42px;margin-top:10px;font-size:14px;font-weight:600}.batch-apply:hover:not(:disabled){background:#7d0609}.batch-apply:disabled{opacity:.55;cursor:default}.busy-privacy-note{color:#52686d;background:#edf4f5;border-radius:9px;margin:0;padding:12px 14px;font-size:11px}.schedule-editor>footer{border-top:1px solid var(--border);align-items:center;gap:9px;min-height:70px;padding:12px 22px;display:flex}.schedule-editor>footer span{flex:1}.schedule-editor>footer button{cursor:pointer;border-radius:9px;min-height:42px;padding:0 15px;font-size:12px;font-weight:700}.schedule-editor>footer button:disabled{opacity:.5;cursor:wait}.editor-save{color:#fff;background:var(--pku-red);border:0;min-width:90px}.secondary-action{border:1px solid var(--border-strong);color:var(--text-primary);background:var(--surface)}.danger-link{color:var(--danger);background:0 0;border:0}@media (max-width:639px){.simple-header nav{gap:14px}.schedule-page{width:100%;padding:0}.schedule-heading{flex-direction:column;align-items:stretch}.schedule-heading h1{font-size:26px}.schedule-heading-actions{grid-template-columns:1fr 1fr;display:grid}.schedule-heading-actions a{grid-column:1/-1;justify-content:center}.schedule-heading-actions button{justify-content:center}.my-schedule-toolbar{flex-direction:column;align-items:stretch;gap:10px}.my-week-switcher{justify-content:space-between;width:100%}.my-week-switcher strong{flex:1;min-width:0}.my-view-control{width:100%}.my-view-control>span{text-align:left}.my-view-control .mode-toggle{width:100%}.my-view-control .mode-toggle button{flex:1;min-height:44px}.my-grid-scroller{border-inline:0;border-radius:0}.my-timetable{grid-template-columns:54px repeat(7,98px);min-width:740px}.my-day-timetable{--my-day-time-column:76px}.my-day-period strong{font-size:12px}.my-day-event{margin:4px}.my-schedule-legend{flex-wrap:wrap;padding:0 16px}.my-schedule-legend small{width:100%;margin-left:0;line-height:1.5}.my-schedule-empty{min-height:390px;margin:0 16px}.editor-backdrop{align-items:flex-end;padding:0}.schedule-editor{width:100%;max-height:92vh;animation-name:sheet-in;animation-duration:var(--motion-slow);border-radius:20px 20px 0 0}.schedule-editor>header{min-height:68px;padding:13px 16px}.editor-body{padding:17px 16px}.editor-two{grid-template-columns:1fr}.schedule-meeting-row{grid-template-columns:1fr 1fr 1fr 34px}.schedule-meeting-row .meeting-weeks{grid-column:1/4}.schedule-meeting-row>button{grid-area:1/4}.editor-three{grid-template-columns:1fr 1fr}.editor-three label:first-child{grid-column:1/-1}.schedule-editor>footer{padding:12px 16px max(12px, env(safe-area-inset-bottom))}.danger-link{padding-inline:0!important}}.settings-content{width:min(680px,100%);margin:0 auto;padding:0}.settings-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:26px;display:flex}.settings-heading .eyebrow{margin:0}.settings-heading h1{margin:6px 0 0;font-size:32px}.settings-heading p:not(.eyebrow){color:var(--text-secondary);margin:8px 0 0;font-size:14px}.settings-card{border:1px solid var(--border);background:var(--surface);border-radius:16px;margin-bottom:18px;padding:24px 26px}.settings-card h2{margin:0 0 16px;font-size:17px}.settings-field{gap:7px;margin-bottom:16px;font-size:14px;font-weight:600;display:grid}.settings-field:last-child{margin-bottom:0}.settings-field input{border:1px solid var(--border-strong);min-height:44px;color:var(--text-primary);background:var(--surface);font:inherit;border-radius:10px;padding:0 13px;font-weight:500}.settings-field input:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.settings-static{border:1px dashed var(--border-strong);min-height:44px;color:var(--text-secondary);border-radius:10px;align-items:center;padding:0 13px;font-weight:500;display:flex}.settings-note{color:var(--text-tertiary);margin:2px 0 0;font-size:13px;font-weight:400;line-height:1.6}.privacy-options{gap:10px;display:grid}.privacy-option{border:1px solid var(--border);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);border-radius:12px;align-items:flex-start;gap:11px;padding:13px 14px;display:flex}.privacy-option:hover{background:var(--surface-hover)}.privacy-option.selected{border-color:var(--pku-red);background:var(--brand-050)}.privacy-option input{accent-color:var(--pku-red);margin:3px 0 0}.privacy-option span{gap:3px;display:grid}.privacy-option strong{font-size:14px}.privacy-option small{color:var(--text-secondary);font-size:13px;font-weight:400;line-height:1.55}.semester-facts{grid-template-columns:1fr 1fr;gap:12px;margin:0 0 12px;display:grid}.semester-facts>div{border-left:2px solid var(--border-strong);padding:4px 12px}.semester-facts dt{color:var(--text-tertiary);font-size:12px}.semester-facts dd{margin:4px 0 0;font-size:15px;font-weight:600}.logout-button{border:1px solid var(--danger-border);border-radius:var(--radius-control);min-height:42px;color:var(--danger);background:var(--danger-bg);cursor:pointer;padding:0 18px;font-size:14px;font-weight:600}.logout-button:hover:not(:disabled){background:#fddcdc}.logout-button:disabled{opacity:.6;cursor:wait}.settings-actions{justify-content:flex-end;align-items:center;gap:14px;padding-top:6px;display:flex}.settings-saved{color:var(--free);font-size:13px;font-weight:600}.settings-save-error{color:var(--danger);font-size:13px;font-weight:600}.save-button{color:#fff;background:var(--pku-red);cursor:pointer;border:0;border-radius:10px;min-height:44px;padding:0 22px;font-size:14px;font-weight:700}.save-button:hover:not(:disabled){background:var(--brand-800)}.save-button:disabled{opacity:.6;cursor:wait}@media (max-width:639px){.settings-content{width:100%;padding:0}.settings-heading h1{font-size:26px}.settings-card{margin:0 0 14px;padding:20px 16px}.semester-facts{grid-template-columns:1fr}.settings-actions{padding:0}.save-button{flex:1}.member-chips button{min-height:44px}.detail-close{min-width:44px;min-height:44px}}.field-error{color:var(--danger);margin:-8px 0 0;font-size:12px}.schedule-meeting-row{align-items:start}.schedule-meeting-row.invalid input,.schedule-meeting-row.invalid select,.schedule-meeting-row.invalid .tsel-input{border-color:var(--danger)}.schedule-meeting-row .week-quick,.schedule-meeting-row .field-error{grid-column:1/-1}.schedule-meeting-row .field-error{margin:0}.conflict-box{border:1px solid var(--danger-border);border-radius:var(--radius-control);background:var(--danger-bg);padding:12px 14px}.conflict-box strong{color:var(--danger);font-size:13px}.conflict-box ul{gap:4px;margin:7px 0 0;padding:0;list-style:none;display:grid}.conflict-box li{color:var(--text-primary);font-size:12.5px}.conflict-box li b{margin-right:4px}.conflict-box small{color:var(--text-tertiary);margin-top:7px;font-size:11px;display:block}.week-quick{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.week-quick>button{border:1px solid var(--border);min-height:26px;color:var(--text-secondary);background:var(--surface);cursor:pointer;border-radius:99px;padding:0 9px;font-size:11.5px}.week-quick>button.on{color:var(--brand-800);background:var(--brand-050);border-color:#dcb5b6;font-weight:600}.week-quick .week-grid{border:1px solid var(--border);background:var(--surface-warm);border-radius:9px;flex-basis:100%;grid-template-columns:repeat(8,30px);gap:4px;padding:8px;display:grid}.week-grid button{border:1px solid var(--border);min-height:28px;color:var(--text-secondary);background:var(--surface);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:7px;font-size:11.5px}.week-grid button.on{color:#fff;border-color:var(--pku-red);background:var(--pku-red);font-weight:700}.page-success .link-button{margin-left:12px}.import-steps{color:var(--text-tertiary);gap:22px;margin:14px 0 6px;padding:0;font-size:13px;list-style:none;display:flex}.import-steps li{align-items:center;gap:7px;display:inline-flex}.import-steps i{border:1px solid var(--border-strong);width:22px;height:22px;color:var(--text-tertiary);background:var(--surface);border-radius:50%;place-items:center;font-size:12px;font-style:normal;font-weight:700;display:grid}.import-steps li.current{color:var(--text-primary);font-weight:700}.import-steps li.current i{color:#fff;border-color:var(--pku-red);background:var(--pku-red)}.import-steps li.done{color:var(--text-secondary)}.import-steps li.done i{color:var(--free);border-color:var(--free-border);background:var(--free-bg)}.import-content .import-steps{margin-top:18px}.import-help{border:1px solid var(--border);background:var(--surface-warm);border-radius:11px;margin:18px 0 0;padding:13px 16px;font-size:13px}.import-help summary{color:var(--brand-800);cursor:pointer;font-weight:600}.import-help div{color:var(--text-secondary);gap:8px;margin-top:10px;line-height:1.7;display:grid}.import-help p{margin:0}.ai-import{border:1px solid var(--border);background:var(--surface-warm);border-radius:11px;gap:9px;margin-top:18px;padding:15px 16px;display:grid}.ai-import h2{margin:0;font-size:15px}.ai-import p{color:var(--text-secondary);margin:0;font-size:12.5px;line-height:1.65}.ai-import-actions{align-items:center;gap:10px;display:flex}.ai-import-actions button{border:1px solid var(--border-strong);min-height:38px;color:var(--text-primary);background:var(--surface);cursor:pointer;border-radius:9px;padding:0 14px;font-size:13px;font-weight:600}.ai-import-actions button:hover{border-color:#bdb2ab}.ai-import-actions span{color:var(--text-tertiary);font-size:12px}.ai-import textarea{border:1px solid var(--border);background:var(--surface);resize:vertical;border-radius:10px;width:100%;padding:10px 12px;font-size:13px;line-height:1.6}.ai-import textarea:focus{outline:2px solid var(--focus-ring);border-color:var(--pku-red)}.ai-import small{color:var(--text-tertiary);font-size:11.5px;line-height:1.6}.ai-import-submit{color:#fff;background:var(--pku-red);cursor:pointer;border:0;border-radius:9px;min-height:42px;font-size:14px;font-weight:600}.ai-import-submit:hover:not(:disabled){background:#7d0609}.ai-import-submit:disabled{opacity:.55;cursor:default}.import-course-card{position:relative}.import-course-card.flash:after{content:"";border:2px solid var(--pku-red);pointer-events:none;animation:status-in var(--motion-base) var(--ease-standard) both;border-radius:16px;position:absolute;inset:-3px}.preview-toolbar button.toggled{color:#fff;border-color:var(--pku-red);background:var(--pku-red)}.add-meeting{border:1px dashed var(--border-strong);border-radius:var(--radius-control);width:100%;min-height:38px;color:var(--text-secondary);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:5px;margin-top:10px;font-size:12.5px;display:inline-flex}.add-meeting:hover{color:var(--brand-800);background:var(--surface-warm);border-color:#bdb2ab}.meeting-fields{position:relative}.meeting-fields>small{color:var(--text-tertiary);font-size:10.5px;position:absolute;bottom:9px;right:34px}.warning-actions{gap:8px;margin-top:9px;display:flex}.warning-actions button{border:1px solid var(--border-strong);min-height:28px;color:var(--text-secondary);background:var(--surface);cursor:pointer;border-radius:8px;padding:0 11px;font-size:12px}.warning-actions button:hover{color:var(--brand-800);border-color:#bdb2ab}.all-resolved{color:var(--free);margin:12px 0 0;font-size:12.5px;font-weight:600}.import-grid-wrap{border:1px solid var(--border);background:var(--surface-warm);border-radius:12px;margin:12px 0 16px;padding:14px}.import-grid{background:var(--border);border:1px solid var(--border);border-radius:8px;grid-template-columns:30px repeat(7,minmax(64px,1fr));gap:1px;min-width:560px;display:grid;overflow:hidden}.ig-corner,.ig-day,.ig-period{background:var(--surface);text-align:center;color:var(--text-tertiary);padding:5px 4px;font-size:11px}.ig-day{color:var(--text-secondary);font-weight:700}.ig-period{font-variant-numeric:tabular-nums}.ig-cell{background:var(--surface);border-left:0;min-height:26px}.ig-cell.filled{border-style:solid;border-width:0 0 0 3px;align-items:center;display:flex;overflow:hidden}.ig-cell span{white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;font-weight:600;overflow:hidden}.ig-note{color:var(--text-tertiary);margin:10px 0 0;font-size:11.5px}@media (max-width:639px){.import-steps{flex-wrap:wrap;gap:12px}.week-quick .week-grid{grid-template-columns:repeat(8,1fr)}.import-grid{min-width:480px}}.page-error button{border:1px solid var(--danger-border);border-radius:var(--radius-control-sm);min-height:34px;color:var(--danger);cursor:pointer;background:#fff;padding:0 14px;font-size:13px;font-weight:600}.page-error button:hover{border-color:var(--danger)}.grid-scroller,.my-grid-scroller{position:relative}.swipe-hint{z-index:5;border-radius:var(--radius-pill);color:#fff;white-space:nowrap;pointer-events:none;transition:opacity var(--motion-slow) var(--ease-standard), visibility var(--motion-slow) var(--ease-standard);background:#201b1bb8;align-items:center;gap:6px;padding:7px 14px;font-size:11.5px;display:inline-flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.swipe-hint.gone{opacity:0;visibility:hidden}@media (min-width:640px){.swipe-hint{display:none}}.mode-control{margin-left:auto}.mode-control>span{color:var(--text-tertiary);text-align:center;margin-bottom:8px;font-size:12px;font-weight:600;display:block}.mode-toggle{border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);padding:3px;display:inline-flex}.mode-toggle button{border-radius:var(--radius-control-sm);min-height:38px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;padding:0 16px;font-size:13px;font-weight:600}.mode-toggle button.on{color:#fff;background:var(--pku-red)}.day-view{gap:12px;display:grid}.day-chips{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.day-chips button{border:1px solid var(--border);border-radius:var(--radius-control);min-height:52px;color:var(--text-secondary);background:var(--surface);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:13px;font-weight:600;display:flex}.day-chips button small{color:var(--text-tertiary);font-size:10px;font-weight:500}.day-chips button.on{color:#fff;border-color:var(--pku-red);background:var(--pku-red)}.day-chips button.on small{color:#fffc}.day-slots{gap:6px;margin:0;padding:0;list-style:none;display:grid}.day-slots li{grid-template-columns:96px 1fr;align-items:stretch;gap:10px;display:grid}.day-slot-time{border:1px solid var(--border);background:var(--surface-warm);border-radius:10px;align-content:center;gap:2px;padding:6px 10px;display:grid}.day-slot-time strong{font-size:12.5px}.day-slot-time small{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.slot.day-slot{justify-content:flex-start;min-height:52px;padding:0 14px}.slot.day-slot .slot-count{font-size:13px}.members-toggle{border:1px dashed var(--border-strong);min-height:38px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:99px;padding:0 13px;font-size:12.5px}.members-toggle:hover{color:var(--brand-800)}@media (max-width:639px){.page-heading{margin-bottom:14px}.page-heading h1{font-size:23px}.page-heading>p{display:none}.controls{gap:12px;padding:12px 16px}.group-control span,.week-control>span,.mode-control>span{margin-bottom:5px}.group-control select,.group-control .tsel-input{min-height:44px}.mode-control{width:100%}.mode-control>span{text-align:left}.mode-toggle{width:100%}.mode-toggle button{flex:1;min-height:44px}.member-bar{padding:12px 16px}.slot.day-slot,.day-chips button{min-height:56px}.week-quick>button{min-height:36px;padding:0 12px}.week-grid button{min-height:36px}.run-day-chips button,.free-runs-filters select,.free-runs-filters .tsel .tsel-input,.warning-actions button,.run-copy{min-height:40px}.add-meeting,.members-toggle{min-height:44px}.back-to-now{min-height:44px!important}.week-control .week-select,.week-control .tsel.week-select .tsel-input{min-height:44px}.week-control button{min-width:44px;height:44px}}.admin-shell{max-width:1060px;margin:0 auto;padding:30px 20px 64px}.admin-gate{max-width:430px;padding-top:12vh}.admin-gate h1{margin:2px 0 8px;font-size:26px}.admin-note{color:var(--text-tertiary);font-size:13px}.admin-gate .admin-note{margin-bottom:18px}.admin-key-form{gap:10px;margin-top:14px;display:flex}.admin-key-form input{border:1px solid var(--border);background:var(--surface-warm);border-radius:10px;flex:1;min-height:44px;padding:0 14px;font-size:14px}.admin-key-form button{background:var(--brand-800,#2f6b4f);color:#fff;cursor:pointer;border:0;border-radius:10px;min-height:44px;padding:0 22px;font-size:14px;font-weight:700}.admin-key-form button:disabled{opacity:.55;cursor:default}.admin-error{color:var(--pku-red);margin-top:14px;font-size:13px}.admin-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:10px;display:flex}.admin-header h1{font-size:26px}.admin-header-actions{align-items:center;gap:10px;display:flex}.admin-header-actions button{border:1px solid var(--border);background:var(--surface-warm);cursor:pointer;border-radius:9px;min-height:38px;padding:0 16px;font-size:13px;font-weight:600}.admin-header-actions button:disabled{opacity:.55;cursor:default}.admin-header-actions .admin-quiet{color:var(--text-secondary)}.admin-badge{color:#246042;background:#e2f3e9;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.admin-stats{flex-wrap:wrap;gap:10px;margin:16px 0 20px;display:flex}.admin-stats>div{border-left:2px solid var(--border-strong);flex-direction:column;flex:120px;gap:2px;padding:6px 14px;display:flex}.admin-stats strong{font-variant-numeric:tabular-nums;font-size:21px}.admin-stats span{color:var(--text-tertiary);font-size:12px}.admin-card{border:1px solid var(--border);background:var(--surface-warm);border-radius:14px;margin-bottom:18px;padding:16px 18px 18px}.admin-card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-card-head h2{font-size:16px}.admin-card-head input{border:1px solid var(--border);background:#fff;border-radius:9px;min-width:200px;min-height:36px;padding:0 12px;font-size:13px}.admin-table-scroll{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:13px}.admin-table th{text-align:left;color:var(--text-tertiary);border-bottom:1px solid var(--border);white-space:nowrap;padding:7px 10px;font-size:11.5px;font-weight:700}.admin-table td{vertical-align:top;border-bottom:1px solid #f0ebe6;padding:8px 10px}.admin-table tr:last-child td{border-bottom:0}.admin-mono{font-variant-numeric:tabular-nums;font-family:var(--font-mono);color:var(--text-secondary);white-space:nowrap;font-size:12px}.admin-flag{color:#7e5730;background:#f5e8d6;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10.5px;font-style:normal;font-weight:700}.admin-sub{color:var(--text-tertiary);font-size:11px;display:block}@media (max-width:639px){.admin-shell{padding:20px 14px 48px}.admin-card{padding:13px 12px 15px}.admin-card-head input{flex:1;min-width:0}}.school-picker{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.school-picker label{color:var(--text-secondary);font-size:13px;font-weight:700}.school-picker select{border:1px solid var(--border);background:var(--surface-warm);border-radius:10px;min-height:44px;padding:0 12px;font-size:14px}.school-picker small{color:var(--text-tertiary);font-size:12px}.settings-school-select{border:1px solid var(--border);background:#fff;border-radius:10px;width:100%;max-width:360px;min-height:44px;padding:0 12px;font-size:14px}.feedback-fab{z-index:40;border:1px solid var(--border);background:var(--surface-warm);min-height:40px;color:var(--text-secondary);cursor:pointer;border-radius:999px;padding:0 16px;font-size:13px;font-weight:700;position:fixed;bottom:18px;right:18px;box-shadow:0 4px 14px #00000014}.feedback-fab:hover{color:var(--text-primary);filter:brightness(1.03)}.feedback-card{border:1px solid var(--border);border-radius:var(--radius-panel-lg);background:var(--surface-warm);width:min(520px,100vw - 40px);box-shadow:var(--shadow-overlay);animation:panel-in var(--motion-base) var(--ease-emphasized) both;padding:20px 22px 18px;position:relative}.feedback-card h2{margin:2px 0 12px;font-size:18px}.feedback-card textarea{resize:vertical;border:1px solid var(--border);border-radius:var(--radius-control);background:#fff;width:100%;min-height:120px;padding:10px 12px;font-size:14px;line-height:1.6}.feedback-meta{justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.feedback-meta small{color:var(--text-tertiary);font-size:12px}.feedback-meta button{background:var(--brand-800,#2f6b4f);color:#fff;cursor:pointer;border:0;border-radius:9px;min-height:38px;padding:0 18px;font-size:13px;font-weight:700}.feedback-meta button:disabled{opacity:.55;cursor:default}.feedback-done{text-align:center;color:#2a6f4d;animation:status-in var(--motion-base) var(--ease-standard) both;justify-content:center;align-items:center;gap:7px;padding:18px 0 8px;font-size:15px;font-weight:700;display:flex}.feedback-admin-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.feedback-admin-list li{border-bottom:1px solid #f0ebe6;padding:12px 4px}.feedback-admin-list li:last-child{border-bottom:0}.feedback-admin-list li.handled{opacity:.55}.feedback-admin-head{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.feedback-admin-head small{color:var(--text-tertiary);font-size:11.5px}.feedback-admin-head button{border:1px solid var(--border);background:var(--surface-warm);cursor:pointer;border-radius:8px;min-height:30px;margin-left:auto;padding:0 12px;font-size:12px}.feedback-admin-list p{white-space:pre-wrap;word-break:break-word;margin:6px 0 0;font-size:13.5px;line-height:1.65}@media (max-width:639px){.feedback-fab{bottom:78px;right:12px}.feedback-admin-head button{margin-left:0}}.tsel{position:relative}.tsel-input{border:1px solid var(--border);border-radius:var(--radius-control);width:100%;min-height:44px;color:var(--text-primary);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard);background:#fff;padding:0 34px 0 12px;font-size:14px}.tsel-input:focus{outline:2px solid var(--focus-ring);outline-offset:2px;border-color:var(--pku-red);box-shadow:none}.tsel-input::placeholder{color:var(--text-tertiary)}.tsel-chevron{pointer-events:none;color:var(--text-tertiary);transition:transform var(--motion-fast) var(--ease-standard);font-size:12px;display:inline-flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.tsel.open .tsel-chevron{transform:translateY(-50%)rotate(180deg)}.tsel-panel{z-index:36;background:var(--surface-warm);border:1px solid var(--border);border-radius:var(--radius-panel);transform-origin:top;max-height:302px;animation:popover-in var(--motion-fast) var(--ease-emphasized) both;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto;box-shadow:0 14px 36px #3c2d1e24}.tsel-group{pointer-events:none;letter-spacing:.05em;color:var(--text-tertiary);padding:9px 10px 4px;font-size:11px;font-weight:800}.tsel-option{border-radius:var(--radius-control-sm);color:var(--text-primary);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;font-size:13.5px;display:flex}.tsel-option.active{background:#f1e7da}.tsel-option.selected{color:var(--brand-800,#2f6b4f);font-weight:700}.tsel-check{color:var(--brand-800,#2f6b4f);font-weight:800;display:inline-flex}.tsel-empty{color:var(--text-tertiary);padding:12px 10px;font-size:13px}.schedule-info-banner{color:#674d32;animation:status-in var(--motion-base) var(--ease-standard) both;background:#fbf4e9;border:1px solid #efdabe;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:10px 0;padding:10px 14px;font-size:13px;display:flex}.schedule-info-banner .banner-actions{gap:8px;display:flex}.schedule-info-banner button{border:1px solid var(--border);background:var(--surface-warm);cursor:pointer;border-radius:8px;min-height:32px;padding:0 12px;font-size:12.5px;font-weight:600}.info-period-table{border-collapse:collapse;width:100%;margin-bottom:12px;font-size:13.5px}.info-period-table th,.info-period-table td{text-align:left;border-bottom:1px solid #f0ebe6;padding:7px 10px}.info-period-table th{color:var(--text-tertiary);font-size:11.5px}.info-period-table td{font-variant-numeric:tabular-nums}.period-school-fields,.period-pku-fields,.period-time-fields{flex:1;align-items:flex-start;gap:8px;min-width:0;display:flex}.period-school-fields>label,.period-pku-fields>label{flex:1;min-width:0}.tsel-panel{min-width:235px}.period-hint{color:#7e5730;width:100%;font-size:12px}:is(.schedule-meeting-row:has(.period-school-fields),.schedule-meeting-row:has(.period-pku-fields),.schedule-meeting-row:has(.period-time-fields)){grid-template-columns:105px 1fr 220px 34px}.tsel-panel{min-width:250px;right:auto}.error-fallback{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:100vh;padding:24px;display:flex}.error-fallback h1{margin:8px 0 4px;font-size:22px}.error-fallback p{color:var(--text-secondary);max-width:460px;margin:0 0 10px;font-size:14px;line-height:1.7}.error-fallback-actions{align-items:center;gap:12px;display:flex}.error-fallback-actions button[type=button]:first-child{background:var(--pku-red);color:#fff;cursor:pointer;border:0;border-radius:10px;min-height:40px;padding:0 20px;font-size:14px;font-weight:700}:where(input:not([type=radio]):not([type=checkbox]),textarea,select,.tsel-input):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-color:var(--pku-red);box-shadow:none}:where(button,input,textarea,select):disabled{opacity:var(--disabled-opacity);cursor:not-allowed}@media (max-width:639px){.update-status{top:8px;right:12px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,:before,:after{transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.loading-track i,.update-status-track i{width:42%;animation:none!important;transform:none!important}}
