@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+TC:wght@400;500;600;700&display=swap";.site-footer{border-top:1px solid var(--border);background:#fff;margin-top:auto}.site-footer-inner{max-width:1100px;color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 20px;margin:0 auto;padding:16px 20px 20px;font-size:13px;display:flex}.site-footer nav{gap:16px;display:flex}.site-footer a{color:var(--text-secondary);font-weight:600;text-decoration:none}.site-footer a:hover,.site-footer a.active{color:var(--accent)}.site-footer p{margin:0}.layout-sidebar .site-footer-inner{max-width:none;padding-left:28px;padding-right:28px}@media (width<=768px){.site-footer-inner,.layout-sidebar .site-footer-inner{padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));flex-direction:column;align-items:flex-start}}.layout{flex-direction:column;min-height:100vh;display:flex}.header{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);z-index:100;background:#ffffffeb;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;max-width:1100px;height:64px;margin:0 auto;padding:0 20px;display:flex}.logo{font-family:var(--font-display);color:var(--text-primary);cursor:pointer;padding-bottom:2px;font-size:19px;font-weight:700;position:relative}.logo.header-brand{align-items:center;gap:10px;margin:0;padding-bottom:0;display:flex}.logo.header-brand:after{display:none}.logo.header-brand .header-brand-btn{gap:10px}.brand-logo{object-fit:cover;background:#fff;border-radius:50%;flex-shrink:0;display:block}.logo:after{content:"";background:linear-gradient(90deg, var(--accent), #2ecc71);border-radius:2px;width:100%;height:2px;position:absolute;bottom:-2px;left:0}.nav{gap:28px;display:flex}.nav a{color:var(--text-secondary);padding:6px 0;font-size:14px;font-weight:500;text-decoration:none;transition:color .2s;position:relative}.nav a:after{content:"";background:var(--accent);border-radius:2px;width:0;height:2px;transition:width .25s;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.nav a.active,.nav a:hover{color:var(--text-primary)}.nav a.active:after{width:100%}.user-area{align-items:center;gap:14px;display:flex}.user-chip{min-width:0;font:inherit;color:inherit;text-align:left;background:0 0;border:none;align-items:center;gap:8px;margin:0;padding:0;display:inline-flex}.user-chip .teacher-face{flex-shrink:0}.header-brand-btn{align-items:center;gap:inherit;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;margin:0;padding:0;display:inline-flex}.username{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;padding:0;font-size:13px;overflow:hidden}.btn-link{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:13px;font-weight:500}.btn-link:hover{color:var(--accent)}.btn-primary-sm{background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 18px;font-size:13px;font-weight:600}.btn-primary-sm:hover{background:#6a57e0;box-shadow:0 2px 10px #7b68ee40}.main-content{flex:1;width:100%;min-width:0;max-width:1100px;margin:0 auto;padding:24px 20px}.menu-trigger{width:40px;height:40px;color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-left:-6px;padding:0;display:none}.menu-trigger:hover{background:var(--bg-elevated)}.menu-trigger-bars{flex-direction:column;justify-content:center;gap:5px;width:18px;height:14px;display:flex}.menu-trigger-bars span{background:currentColor;border-radius:1px;height:2px;transition:transform .28s cubic-bezier(.22,1,.36,1),opacity .18s;display:block}.layout.is-menu-open .menu-trigger-bars span:first-child,.layout-sidebar.is-menu-open .menu-trigger-bars span:first-child{transform:translateY(7px)rotate(45deg)}.layout.is-menu-open .menu-trigger-bars span:nth-child(2),.layout-sidebar.is-menu-open .menu-trigger-bars span:nth-child(2){opacity:0}.layout.is-menu-open .menu-trigger-bars span:nth-child(3),.layout-sidebar.is-menu-open .menu-trigger-bars span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.menu-overlay{display:none}@media (width<=768px){.header-inner{flex-wrap:nowrap;gap:8px;height:56px;min-height:56px;padding:0 12px}.menu-trigger{display:inline-flex}.logo{flex:1;min-width:0;font-size:15px}.nav{display:none}.user-area{gap:8px;margin-left:auto}.user-area .btn-link{display:none}.btn-primary-sm{padding:6px 12px;font-size:12px}.main-content{padding:12px 12px 28px}.main-content:has(.calapp){padding-left:4px;padding-right:4px}.menu-overlay{z-index:90;opacity:0;visibility:hidden;pointer-events:none;background:#fff;padding:12px 28px 48px;transition:opacity .28s,transform .36s cubic-bezier(.22,1,.36,1),visibility 0s linear .36s;display:block;position:fixed;inset:56px 0 0;overflow-y:auto;transform:translateY(-16px)}.layout.is-menu-open .menu-overlay{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .28s,transform .36s cubic-bezier(.22,1,.36,1),visibility linear;transform:none}.menu-overlay-nav{flex-direction:column;align-items:flex-start;gap:0;display:flex}.menu-overlay-nav a,.menu-overlay-nav button{text-align:left;width:100%;color:var(--text-primary);font-family:var(--font-display);cursor:pointer;background:0 0;border:none;padding:16px 0;font-size:28px;font-weight:700;line-height:1.2;text-decoration:none;display:block}.menu-overlay-nav a.active{color:var(--accent)}}.layout-sidebar{flex-direction:row;align-items:stretch;min-height:100vh}.layout-sidebar .header{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--sidebar-bg);border-right:1px solid var(--border);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:none;flex-shrink:0;height:100vh;transition:width .2s,min-width .2s;position:sticky;top:0;overflow:hidden auto}.layout-sidebar.is-collapsed .header{width:var(--sidebar-collapsed-width);min-width:var(--sidebar-collapsed-width)}.layout-sidebar .header-inner{flex-flow:column;justify-content:flex-start;align-items:stretch;gap:4px;max-width:none;height:100%;min-height:100%;margin:0;padding:16px 12px 12px}.sidebar-menu-panel{flex-direction:column;flex:1;min-height:0;display:flex}.sidebar-top{justify-content:space-between;align-items:center;gap:8px;padding:0 4px 8px;display:flex}.sidebar-brand{cursor:pointer;flex:1;align-items:center;gap:10px;min-width:0;padding:6px 4px 6px 0;display:flex}.layout-sidebar .logo{font-size:16px;line-height:1.2}.nav-section-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding:14px 12px 6px;font-size:11px;font-weight:600}.layout-sidebar .nav{flex-direction:column;flex:1;gap:2px}.layout-sidebar .nav a{border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex}.layout-sidebar .nav a:after{display:none}.layout-sidebar .nav a:hover{background:#292d340a}.layout-sidebar .nav a.active{background:#eceef2;font-weight:600}.layout-sidebar .nav a.has-nav-badge{position:relative}.nav-badge{background:var(--danger);color:#fff;text-align:center;border-radius:999px;flex-shrink:0;min-width:18px;height:18px;margin-left:auto;padding:0 5px;font-size:11px;font-weight:700;line-height:18px}.layout-sidebar.is-collapsed .nav-badge{min-width:16px;height:16px;margin-left:0;padding:0 4px;font-size:10px;line-height:16px;position:absolute;top:2px;right:2px}.layout-sidebar.is-collapsed.is-menu-open .nav-badge{min-width:22px;height:22px;margin-left:auto;font-size:12px;line-height:22px;position:static}.nav-group{margin:2px 0 6px}.nav-group-label{width:100%;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.nav-group-label:hover{background:#292d340a}.nav-group-text{flex:1}.nav-group-caret{color:var(--text-muted);font-size:10px;transition:transform .15s;transform:rotate(-90deg)}.nav-group.is-open .nav-group-caret{transform:rotate(0)}.nav-group.is-active .nav-group-label{color:var(--text-primary)}.nav-sub{border-left:1px solid var(--border);flex-direction:column;gap:2px;margin:2px 0 4px 18px;padding-left:10px;display:flex}.nav-sub a{padding:6px 12px;font-size:13px}.nav-icon{flex-shrink:0;width:18px;height:18px}.space-swatch{border-radius:4px;flex-shrink:0;width:16px;height:16px}.nav-icon-box{color:#fff;justify-content:center;align-items:center;display:inline-flex}.nav-icon-box .nav-icon{width:11px;height:11px}.layout-sidebar .user-area{border-top:1px solid var(--border);flex-flow:row;justify-content:flex-start;align-items:center;gap:10px;margin-top:auto;padding:12px 8px 4px}.layout-sidebar .user-chip{flex:1;min-width:0}.sidebar-user-actions{flex-shrink:0;align-items:center;gap:10px;margin-left:auto;display:flex}.layout-sidebar .username{color:var(--text-primary);background:0 0;border:none;min-width:0;font-weight:600}.sidebar-toggle{width:28px;height:28px;color:var(--text-secondary);cursor:pointer;box-shadow:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;margin:0 0 0 auto;font-size:14px;line-height:1}.sidebar-toggle:hover{color:var(--accent);background:#292d340a}.sidebar-toggle:focus{outline:none}.layout-maincol{background:var(--bg-deep);flex-direction:column;flex:1;min-width:0;min-height:100vh;display:flex}.layout-maincol .main-content{flex:1}.layout-sidebar .main-content{background:var(--bg-deep);min-width:0;max-width:none;margin:0;padding:20px 28px 40px}.legal-wrap{max-width:760px}.legal-page{color:var(--text-primary);margin:0;padding:0 0 24px}.legal-updated{color:var(--text-muted);margin:0 0 8px;font-size:13px}.legal-account{color:var(--text-secondary);margin:0 0 20px;font-size:14px;font-weight:600}.legal-page h2{margin:22px 0 8px;font-size:18px}.legal-page p,.legal-page li{font-size:15px;line-height:1.75}.legal-page p{margin:0 0 12px}.legal-page ul{margin:0 0 12px;padding-left:1.2em}.legal-page li{margin:0 0 6px}.legal-page a{font-weight:600}@media (width<=768px){.layout-sidebar .layout-maincol{min-height:0}}.layout-sidebar.is-collapsed .sidebar-top{justify-content:flex-start;padding:0 0 8px}.layout-sidebar.is-collapsed .sidebar-brand{flex:none;justify-content:center;padding:4px 0 8px;display:flex}.layout-sidebar.is-collapsed .logo,.layout-sidebar.is-collapsed .nav-section-label,.layout-sidebar.is-collapsed .nav-label,.layout-sidebar.is-collapsed .nav-group-caret,.layout-sidebar.is-collapsed .username,.layout-sidebar.is-collapsed .sidebar-logout,.layout-sidebar.is-collapsed .sidebar-user-actions{display:none}.layout-sidebar.is-collapsed .user-chip{flex:none;justify-content:center}.layout-sidebar.is-collapsed .nav a,.layout-sidebar.is-collapsed .nav-group-label{justify-content:center;gap:0;padding:10px 8px}.layout-sidebar.is-collapsed .user-area{flex-direction:column;align-items:center;padding:10px 4px 6px}.layout-sidebar.is-collapsed .sidebar-toggle{margin:0}@media (width<=768px){.layout-sidebar{flex-direction:column}.layout-sidebar .header,.layout-sidebar.is-collapsed .header{z-index:100;border-right:none;border-bottom:1px solid var(--border);background:#fff;width:100%;min-width:0;height:56px;position:sticky;top:0;overflow:visible}.layout-sidebar .header-inner,.layout-sidebar.is-collapsed .header-inner{flex-flow:row;justify-content:flex-start;align-items:center;gap:4px;max-width:none;height:56px;min-height:56px;padding:0 12px}.layout-sidebar .sidebar-top{flex:1;min-width:0;padding:0}.layout-sidebar .sidebar-brand{flex:1;gap:8px;min-width:0;padding:0}.layout-sidebar.is-collapsed .sidebar-brand{justify-content:flex-start;padding:0;display:flex}.layout-sidebar.is-collapsed .logo{text-overflow:ellipsis;white-space:nowrap;font-size:15px;display:block;overflow:hidden}.layout-sidebar .sidebar-toggle{display:none}.layout-sidebar .sidebar-menu-panel{z-index:90;padding:8px 20px calc(16px + env(safe-area-inset-bottom,0px));opacity:0;visibility:hidden;pointer-events:none;background:#fff;flex-direction:column;transition:opacity .28s,transform .36s cubic-bezier(.22,1,.36,1),visibility 0s linear .36s;display:flex;position:fixed;inset:56px 0 0;overflow-y:auto;transform:translateY(-16px)}.layout-sidebar .nav{flex-direction:column;flex:1;justify-content:flex-start;gap:0;padding:0;display:flex;overflow:visible}.layout-sidebar .user-area,.layout-sidebar.is-collapsed .user-area{width:100%;padding:16px 0 calc(8px + env(safe-area-inset-bottom,0px));flex-direction:row;justify-content:flex-start;align-items:center;gap:14px;margin-top:auto;margin-left:0}.layout-sidebar .main-content{padding:16px 14px 32px}.main-content:has(.calapp){padding-left:4px;padding-right:4px}.layout-sidebar .main-content:has(.calapp){padding-left:4px;padding-right:4px}.layout-sidebar.is-menu-open .sidebar-menu-panel{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .28s,transform .36s cubic-bezier(.22,1,.36,1),visibility linear;transform:none}.layout-sidebar.is-menu-open .nav-section-label,.layout-sidebar.is-collapsed.is-menu-open .nav-section-label{padding:16px 0 6px;font-size:11px;display:block}.layout-sidebar.is-menu-open .nav a,.layout-sidebar.is-menu-open .nav-group-label,.layout-sidebar.is-collapsed.is-menu-open .nav a,.layout-sidebar.is-collapsed.is-menu-open .nav-group-label,.layout-sidebar.is-collapsed.is-menu-open .nav-label{font-family:var(--font-display);color:var(--text-primary);border-radius:0;justify-content:flex-start;gap:12px;padding:11px 0;font-size:20px;font-weight:600;display:flex}.layout-sidebar.is-menu-open .nav-group-label{width:100%}.layout-sidebar.is-menu-open .nav-group-caret,.layout-sidebar.is-collapsed.is-menu-open .nav-group-caret{color:var(--text-secondary);margin-left:auto;font-size:18px;display:inline-block}.layout-sidebar.is-menu-open .nav a.active{color:var(--accent);background:0 0}.layout-sidebar.is-menu-open .nav-icon,.layout-sidebar.is-menu-open .space-swatch{width:20px;height:20px}.layout-sidebar.is-menu-open .nav-icon-box .nav-icon{width:12px;height:12px}.layout-sidebar.is-menu-open .nav-group{margin:0}.layout-sidebar.is-menu-open .nav-sub{border-left:1px solid var(--border);margin:0 0 6px 9px;padding-left:18px}.layout-sidebar.is-menu-open .nav-sub a{color:var(--text-secondary);padding:9px 0;font-size:17px;font-weight:500}.layout-sidebar.is-menu-open .nav-sub a.active{color:var(--accent)}.layout-sidebar.is-menu-open .username,.layout-sidebar.is-menu-open .sidebar-logout,.layout-sidebar.is-collapsed.is-menu-open .username,.layout-sidebar.is-collapsed.is-menu-open .sidebar-logout{display:inline}.layout-sidebar.is-menu-open .sidebar-user-actions,.layout-sidebar.is-collapsed.is-menu-open .sidebar-user-actions{display:flex}.layout-sidebar.is-menu-open .sidebar-logout{font-size:16px}}@media (width<=768px) and (prefers-reduced-motion:reduce){.layout-sidebar .sidebar-menu-panel,.menu-overlay,.menu-trigger-bars span{transition:none}}.act-menu{display:inline-flex}.act-menu-btn{border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text-secondary);background:#fff;border-radius:8px;font-size:16px;font-weight:700;line-height:1}.act-menu-mask{z-index:90;position:fixed;inset:0}.act-menu-pop{z-index:91;border:1px solid var(--border);min-width:148px;box-shadow:var(--shadow-md);background:#fff;border-radius:10px;padding:4px;position:fixed}.act-menu-pop button{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;width:100%;padding:8px 10px;font-size:13px;display:block}.act-menu-pop button:hover{background:var(--bg-elevated)}.act-menu-pop button.is-danger{color:var(--danger)}.mh-crumb{color:var(--text-muted);align-items:center;gap:8px;margin-bottom:10px;font-size:13px;display:flex}.mh-crumb button{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.mh-crumb em{color:var(--text-primary);font-style:normal;font-weight:600}.mh-label{color:var(--text-secondary);margin-bottom:6px;font-size:13px;display:block}.mh-help{color:var(--text-muted);margin:6px 0 0;font-size:12px}.mh-shared{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:10px;padding:10px 12px}.mh-shared-label{color:var(--text-secondary);margin:0 0 6px;font-size:12px}.mh-shared ul{margin:0;padding:0;list-style:none}.mh-shared li{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;line-height:1.5;display:flex}.mh-shared li+li{margin-top:4px}.mh-shared a{color:var(--accent);text-decoration:none}.mh-shared a:hover{text-decoration:underline}.mh-shared em{color:var(--text-muted);font-size:12px;font-style:normal}.mh-shared-when{color:var(--text-muted);flex-basis:100%;font-size:12px}.mh-hours{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;display:grid}.mh-suffix{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;align-items:center;display:flex;overflow:hidden}.mh-suffix input:not([type=checkbox]){border:none;border-radius:0;flex:1;width:100%;min-width:0}.mh-suffix span{color:var(--text-secondary);background:var(--bg-elevated);border-left:1px solid var(--border);white-space:nowrap;justify-content:center;align-items:center;height:38px;padding:0 12px;font-size:13px;display:flex}.mh-pkg-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 3.5rem;align-items:center;display:grid}.mh-disc-cols{grid-template-columns:minmax(0,1fr) minmax(4.5rem,.55fr) 4.75rem 3.5rem;align-items:center;display:grid}.mh-suffix.mh-pkg-cols,.mh-suffix.mh-disc-cols{display:grid}.mh-suffix.mh-pkg-cols .btn-link,.mh-suffix.mh-disc-cols .btn-link{justify-content:center;align-items:center;height:38px;padding:0;display:flex}.mh-row-head{color:var(--text-muted);margin:10px 0 4px;font-size:12px;font-weight:600}.mh-row-head span{min-width:0;padding:0 10px}.mh-row-head .mh-row-head-act{padding:0}.mh-note-req{border-left:1px solid var(--border);background:var(--bg-elevated);justify-content:center;align-items:center;height:38px;display:flex}.mh-note-req input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;margin:0}.mh-note-req input[type=checkbox]:disabled{cursor:default}.mh-row-head.mh-disc-cols span:nth-child(3){text-align:center;padding-left:4px;padding-right:4px}.mh-save-row{justify-content:flex-end;align-items:center;gap:12px;display:flex}.mh-save-btn{width:140px}.mh-dirty{color:var(--accent-gold);font-size:12px}.mh-cover{object-fit:cover;border:1px solid var(--border);border-radius:10px;width:100%;max-height:160px;margin-bottom:8px;display:block}.mj-stats{color:var(--text-secondary);flex-wrap:wrap;gap:16px;margin-bottom:12px;font-size:13px;display:flex}.mj-stats b{color:var(--text-primary)}.mj-scan{gap:8px;margin-bottom:12px;display:flex}.mj-scan input{flex:1;max-width:320px}.mj-code{font:inherit;letter-spacing:.03em;cursor:pointer;color:var(--accent);background:0 0;border:none;padding:0;font-weight:700}.mj-empty{text-align:center;color:var(--text-secondary);padding:36px 16px}.mt-ghost{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:#fff;padding:8px 12px;font-size:13px}@media (width<=640px){.mh-hours{grid-template-columns:1fr}.mh-save-row{justify-content:stretch}.mh-save-btn{width:100%}}.mh-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.mh-head-main{min-width:0}.mh-title{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:700}.mh-status{border:1px solid var(--border);height:36px;color:var(--text-primary);background:#fff;border-radius:10px;align-items:center;gap:8px;padding:0 10px 0 12px;font-size:13px;font-weight:600;display:flex}.mh-dot{background:#c5cad3;border-radius:99px;width:8px;height:8px;display:inline-block}.mh-dot.is-on{background:#27ae60}.color-tickets{flex-wrap:wrap;gap:8px;display:flex}.color-tickets button{cursor:pointer;border:2px solid #0000;border-radius:50%;width:22px;height:22px;padding:0}.color-tickets button:disabled{cursor:default;opacity:.7}.color-tickets button.on{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.mh-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:18px;display:flex}.mh-tab-action{margin-bottom:6px;margin-left:auto}.mh-tab{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-size:14px;font-weight:600}.mh-tab.is-on{color:var(--accent);border-bottom-color:var(--accent)}.mh-danger{background:var(--danger-soft);border:1px solid #e74c3c59;max-width:640px;margin-top:28px}.mh-danger h3{color:var(--danger);margin:0 0 6px;font-size:14px}.mh-danger p{color:var(--text-secondary);margin:0 0 12px;font-size:13px}.ml-tools{flex-wrap:wrap;gap:10px;margin-bottom:14px;display:flex}.ml-tools input,.ml-tools select{width:auto;min-width:180px;padding:8px 10px}.ml-title{font:inherit;color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-weight:600}.ml-title:hover{text-decoration:underline}.ml-title-cell{align-items:center;gap:8px;display:flex}.ml-color{border-radius:4px;flex-shrink:0;width:12px;height:12px}.ml-row.is-off td{opacity:.55}.ml-status{align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.mj-tools{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.mj-tools input,.mj-tools select{width:auto;min-width:140px;padding:7px 10px}.mac-page{max-width:1180px}.mac-head{border-bottom:none;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;padding-bottom:0;display:flex}.mac-head-left{align-items:flex-start;gap:12px;min-width:0;display:flex}.mac-head-copy h1{letter-spacing:-.03em;margin:0;font-size:28px;font-weight:700;line-height:1.2}.mac-head-copy p{color:var(--text-muted);margin:6px 0 0;font-size:14px}.mac-add{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:10px 18px;font-size:14px;font-weight:700;display:inline-flex;box-shadow:0 8px 18px #7b68ee47}.mac-add:hover{background:#6a57e0}.mac-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:22px;display:flex}.mac-toolbar.is-list{margin-bottom:14px}.mac-toolbar.is-list .mac-views{margin-left:0}.mac-search{border:1px solid var(--border);background:#fff;border-radius:999px;width:220px;max-width:100%;padding:9px 12px;font-size:13px}.mac-pills{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.mac-pill{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:600}.mac-pill:hover{color:var(--text-primary)}.mac-pill.is-on{color:#1f2430;background:#fff;border-color:#1f2430}.mac-views{background:#eef0f3;border-radius:10px;gap:2px;margin-left:auto;padding:3px;display:inline-flex}.mac-views button{width:34px;height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;place-items:center;display:grid}.mac-views button .nav-icon{width:16px;height:16px}.mac-views button.is-on{color:var(--text-primary);box-shadow:var(--shadow-sm);background:#fff}.mac-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.mac-card{background:#fff;border-radius:18px;flex-direction:column;min-width:0;display:flex;overflow:hidden;box-shadow:0 10px 28px #181c240f}.mac-art{cursor:pointer;border:none;border-radius:14px;width:calc(100% - 24px);height:168px;margin:12px 12px 0;padding:0;display:block;position:relative;overflow:hidden}.mac-art img,.mac-art svg{object-fit:cover;width:100%;height:100%;display:block}div.mac-art{cursor:default}h2.mac-title{width:100%;min-height:0}.mac-badge{z-index:1;color:#1f2430;background:#fff;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700;position:absolute;top:12px;left:12px;box-shadow:0 4px 10px #181c2414}.mac-title{letter-spacing:-.02em;text-align:left;cursor:pointer;color:inherit;-webkit-line-clamp:2;background:0 0;border:none;-webkit-box-orient:vertical;min-height:3.2em;margin:0;padding:16px 18px 14px;font-size:18px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.mac-meta{background:#f7f8fa;border-top:1px solid #eef0f3;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:auto;padding:12px 44px 14px 16px;display:grid;position:relative}.mac-meta-col{flex-direction:column;gap:4px;min-width:0;display:flex}.mac-meta-col+.mac-meta-col{border-left:1px solid #e6e8ec;padding-left:10px}.mac-meta-col span{letter-spacing:.04em;color:var(--text-muted);font-size:10px;font-weight:700}.mac-meta-col b{color:var(--text-primary);font-size:14px;font-weight:700}.mac-status{color:#4b5563;background:#e5e7eb;border-radius:999px;justify-content:center;align-items:center;width:fit-content;min-height:22px;padding:2px 8px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.mac-more{position:absolute;top:50%;right:8px;transform:translateY(-50%)}.mac-card .act-menu-btn,.mac-table .act-menu-btn{background:0 0;border-color:#0000}.mac-card .act-menu-btn:hover,.mac-table .act-menu-btn:hover{background:#eceff3}.mac-dates{padding:0 18px 12px}.mac-dates>span{letter-spacing:.04em;color:var(--text-muted);margin-bottom:6px;font-size:10px;font-weight:700;display:block}.mac-dates>b{color:var(--text-muted);font-size:13px;font-weight:600}.mac-date-chips{flex-wrap:wrap;gap:6px;display:flex}.mac-date-chip{color:var(--accent);background:#f3f0ff;border-radius:8px;padding:4px 8px;font-size:12px;font-style:normal;font-weight:600}.mac-date-chip.is-more{color:var(--text-muted);background:#eef0f3}button.mac-date-chip{font:inherit;font-size:12px;font-weight:600}.mac-dates.is-compact{padding:0}.mac-dates.is-compact>span{display:none}.mac-price{color:var(--text-secondary);margin:0;padding:0 18px 12px;font-size:13px;font-weight:700}.mac-table{-webkit-overflow-scrolling:touch;background:#fff;border-radius:16px;max-width:100%;overflow-x:auto;box-shadow:0 10px 28px #181c240f}.mac-table table{box-shadow:none;width:max-content;min-width:100%}.mac-table th,.mac-table td{white-space:nowrap;padding:12px;font-size:14px}.mac-table th{color:var(--text-muted);text-align:left;font-weight:500}@media (width<=1100px){.mac-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.mac-grid{grid-template-columns:1fr}.mac-head{flex-direction:column;align-items:stretch}.mac-add{align-self:flex-start}.mac-head-copy h1{font-size:22px}.mac-search{width:100%}.mac-views{margin-left:0}}.hhs{min-width:0;max-width:100%}.hhs.is-pick{--hhs-pick:#7b6cf6;--hhs-pick-soft:#f3f0ff;margin-bottom:8px}.hhs-track{box-sizing:border-box;grid-template-columns:repeat(auto-fill,minmax(7.2rem,1fr));gap:8px;width:100%;display:grid}.hhs.is-pick .hhs-track{grid-template-columns:repeat(auto-fill,minmax(8rem,1fr));gap:8px}.hhs.is-compact .hhs-track{grid-template-columns:repeat(auto-fill,minmax(6.6rem,1fr));gap:6px}.hhs-col{flex-direction:column;align-items:stretch;gap:4px;min-width:0;display:flex}.hhs.is-pick .hhs-col{min-width:0}.hhs-col.is-tip .hhs-cap{pointer-events:auto}.hhs-people{z-index:80;border:1px solid var(--border);min-width:168px;max-width:260px;max-height:260px;box-shadow:var(--shadow-md);pointer-events:none;background:#fff;border-radius:10px;padding:10px 12px;position:fixed;overflow:auto;transform:translate(-50%,-100%)}.hhs-people.is-below{transform:translate(-50%)}.hhs-people h5{color:var(--text-muted);margin:0 0 8px;font-size:12px;font-weight:600}.hhs-people p{color:var(--text-secondary);margin:0;font-size:13px}.hhs-people ul{margin:0;padding:0;list-style:none}.hhs-people li{color:var(--text-primary);padding:3px 0;font-size:13px;font-weight:600}.hhs-people li+li{border-top:1px solid var(--border)}.hhs-people small{color:var(--text-muted);margin-top:1px;font-size:11px;font-weight:500;display:block}.hhs-cap{text-align:center;min-height:16px;color:var(--text-muted);pointer-events:none;flex-direction:column;justify-content:flex-start;align-items:center;gap:0;line-height:1.2;display:flex}.hhs-cap.is-live{pointer-events:auto;cursor:pointer}.hhs-cap em{color:var(--text-muted);font-size:10px;font-style:normal;font-weight:500}.hhs-cap b{color:var(--text-secondary);font-size:11px;font-weight:600}.hhs-cap.is-full b{color:var(--danger)}.hhs.is-pick .hhs-cap.is-full b{color:#8b8d97}.hhs-cap.is-on b,.hhs-cap.is-picked b{color:var(--hhs-pick,#7b6cf6)}.hhs.is-compact .hhs-cap b{font-size:10px}.hhs-cell{width:100%;min-width:0;min-height:36px;color:var(--text-secondary);font:inherit;box-sizing:border-box;background:#f7f8fa;border:1px solid #e4e6eb;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:8px 6px;line-height:1.15;transition:background .15s,border-color .15s,transform .12s,box-shadow .15s,filter .12s;display:flex}.hhs-cell b{color:var(--text-primary);white-space:nowrap;font-size:11px;font-weight:700}.hhs.is-pick .hhs-cell{color:#8b8f9a;background:#f4f5f7;border:1px solid #e2e4ea;border-radius:10px;min-width:0;min-height:44px;padding:10px 6px}.hhs.is-pick .hhs-cell b{letter-spacing:0;color:#5c6068;font-size:12px;font-weight:600}.hhs-x{flex-shrink:0;display:block}.hhs-cell.is-ok{background:#eef8f0;border-color:#c8e6cf}.hhs-cell.is-hot{background:#fff4e5;border-color:#f3d0a0}.hhs-cell.is-full{color:var(--danger);cursor:not-allowed;background:#fdecea;border-color:#f5b7b1}.hhs-cell.is-full b,.hhs-cell.is-full .hhs-x{color:var(--danger)}.hhs-cell.is-on{background:color-mix(in srgb, var(--accent,#7b68ee) 18%, #fff);border-color:var(--accent,#7b68ee);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent,#7b68ee) 22%, transparent)}.hhs.is-pick .hhs-cell.is-on{background:var(--hhs-pick);color:#fff;box-shadow:none;border-color:#6f61e8}.hhs.is-pick .hhs-cell.is-on b{color:#fff;font-weight:500}.hhs.is-pick .hhs-cell.is-picked{background:var(--hhs-pick-soft);border-color:color-mix(in srgb, var(--hhs-pick) 42%, #d8d9de);color:var(--hhs-pick);box-shadow:none}.hhs.is-pick .hhs-cell.is-picked b{color:var(--hhs-pick)}.hhs.is-pick .hhs-cell.is-enrolled{color:#0f6b4c;box-shadow:none;background:#e8f6ee;border-color:#b7dfc8}.hhs.is-pick .hhs-cell.is-enrolled b{color:#0f6b4c}.hhs.is-pick .hhs-cell.is-locked{cursor:default}.hhs.is-pick .hhs-cell.is-added{color:#fff;box-shadow:none;background:#e67e22;border-color:#d35400}.hhs.is-pick .hhs-cell.is-added b{color:#fff;font-weight:500}.hhs-cap.is-added b{color:#d35400;white-space:nowrap;font-size:10px}.hhs-cap.is-enrolled-add b{white-space:nowrap;font-size:10px}.hhs.is-pick .hhs-cell.is-added.is-live:hover{filter:brightness(.94)}.hhs-cap.is-enrolled b{color:#0f6b4c}.hhs.is-pick .hhs-cell.is-full{color:#8b8d97;background:#ececef;border-color:#d8d9de}.hhs.is-pick .hhs-cell.is-full b,.hhs.is-pick .hhs-cell.is-full .hhs-x{color:#8b8d97}.hhs-cell.is-live{cursor:pointer}.hhs-cell.is-live:hover{border-color:var(--accent,#7b68ee)}.hhs.is-pick .hhs-cell.is-live:hover:not(.is-on):not(.is-picked):not(.is-enrolled):not(.is-added){background:var(--hhs-pick-soft);border-color:#c9c4f0;transform:translateY(-1px)scale(1.03)}.hhs.is-pick .hhs-cell.is-on.is-live:hover{filter:brightness(.94)}.hhs.is-pick .hhs-cell.is-live:active{transform:scale(.97)}.hhs.is-pick .hhs-cell:disabled,.hhs-cell.is-full.is-live{cursor:not-allowed}.hhs.is-compact .hhs-cell{border-radius:6px;min-width:0;min-height:32px;padding:6px 4px}.hhs.is-compact .hhs-cell b{font-size:10px}.hhs.is-compact .hhs-col{gap:2px}.hhs.is-compact .hhs-cap em{display:none}.hhs-hint{color:var(--text-muted);margin:8px 0 0;font-size:12px;font-weight:500}.hhs-hint.is-bad,.hhs-hint-bill{color:var(--danger);font-weight:700}.page-container.sched-page{flex-direction:column;max-width:none;min-height:calc(100dvh - 120px);padding:0;display:flex;position:relative}.page-container.sched-page>.content-title-row,.calapp-shell>.content-title-row{margin-bottom:12px;padding-bottom:10px}.sched-private-form{z-index:30;background:var(--bg-card);position:absolute;inset:0}.sched-top{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:8px;display:flex}.sched-tabs{border-bottom:1px solid var(--border);gap:2px;display:flex}.sched-tabs button{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 10px 8px;font-size:13px;font-weight:600}.sched-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.sched-toolbar{flex-wrap:wrap;align-items:center;gap:4px;margin-left:auto;display:flex}.sched-hours{color:var(--text-secondary);align-items:center;gap:6px;margin-left:8px;font-size:12px;font-weight:600;display:inline-flex}.sched-hours select{width:auto;min-width:0;padding:4px 6px;font-size:12px}.sched-toolbar .range{text-align:center;min-width:108px;padding:0 4px;font-size:13px;font-weight:600}.sched-date-wrap{position:relative}.sched-date-btn{height:32px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:8px}.sched-date-btn:hover{background:var(--bg-elevated)}.sched-date-btn.is-static{cursor:default;pointer-events:none}.sched-date-btn.is-static:hover{background:0 0}.sched-date-pop{z-index:30;border:1px solid var(--border);background:#fff;border-radius:14px;width:292px;padding:10px 10px 12px;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 12px 32px #14182029}.sched-date-pop-nav{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.sched-date-pop-nav strong{font-size:13px}.sched-date-pop .sched-month{flex:none;min-height:0}.sched-date-pop .sched-month-cell{gap:2px;min-height:36px;padding:2px 0 4px}.sched-month-pick{width:248px}.sched-month-pick-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.sched-month-pick-cell{cursor:pointer;height:40px;color:var(--text-primary);background:0 0;border:none;border-radius:10px;font-size:13px;font-weight:600}.sched-month-pick-cell:hover{background:var(--bg-elevated)}.sched-month-pick-cell.is-today{color:var(--accent)}.sched-month-pick-cell.is-selected{background:var(--accent);color:#fff}.sched-month-pick-cell.is-selected.is-today{color:#fff}.sched-nav-btn{border:1px solid var(--border);background:var(--bg-card);min-width:32px;height:32px;color:var(--text-primary);cursor:pointer;border-radius:8px;padding:0 10px;font-size:14px;font-weight:600;line-height:1}.sched-period{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;gap:1px;margin-left:6px;padding:2px;display:flex}.sched-filters .sched-period{margin-left:0}.sched-period button{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;height:26px;padding:4px 10px;font-size:12px;font-weight:600}.sched-period button.active{color:var(--text-primary);box-shadow:var(--shadow-sm);background:#fff}.sched-filters{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;margin-bottom:8px;display:flex}.sched-split{flex:1;align-items:stretch;gap:12px;min-height:0;display:flex}.sched-split-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.sched-rail{display:none}.sched-rail-search{padding:12px 12px 8px;position:relative}.sched-rail-search-icon{color:var(--text-muted);pointer-events:none;position:absolute;top:24px;left:24px}.sched-rail-search input{width:100%;height:40px;color:var(--text-primary);background:#f3f4f6;border:none;border-radius:999px;padding:0 14px 0 36px;font-size:14px}.sched-rail-search input::placeholder{color:#b0b6bf}.sched-rail-list{flex:1;min-height:0;padding:4px 8px 12px;overflow-y:auto}.sched-rail-item{text-align:left;cursor:pointer;width:100%;color:var(--text-primary);background:0 0;border:none;border-radius:14px;align-items:center;gap:12px;padding:10px 12px;display:flex;position:relative}.sched-rail-item.has-color{padding-left:16px}.sched-rail-item.has-color:before{content:"";background:var(--assigned-color);border-radius:4px;width:4px;position:absolute;top:12px;bottom:12px;left:6px}.sched-rail-item:hover{background:#f4f6fb}.sched-rail-item.is-on{background:#e4ecfb}.sched-rail-item .teacher-face{border-radius:50%;flex-shrink:0}.sched-rail-item .teacher-face-fallback{font-size:15px}.sched-rail-fallback{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:inline-flex}.sched-rail-copy{flex-direction:column;gap:1px;min-width:0;display:flex}.sched-rail-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;line-height:1.3;overflow:hidden}.sched-rail-copy em{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-style:normal;overflow:hidden}.sched-rail-dot{vertical-align:middle;background:#ef4444;border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.sched-off-toggle{color:var(--text-secondary);border-top:1px solid var(--border);align-items:center;gap:8px;padding:10px 16px 14px;font-size:13px;display:flex}.sched-month-jump input[type=month]{border:1px solid var(--border);height:32px;color:var(--text-secondary);border-radius:8px;padding:0 8px;font-size:13px}.sched-filters .sched-off-toggle{border:none;height:32px;padding:0 4px}.sched-filter-search{border:1px solid var(--border);background:var(--bg-card);min-width:140px;max-width:240px;height:32px;color:var(--text-primary);border-radius:8px;flex:1;padding:0 10px;font-size:13px}.sched-filter-select{border:1px solid var(--border);background:var(--bg-card);min-width:160px;max-width:min(280px,100%);height:32px;color:var(--text-primary);border-radius:8px;padding:0 10px;font-size:13px;font-weight:600}.sched-cal-picks{flex-wrap:wrap;flex:480px;align-items:center;gap:10px;min-width:0;display:flex}.sched-cal-pick{flex:160px;min-width:148px;max-width:280px;position:relative}.sched-cal-pick-btn{color:#2a2a2a;text-align:left;cursor:pointer;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23149a90' d='M1.1 1.1h9.8L6 7.1z'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;background-size:12px 8px;border:1px solid #e4e7ec;border-radius:8px;align-items:center;width:100%;height:42px;padding:0 36px 0 14px;font-size:15px;font-weight:500;display:flex;box-shadow:0 1px 2px #1418200a}.sched-cal-pick-btn span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sched-cal-pick.is-open .sched-cal-pick-btn,.sched-cal-pick-btn:focus{border-color:#149a90;outline:none;box-shadow:0 0 0 3px #149a9029}.sched-cal-pick.is-set .sched-cal-pick-btn{font-weight:600}.sched-cal-pick-menu{z-index:40;background:#fff;border:1px solid #e4e7ec;border-radius:8px;width:max(100%,220px);padding:8px;position:absolute;top:46px;left:0;box-shadow:0 10px 28px #14182024}.sched-cal-pick-menu input{width:100%;height:36px;color:var(--text-primary);background:#fff;border:1px solid #d7dbe2;border-radius:6px;margin-bottom:6px;padding:0 10px;font-size:14px;font-weight:500}.sched-cal-pick-menu input:focus{background:#fff;border-color:#149a90;outline:none;box-shadow:0 0 0 3px #149a9029}.sched-cal-pick-list{flex-direction:column;max-height:240px;display:flex;overflow-y:auto}.sched-cal-pick-list button{text-align:left;color:#243038;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:8px 10px;font-size:14px;font-weight:600}.sched-cal-pick-list button:hover,.sched-cal-pick-list button.is-on{color:#fff;background:#149a90}.sched-cal-pick-list .sched-filter-empty{padding:8px 10px}.sched-calapp{flex-direction:column;flex:1;min-height:0;display:flex}.sched-calapp .calapp-shell{flex:1;gap:0;min-height:0}.sched-filter-empty{color:var(--text-muted);padding:4px;font-size:13px}.sched-legend-dot,.sched-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.sched-picker{flex-shrink:0;position:relative}.sched-picker-btn{border:1px solid var(--border);background:var(--bg-card);cursor:pointer;height:32px;color:var(--text-primary);border-radius:8px;padding:0 12px;font-size:12px;font-weight:600}.sched-picker-btn.open{border-color:var(--accent)}.sched-filters.is-cal .sched-picker-btn{height:42px}.sched-filters.is-cal .sched-picker-menu{top:46px}.sched-picker-menu{z-index:30;border:1px solid var(--border);width:min(280px,80vw);box-shadow:var(--shadow-md);background:#fff;border-radius:12px;padding:8px;position:absolute;top:36px;left:0}.sched-picker-menu input{border:1px solid var(--border);border-radius:8px;width:100%;height:32px;margin-bottom:6px;padding:0 10px;font-size:13px}.sched-picker-list{max-height:240px;overflow-y:auto}.sched-picker-item{cursor:pointer;align-items:center;gap:8px;padding:6px 4px;font-size:13px;display:flex}.sched-picker-item em{color:var(--text-muted);margin-left:auto;font-size:11px;font-style:normal}.sched-cal{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sched-cal.is-rich .sched-month-pane{flex:62%;min-height:360px}.sched-cal.is-rich .sched-day-agenda{flex:0 0 38%;max-height:42%}.sched-month-pane{flex-direction:column;flex:0 0 45%;min-height:220px;display:flex;overflow:hidden}.sched-cal.is-collapsed .sched-month-pane{flex:none;min-height:0}.sched-month{flex:1;grid-template-columns:repeat(7,minmax(0,1fr));min-height:0;display:grid;position:relative}.cal-month-mark{font-family:var(--font-display);letter-spacing:.06em;color:#292d34;opacity:.045;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:2;border:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:clamp(72px,18vw,148px);font-style:normal;font-weight:800;line-height:1;display:flex;position:absolute;inset:18% 4% 10%}.sched-month:not(.is-rich)>.cal-month-mark{opacity:.05;font-size:clamp(44px,24%,80px);inset:22% 6% 12%}.sched-date-pop .cal-month-mark{opacity:.045;font-size:52px}.sched-month-head,.sched-month-cell{z-index:1;position:relative}.sched-month-head{text-align:center;color:var(--text-muted);padding:6px 0;font-size:11px;font-weight:600}.sched-month-cell{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:flex-start;align-items:center;gap:4px;min-height:0;padding:4px 0 6px;display:flex}.sched-month-cell.out{opacity:.35}.sched-month-num{width:26px;height:26px;color:var(--text-primary);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;line-height:1;display:inline-flex}.sched-month-num.today{background:var(--accent);color:#fff}.sched-month-cell.is-selected .sched-month-num,.sched-month-cell.is-selected .sched-month-num.today{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.sched-month-dots{align-items:center;gap:3px;min-height:8px;display:flex}.sched-month-dots i{border-radius:50%;width:6px;height:6px;display:block}.sched-month-dots em{color:var(--text-muted);font-size:9px;font-style:normal}.sched-month.is-rich{border-top:1px solid var(--border)}.sched-month.is-rich .sched-month-head{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:8px 0}.sched-month-cell.is-events{border-right:1px solid var(--border);border-bottom:1px solid var(--border);text-align:left;justify-content:flex-start;align-items:stretch;min-height:88px;padding:6px}.sched-month-cell.is-events .sched-month-num{align-self:flex-start}.sched-month-cell.is-events.is-selected{background:#7b68ee0f}.sched-month-cell.is-events.is-today{background:#7b68ee0a}.sched-month-chips{flex-direction:column;gap:3px;min-width:0;margin-top:2px;display:flex}.sched-month-chip{text-overflow:ellipsis;white-space:nowrap;text-align:left;width:100%;color:var(--text-primary);cursor:pointer;border:none;border-radius:6px;padding:3px 6px 3px 8px;font-size:11px;font-weight:600;display:block;position:relative;overflow:hidden}.sched-month-chip.is-open{box-shadow:0 0 0 2px var(--assigned-color,var(--accent))}.sched-month-chip:before{content:"";background:var(--bar,var(--accent));border-radius:3px;width:3px;position:absolute;top:2px;bottom:2px;left:0}.sched-month-chip b{font-variant-numeric:tabular-nums;color:var(--text-secondary);margin-right:4px;font-weight:600}.sched-month-chip.is-past{opacity:.55;filter:grayscale(.4)}.sched-month-more{color:var(--text-muted);padding-left:4px;font-size:10px;font-style:normal;font-weight:600}.sched-cal.is-rich .sched-divider{cursor:default}.sched-mini-strip{background:#fff;grid-template-columns:repeat(7,minmax(0,1fr));padding:6px 8px;display:grid}.sched-mini-day{cursor:pointer;min-height:44px;color:var(--text-muted);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:10px;display:flex}.sched-mini-day.is-on{background:#7b68ee1f;border-radius:10px}.sched-mini-day strong{color:var(--text-primary);font-size:14px}.sched-mini-day.is-today strong{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;line-height:1;display:inline-flex}.sched-divider{border:none;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg-elevated);cursor:pointer;width:100%;color:var(--text-primary);justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.sched-day-agenda,.sched-activity{flex:1;min-height:0;padding:8px 10px 16px;overflow-y:auto}.sched-activity{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;flex:1;min-height:0;padding:8px 12px 16px;overflow-y:auto}.sched-ev{text-align:left;border:1px solid var(--border);cursor:pointer;width:100%;box-shadow:var(--shadow-sm);background:#fff;border-radius:12px;grid-template-columns:78px 1fr;align-items:start;gap:8px;margin-bottom:8px;padding:10px 12px 10px 14px;display:grid;position:relative}.sched-ev.is-open{border-color:var(--assigned-color,var(--accent));box-shadow:0 0 0 2px var(--assigned-color,var(--accent));z-index:2}.sched-ev.is-past{opacity:.62;filter:grayscale(.4);background:#f7f8fa}.sched-ev:before{content:"";background:var(--assigned-color,var(--accent));border-radius:4px;width:4px;position:absolute;top:10px;bottom:10px;left:0}.sched-ev.is-past:before{background:#b0b4ba}.sched-ev-when{font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-start;gap:2px;padding-top:1px;font-size:12px;line-height:1.25;display:flex}.sched-ev-when b{color:var(--text-primary);font-weight:700}.sched-ev-when em{color:var(--text-muted);font-style:normal;font-weight:600}.sched-ev-when.is-all{color:var(--text-secondary);align-self:center;padding-top:0;font-weight:700}.sched-ev-main{min-width:0}.sched-ev-top{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.sched-ev-top strong{font-variant-numeric:tabular-nums;font-size:13px}.sched-ev-top span{color:var(--text-primary);font-size:13px;font-weight:600}.sched-ev-top span.mt-joined{color:#fff;font-size:11px;font-weight:400}.sched-ev-venue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-secondary);flex:0 auto;align-self:center;font-size:12px;font-weight:500;line-height:1.3;overflow:hidden}.sched-ev-kind{color:var(--text-muted);background:var(--bg-elevated);border-radius:999px;padding:1px 8px;font-size:11px;font-style:normal;font-weight:600}.sched-ev-bot{color:var(--text-secondary);align-items:flex-start;gap:10px;min-width:0;margin-top:6px;font-size:12px;display:flex}.sched-ev-stats{flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;display:flex}.sched-ev-stats .calapp-enrolls{width:100%;margin-top:2px}.sched-ev-stats .calapp-enroll{width:100%}.sched-unassigned{color:#d97706;background:#fff7ed;border-radius:999px;padding:2px 8px;font-weight:700}.sched-ev-today{color:#fff;background:var(--accent);border-radius:999px;padding:1px 8px;font-size:11px;font-style:normal;font-weight:700}.sched-minicap{font-variant-numeric:tabular-nums;color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.sched-minicap-bar{background:#e8eaee;border-radius:99px;width:48px;height:6px;overflow:hidden}.sched-minicap-bar i{background:var(--accent);border-radius:99px;height:100%;display:block}.sched-minicap-track{background:#e8eaee;border-radius:99px;width:48px;height:2px}.sched-minicap.is-hot{color:#c2410c}.sched-minicap.is-hot .sched-minicap-bar i{background:#e67e22}.sched-minicap.is-full{color:var(--danger)}.sched-minicap.is-full .sched-minicap-bar i{background:var(--danger)}.sched-ev-result{font-variant-numeric:tabular-nums;color:var(--text-muted)}.sched-ev-result.is-warn{color:#c2410c;font-weight:700}.sched-ev-teacher{align-items:center;gap:6px;min-width:0;max-width:100%;font-weight:600;display:inline-flex}.sched-ev-cap{font-variant-numeric:tabular-nums;color:var(--text-muted)}.sched-ev-go{color:var(--accent);white-space:nowrap;flex-shrink:0;align-self:center;margin-left:auto;font-size:12px;font-weight:700}.sched-ev-go[role=link]{cursor:pointer;text-underline-offset:2px;text-decoration:underline}.sched-empty{text-align:center;color:var(--text-muted);padding:36px 16px}.sched-empty-add{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-left:8px;padding:6px 12px;font-weight:600;display:inline-block}.sched-ended{margin-top:4px;padding-bottom:8px}.sched-ended-toggle{border:1px dashed var(--border);background:var(--bg-elevated);width:100%;color:var(--text-secondary);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;font-weight:600;display:flex}.sched-ended-list{margin-top:8px}.sched-ended-range{align-items:center;gap:8px;padding:8px 2px 4px;display:flex}.sched-ended-range input{font-size:13px}.sched-ended-more{border:1px dashed var(--border);width:100%;color:var(--accent);cursor:pointer;background:#fff;border-radius:12px;margin-top:8px;padding:10px;font-weight:600}.sched-agenda-sticky{z-index:2;background:var(--bg-card);color:var(--text-secondary);align-items:center;gap:6px;padding:8px 2px;font-size:13px;display:flex;position:sticky;top:0}.sched-team-list{flex:1;min-height:0;padding:8px 12px 16px;overflow:auto}.sched-team-group{margin-bottom:8px}.sched-team-head{z-index:2;background:var(--bg-card);color:var(--text-primary);align-items:center;gap:8px;margin:0 0 8px;padding:8px 2px;font-size:14px;font-weight:700;display:flex;position:sticky;top:0}.sched-team-head em{color:var(--text-muted);margin-left:auto;font-size:12px;font-style:normal;font-weight:600}.join-agenda{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:8px 12px 16px}.sched-body{flex:1;align-items:stretch;min-height:0;display:flex}.sched-main{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.sched-res-wrap{-webkit-user-select:none;user-select:none;background:#eef0f3;flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.sched-res-wrap.is-panning,.sched-res-wrap.is-panning .sched-res-event,.sched-res-wrap.is-panning .sched-res-head .sched-res-track,.sched-res-wrap.is-panning .sched-res-row.is-fill{cursor:grabbing}.sched-res-head{z-index:8;flex:none;position:sticky;top:0}.sched-res-head .sched-res-track,.sched-res-row.is-fill .sched-res-track{cursor:grab;touch-action:none}.sched-res-head,.sched-res-row{grid-template-columns:var(--name-w,148px) minmax(calc(var(--hour-cols,14) * 80px), 1fr);min-width:calc(var(--name-w,148px) + var(--hour-cols,14) * 80px);display:grid}.sched-res-row:not(.is-fill){flex:none}.sched-res-row.is-fill{flex:auto;align-items:stretch;min-height:64px}.sched-res-name{z-index:6;border-bottom:1px solid var(--border);border-right:1px solid var(--border);background:#fff;align-items:center;gap:8px;min-width:0;padding:8px 10px;font-size:13px;font-weight:600;display:flex;position:sticky;left:0;box-shadow:6px 0 10px -8px #14182047}.sched-res-head .sched-res-name{z-index:10;background:#f7f8fa}.sched-res-name span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sched-res-track{z-index:1;grid-template-columns:repeat(var(--hour-cols,14), minmax(80px, 1fr));min-height:52px;display:grid;position:relative;overflow:hidden}.sched-res-row.is-fill .sched-res-name{background:#f7f8fa;border-bottom:none;min-height:100%}.sched-res-row.is-fill .sched-res-track{align-items:stretch;height:100%;min-height:100%}.sched-res-cell.is-fill{cursor:grab;min-height:100%}.sched-res-hour{color:var(--text-muted);text-align:center;border-right:1px solid #e2e4e8;border-bottom:1px solid var(--border);background:#f7f8fa;padding:8px 2px;font-size:11px}.sched-res-cell{cursor:pointer;background:0 0;border:1px solid #e2e4e8;border-top:none;border-left:none;padding:0}.sched-res-cell:hover{background:#7b68ee14}.sched-res-event{border:1px solid var(--border);height:40px;box-shadow:var(--shadow-sm);text-align:left;cursor:grab;z-index:1;touch-action:none;background:#fff;border-radius:8px;padding:4px 8px 4px 12px;position:absolute;top:6px;overflow:hidden}.sched-res-event.is-open{box-shadow:0 0 0 2px var(--card-accent,var(--accent));z-index:3}.sched-res-event.is-dragging{cursor:grabbing;opacity:.92;z-index:3;pointer-events:none;box-shadow:0 8px 20px #1418202e}.sched-res-event.is-hot{background:#fff6e8;border-color:#f0c48a}.sched-res-event.is-full{background:#fdecea;border-color:#f0b0aa}.sched-res-event.is-past{opacity:.55;filter:grayscale(.45);cursor:pointer}.sched-res-event:before{content:"";background:var(--card-accent,var(--accent));width:4px;position:absolute;top:0;bottom:0;left:0}.sched-res-event strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.2;display:block;overflow:hidden}.sched-res-event span{color:var(--text-muted);font-size:11px}.sched-res-now{z-index:2;pointer-events:none;pointer-events:none;background:#ff5c33;width:2px;position:absolute;top:0;bottom:0}.sched-heat{-webkit-user-select:none;user-select:none;background:#eef0f3;flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.sched-heat.is-panning,.sched-heat.is-panning .sched-heat-cell,.sched-heat.is-panning .sched-heat-head,.sched-heat.is-panning .sched-heat-row.is-fill{cursor:grabbing}.sched-heat-row{grid-template-columns:var(--name-w,148px) repeat(7, minmax(160px, 1fr));min-width:calc(var(--name-w,148px) + 7 * 160px);display:grid}.sched-heat-row.is-head{z-index:3;cursor:grab;touch-action:none;background:#fff;flex:none;position:sticky;top:0}.sched-heat-row:not(.is-head):not(.is-fill){flex:none}.sched-heat-row.is-fill{cursor:grab;touch-action:none;flex:auto;align-items:stretch;min-height:64px}.sched-heat-row.is-head .sched-res-name{z-index:5}.sched-heat-row:not(.is-head) .sched-res-name{z-index:4}.sched-heat-row.is-fill .sched-res-name{background:#f7f8fa;border-bottom:none;min-height:100%}.sched-heat-head{text-align:center;border-bottom:1px solid var(--border);border-right:1px solid var(--border);background:#f7f8fa;padding:10px 4px;font-size:12px;font-weight:600}.sched-heat-head.is-today{color:var(--accent)}.sched-heat-cell{border:none;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:52px;color:var(--text-muted);cursor:pointer;background:#f7f8fa;font-size:12px;font-weight:600}.sched-heat-cell.is-fill{cursor:grab;background:0 0;min-height:100%}.sched-heat-cell.has{color:var(--text-primary);background:#7b68ee1f}.sched-heat-cell.is-heavy{background:#7b68ee47}.sched-heat-cell.is-past{opacity:.5;filter:grayscale(.35)}.sched-sheet-mask{z-index:60;background:#181c2466;position:fixed;inset:0}.sched-sheet{background:#fff;border-radius:16px 16px 0 0;max-height:80vh;padding:10px 16px 20px;position:absolute;bottom:0;left:0;right:0;overflow:auto}.sched-sheet-handle{background:#d7dbe2;border-radius:4px;width:36px;height:4px;margin:4px auto 12px}.sched-sheet-kind{border-radius:4px;width:36px;height:4px;margin-bottom:10px}.sched-sheet h4{margin-bottom:4px;font-size:16px}.sched-sheet p{color:var(--text-secondary);margin-top:6px;font-size:13px}.sched-field{color:var(--text-secondary);flex-direction:column;gap:4px;margin-bottom:10px;font-size:12px;font-weight:600;display:flex}.sched-field select,.sched-field input{font-weight:500}.sched-field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sched-sheet-people{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.sched-sheet-students{margin-top:8px;list-style:none}.sched-sheet-students li{border-bottom:1px solid var(--border);justify-content:space-between;padding:8px 0;font-size:13px;display:flex}.sched-sheet-students em{color:var(--text-muted);font-style:normal}.sched-pop-actions{gap:8px;margin-top:16px;display:flex}.sched-pop-actions button{cursor:pointer;border:none;border-radius:8px;flex:1;min-height:40px;padding:10px;font-size:13px;font-weight:600}.sched-sheet-primary{background:var(--accent);color:#fff}.sched-sheet-ghost{background:var(--bg-elevated);color:var(--text-primary)}.sched-drawer-h{color:var(--text-secondary);margin:16px 0 6px;font-size:13px}.sched-drawer-edit{margin-top:16px}@media (width>=769px){.sched-filters{display:none}.sched-filters.is-cal{display:flex}.sched-rail{border:1px solid var(--border);background:#fff;border-radius:16px;flex-direction:column;flex-shrink:0;width:280px;display:flex;overflow:hidden}.sched-sheet{border-radius:16px;width:400px;bottom:24px;left:50%;right:auto;transform:translate(-50%)}}@media (width<=768px){.page-container.sched-page{min-height:calc(100dvh - 72px)}.sched-toolbar{width:100%;margin-left:0}.sched-toolbar .range{flex:1;min-width:0}.sched-filter-select{width:100%;max-width:none}.sched-cal-picks{flex-basis:100%}.sched-cal-pick{flex-basis:calc(50% - 5px);max-width:none}.sched-filter-search{max-width:none}.sched-month-pane{flex-basis:38%;min-height:180px}}.mt-hint{color:var(--text-muted);margin-bottom:14px;font-size:12px}.mt-board input:not([type=checkbox]):not([type=radio]),.mt-board select,.mt-board textarea{background:#fff;border:1px solid #d6d9e0;border-radius:8px;transition:border-color .15s,box-shadow .15s}.mt-board input:not([type=checkbox]):not([type=radio]):hover,.mt-board select:hover{border-color:#b9bec7}.mt-board input:not([type=checkbox]):not([type=radio]):focus,.mt-board select:focus,.mt-board textarea:focus{background:#fff;border-color:#7b68ee;outline:none;box-shadow:0 0 0 3px #7b68ee26}.mt-board input:disabled,.mt-board select:disabled,.mt-board textarea:disabled{color:#9ca3af;cursor:not-allowed;background:#f3f4f6;border-color:#e5e7eb}.mt-grid{grid-template-columns:1fr 1fr;align-items:end;gap:12px 16px;margin-bottom:14px;display:grid}.mt-field{flex-direction:column;gap:4px;min-width:0;display:flex}.mt-field span{color:var(--text-secondary);font-size:12px;font-weight:600}.mt-field input,.mt-field select{box-sizing:border-box;width:100%;padding:6px 10px}.mt-repeat-block{margin:2px 0 4px}.mt-repeat-options{flex-wrap:wrap;gap:6px 16px;margin:2px 0 8px;display:flex}.mt-repeat-toggle{color:var(--text-primary);cursor:pointer;align-items:center;gap:8px;width:fit-content;font-size:13px;font-weight:600;display:flex}.mt-repeat-panel{opacity:0;max-height:0;margin:0;transition:max-height .22s,opacity .18s,margin .22s;overflow:hidden}.mt-repeat-panel.is-open{opacity:1;background:#fafbfc;border:1px solid #eceef1;border-radius:12px;max-height:none;margin:0 0 14px;padding:12px}.mt-preview{color:var(--text-secondary);margin:10px 0 0;font-size:13px}.mt-preview.is-warn{color:var(--danger);font-weight:600}.mt-weekdays{flex-wrap:wrap;gap:6px;margin:6px 0 0;display:flex}.mt-weekdays button{border:1px solid var(--border);background:var(--bg-card);cursor:pointer;min-width:36px;height:32px;color:var(--text-secondary);border-radius:8px;padding:0 10px;font-size:13px;font-weight:600}.mt-weekdays button.is-on{border-color:var(--accent);color:#fff;background:var(--accent);font-weight:700}.mt-slot-form{background:#fafbfc;border:1px solid #eceef1;border-radius:12px;margin-bottom:10px;padding:12px}.mt-clock{margin-bottom:14px}.mt-clock-row{grid-template-columns:minmax(0,1.15fr) auto minmax(0,1.15fr) minmax(92px,.7fr);align-items:end;gap:10px 12px;display:grid}.mt-clock-col{flex-direction:column;gap:6px;min-width:0;display:flex}.mt-clock-label{color:var(--text-secondary);font-size:12px;font-weight:700}.mt-clock .hh-time{box-sizing:border-box;background:#fff;border:1px solid #d6d9e0;border-radius:10px;justify-content:flex-start;align-items:center;gap:0;width:100%;height:46px;padding:0 8px 0 10px;display:flex;box-shadow:0 1px 2px #1018280d}.mt-clock .hh-time select{box-shadow:none;background:0 0;border:none;min-width:0;height:100%;padding:0 4px;font-size:15px;font-weight:700}.mt-clock .hh-time select:first-of-type{flex:auto;min-width:5.6em}.mt-clock .hh-time select:last-of-type{flex:0 0 3.4em;width:3.4em;min-width:3.4em}.mt-clock-arrow{color:var(--accent);-webkit-user-select:none;user-select:none;padding-bottom:12px;font-size:20px;font-weight:800;line-height:1}.mt-time-pill{background:var(--accent-soft);min-height:46px;color:var(--accent);white-space:nowrap;box-sizing:border-box;border-radius:999px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;font-weight:800;display:inline-flex}.mt-time-pill.is-empty{color:var(--text-muted);background:#eef0f3;font-weight:600}.mt-clock-col.is-flash .hh-time{animation:.75s mt-clock-flash}.mt-time-pill.is-flash{animation:.75s mt-pill-flash}@keyframes mt-clock-flash{0%{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);background:#f4f0ff}to{background:#fff;border-color:#d6d9e0;box-shadow:0 1px 2px #1018280d}}@keyframes mt-pill-flash{0%{box-shadow:0 0 0 4px var(--accent-soft);transform:scale(1.04)}to{box-shadow:none;transform:scale(1)}}.mh-sync{margin:18px 0 20px}.mh-sync-title{color:var(--text-secondary);margin:0 0 6px;font-size:13px;display:block}.mh-sync>.mh-help{margin:0 0 10px;line-height:1.5}.mt-sync-picks{background:#fff;border:1px solid #e4e7ec;border-radius:12px;margin:4px 0 12px;padding:4px 12px}.mh-sync .mt-sync-picks{margin:0}.mt-sync-pick{cursor:pointer;color:var(--text-primary);border-bottom:1px solid #f0f2f5;align-items:center;gap:10px;padding:10px 2px;font-size:14px;font-weight:600;display:flex}.mt-sync-pick:last-child{border-bottom:none}.mt-sync-pick.is-disabled{opacity:.45;cursor:not-allowed}.mt-sync-pick input{width:16px;height:16px;accent-color:var(--accent)}.calform .mt-sync-picks{margin:8px 0 0}.calform .mt-sync-pick input{width:16px;height:16px;box-shadow:none;accent-color:var(--accent);background:0 0;border:0;border-radius:0;padding:0}.mt-warn{color:var(--danger);width:100%;margin:-2px 0 8px;font-size:12px}.mt-dur{margin-top:12px}.mt-dur-label{color:var(--text-secondary);margin:0 0 8px;font-size:12px;font-weight:700}.mt-dur-btns{gap:8px;display:flex}.mt-dur button{border:1px solid var(--border);cursor:pointer;height:34px;color:var(--text-secondary);white-space:nowrap;background:#fff;border-radius:999px;padding:0 14px;font-size:13px;font-weight:600}.mt-dur button:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.mt-dur button.is-on{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);font-weight:700}.mt-add-slot{border:1px solid var(--border);background:var(--bg-card);cursor:pointer;height:32px;color:var(--text-primary);border-radius:8px;margin-top:4px;padding:0 12px;font-size:13px;font-weight:600}.mt-add-slot:hover{border-color:var(--accent);color:var(--accent)}.mt-form-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;display:flex}.mt-ghost{border:1px solid var(--border);cursor:pointer;height:32px;color:var(--text-secondary);background:0 0;border-radius:8px;padding:0 12px;font-size:13px;font-weight:600}.mt-board .btn-primary-sm:disabled{color:#9ca3af;opacity:1;cursor:not-allowed;box-shadow:none;background:#e8eaed}.mt-board{min-width:0}.mt-add-bar{justify-content:flex-end;margin:0 0 14px;display:flex}.mt-table-bar{justify-content:space-between;align-items:center;gap:8px;margin:0 0 12px;display:flex}.mt-table-bar .filter-box-toggle{margin-left:auto}.mt-board-filters{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.mt-status-line{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.mt-status-label{color:var(--text-secondary);font-size:13px}.mt-status-picks{border:1px solid var(--border);background:#fff;border-radius:10px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.mt-status-picks button{font:inherit;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:5px 10px;font-size:13px}.mt-status-picks button.is-on{background:var(--accent-soft);color:var(--accent);font-weight:600}.mt-clear-filters{margin-left:auto}.mt-clear-filters:disabled{opacity:.45;cursor:default}.mt-time-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mt-filter-line{align-items:center;gap:8px;margin:0 0 12px;display:flex}.mt-filter-line .filter-box-panel{flex:1;min-width:0;margin:0}.filter-box-arrow{background:var(--bg-elevated);width:36px;height:36px;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;flex:none;justify-content:center;align-items:center;margin-left:auto;padding:0;display:inline-flex}.filter-box-arrow:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.filter-box-arrow.is-on{background:var(--accent-soft);color:var(--accent);border-color:var(--border-accent)}.filter-box-arrow:disabled{cursor:default}.mt-time-tools.filter-box-panel{margin:-4px 0 12px}.mt-time-tools select{width:auto;min-width:140px;padding:7px 10px}.mt-filter-wrap{position:relative}.mt-filter-btn{width:auto;min-width:140px;max-width:280px;font:inherit;text-align:left;cursor:pointer;color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;background:#fff;border:1px solid #d6d9e0;border-radius:8px;padding:7px 10px;font-size:13px;overflow:hidden}.mt-filter-btn:hover{border-color:#b9bec7}.mt-filter-btn.is-on,.mt-filter-btn.is-open{border-color:var(--accent);box-shadow:0 0 0 3px #7b68ee1f}.mt-filter-pop{z-index:40;border:1px solid var(--border);width:280px;box-shadow:var(--shadow-md);background:#fff;border-radius:12px;padding:12px;position:absolute;top:calc(100% + 6px);left:0}.mt-filter-pop.is-status{width:220px}.mt-date-hint{color:var(--text-muted);margin:0 0 8px;font-size:12px}.mt-date-foot{justify-content:flex-end;align-items:center;gap:8px;display:flex}.mt-status-opt{cursor:pointer;align-items:center;gap:8px;padding:6px 2px;font-size:13px;display:flex}.mt-cal-grid button.is-in{background:var(--accent-soft,#7b68ee24);color:var(--accent);border-color:#0000}.mt-cal-grid button.is-today{font-weight:800}.mt-cal-grid button.has-slot{position:relative}.mt-cal-grid button.has-slot:after{content:"";opacity:.55;background:currentColor;border-radius:50%;width:4px;height:4px;margin-left:-2px;position:absolute;bottom:4px;left:50%}.mt-today-tag{color:var(--accent);background:var(--accent-soft,#7b68ee24);border-radius:99px;margin-left:6px;padding:1px 6px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.mt-sync-pop{vertical-align:middle;margin-left:6px;display:inline-flex;position:relative}.mt-sync-tag{color:#0f766e;cursor:default;background:#0d948824;border-radius:99px;outline:none;padding:1px 6px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.mt-sync-tip{z-index:80;opacity:1;border:1px solid var(--border);width:max-content;max-width:220px;color:var(--text-primary);white-space:normal;pointer-events:none;background:#fff;border-radius:10px;flex-direction:column;gap:2px;padding:8px 10px;font-size:13px;font-weight:600;line-height:1.4;display:flex;position:fixed;box-shadow:0 8px 24px #10182829}.mt-sync-tip-k{color:var(--text-muted);font-size:11px;font-weight:700}.mt-slot-tr.is-off td{opacity:.62}.mt-col-date{color:var(--accent-gold)}.mt-date-go{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex-wrap:wrap;align-items:center;padding:0;display:inline-flex}.mt-date-go:hover{text-decoration:underline}.mt-sort{font:inherit;color:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:6px;padding:0;display:inline-flex}.mt-sort i{border-left:4px solid #0000;border-right:4px solid #0000;border-bottom:5px solid var(--text-secondary);width:0;height:0}.mt-sort i.is-desc{border-bottom:none;border-top:5px solid var(--text-secondary)}.mt-col-act{text-align:center}.mt-act-select{max-width:132px;font:inherit;color:var(--accent);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:#fff;margin:0 auto;padding:4px 8px;font-size:13px;display:inline-block}.mt-col-enroll .mt-wait,.mt-col-enroll .mt-full{margin-left:8px}.mt-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-width:0;margin:4px 0 12px;display:flex}.mt-batch{border:1px solid var(--border);background:#fff;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.mt-batch.is-float{z-index:140;color:#fff;background:#1f2430;border:none;min-width:min(560px,100vw - 24px);position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #14182047}.mt-batch.is-float .mt-ghost{color:#fff;background:0 0;border-color:#ffffff47}.mt-batch.is-float .mt-ghost.is-danger{color:#ff8a80;border-color:#ff8a8066}.mt-batch.is-float .btn-link{color:#ffffffb3}.mt-full{color:#c0392b;white-space:nowrap;background:#e74c3c1f;border-radius:99px;padding:2px 8px;font-size:11px;font-weight:700}.mt-full.is-partial{color:#b45309;background:#f59e0b29}.mt-slot-st{border-radius:99px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.mt-slot-loc{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:12px;font-weight:600;overflow:hidden}.mt-slot-st.is-open{color:#15803d;background:#22c55e24}.mt-slot-st.is-closed,.mt-slot-st.is-stopped{color:#b45309;background:#f59e0b29}.mt-slot-st.is-ended{color:#334155;background:#47556924}.mt-slot-st.is-deleted,.mt-slot-st.is-cancelled{color:#c0392b;background:#e74c3c1f}.mt-slot-enroll{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:99px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:700}.mt-slot-enroll:hover{border-color:var(--accent);color:var(--accent)}.mt-joined{color:#fff;background:#22c55e;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:fit-content;min-height:22px;padding:2px 8px;font-size:11px;font-style:normal;font-weight:400;display:inline-flex}.mt-toolbar-right{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.mt-view{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.mt-view button{cursor:pointer;background:#fff;border:none;padding:6px 10px;font-size:12px}.mt-view button.is-on{background:var(--accent);color:#fff}.mt-toggle{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;padding:6px 10px;font-size:12px}.mt-toggle.is-on{border-color:var(--accent);color:var(--accent);font-weight:700}.mt-teacher-filter{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.mt-teacher-filter select{border:1px solid var(--border);color:var(--text-primary);cursor:pointer;background:#fff;border-radius:8px;max-width:190px;padding:6px 10px;font-size:12px}.mt-teacher-filter select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.mt-filter-note{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--bg-elevated,#fafafa);color:var(--text-secondary);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0 0 10px;padding:8px 12px;font-size:12px;display:flex}.mt-filter-note b{color:var(--text-primary);margin:0 4px}.mt-cal-board{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin-bottom:16px;display:grid}.mt-cal-chip{border:1px solid var(--border);text-align:left;cursor:pointer;background:#fff;border-radius:10px;padding:10px 8px}.mt-cal-chip b{font-size:14px;display:block}.mt-cal-chip span{color:var(--text-muted);font-size:11px}.mt-cal-chip em{color:#c0392b;font-size:11px;font-style:normal;font-weight:700;display:block}.mt-cal-nav{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.mt-cal-nav span{color:var(--text-primary);font-size:14px;font-weight:700}.mt-cal-nav button{border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text-secondary);background:#fff;border-radius:8px;font-size:18px;line-height:1}.mt-cal-nav button:hover{border-color:var(--accent);color:var(--accent)}.mt-cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:10px;display:grid}.mt-cal-grid.is-head span{text-align:center;color:var(--text-muted);font-size:11px}.mt-cal-grid button{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;height:36px}.mt-cal-grid button:disabled{opacity:.28;cursor:default}.mt-cal-grid button.is-on{background:var(--accent);color:#fff;border-color:var(--accent)}.mt-picked-dates{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;font-size:12px;display:flex}.mt-picked-chip{background:var(--accent);color:#fff;border-radius:99px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.mt-picked-chip button{color:#fff;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}.mt-day-card{min-width:0;overflow:hidden}.mt-day-card:hover{transform:none}.mt-day-head{justify-content:flex-start;align-items:center;gap:8px;min-width:0;margin-bottom:12px;display:flex}.mt-day-head h4{color:var(--accent-gold);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:15px;overflow:hidden}.mt-day-head .sched-ev-today{background:var(--accent);flex-shrink:0}.mt-day-actions{align-items:center;gap:8px;display:flex}button.sched-ev.mt-slot-row.md-slot-btn{appearance:none;font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%}button.sched-ev.mt-slot-row.md-slot-btn:hover:not(:disabled){background:#f9fafb}button.sched-ev.mt-slot-row.md-slot-btn:disabled{cursor:default}.mt-slot-row{box-sizing:border-box;background:#fff;border:1px solid #e8eaed;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;width:100%;min-width:0;padding:10px 14px;transition:background .15s;display:flex;position:relative;overflow:hidden}.mt-slot-row:hover{background:#f9fafb}.mt-slot-row.is-ended,.mt-day-card.is-ended .mt-slot-row{background:#f3f4f6;border-color:#e5e7eb}.mt-slot-row.is-ended:hover{background:#f3f4f6}.mt-slot-row.sched-ev{align-items:center;justify-content:unset;cursor:pointer;box-shadow:var(--shadow-sm);border-radius:12px;flex-wrap:nowrap;grid-template-columns:max-content minmax(0,1fr) auto;grid-template-areas:"when main menu";gap:8px 10px;margin-bottom:0;padding:10px 12px 10px 14px;display:grid}.mt-slot-row.sched-ev.has-check{grid-template-columns:22px max-content minmax(0,1fr) auto;grid-template-areas:"check when main menu"}.mt-slot-row.sched-ev:hover{background:#f6f8fb}.mt-day-card.is-ended .mt-slot-row.sched-ev,.mt-slot-row.sched-ev.is-past{border-color:var(--border);background:#f7f8fa}.mt-day-card.is-ended .mt-slot-row.sched-ev:hover{background:#f7f8fa}.mt-slot-row.sched-ev .mt-slot-check{grid-area:check}.mt-slot-row.sched-ev .sched-ev-when{grid-area:when}.mt-slot-row.sched-ev .sched-ev-main{grid-area:main;min-width:0}.mt-slot-row.sched-ev .mt-slot-go{color:var(--text-muted);flex-shrink:0;grid-area:menu;align-self:center;padding:0 2px 2px;font-size:22px;line-height:1}.mt-slot-row.sched-ev .mt-saved,.mt-slot-row.sched-ev .mt-full,.mt-slot-row.sched-ev .mt-joined,.sched-ev-top span.mt-joined{flex-shrink:0;font-size:11px}.mt-slot-row.sched-ev .mt-joined,.sched-ev-top span.mt-joined{font-weight:400}.mt-slot-row.sched-ev .sched-ev-top{flex-wrap:nowrap;align-items:center;gap:6px;min-width:0}.mt-slot-row.sched-ev .sched-ev-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mt-slot-row.sched-ev .sched-ev-bot{flex-wrap:wrap;gap:6px 10px}.mt-slot-row.sched-ev .sched-ev-teacher{flex:72px;min-width:0;max-width:100%;overflow:hidden}.mt-slot-row.sched-ev .slot-teacher{width:100%}.mt-slot-row.sched-ev .mt-cap{flex:0 auto;min-width:0;margin-left:auto}.mt-slot-check{width:16px;height:16px;accent-color:var(--accent);align-self:center;margin:0}.mt-pager{color:var(--text-secondary);justify-content:center;align-items:center;gap:10px;margin:12px 0 4px;font-size:13px;font-weight:600;display:flex}.mt-pager button{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;height:32px;padding:0 12px;font-weight:600}.mt-pager button:disabled{opacity:.4;cursor:default}.mt-slot-main{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.mt-slot-time{min-width:96px;font-size:14px;font-weight:600}.mt-slot-group{flex-direction:column;gap:8px;min-width:0;margin-bottom:8px;display:flex}.mt-slot-bundle{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:8px;min-width:0;display:grid}.mt-slot-cell{min-width:0;container-type:inline-size}.mt-slot-strip{padding:2px 8px 10px}.md-price-list{color:var(--text-secondary);margin:0 0 12px;padding-left:18px;font-size:13px;line-height:1.55}@container (width<=460px){.mt-slot-row.sched-ev .mt-cap-bar{width:48px}}@container (width<=340px){.mt-slot-row.sched-ev .mt-cap-bar{display:none}.mt-slot-row.sched-ev .mt-cap{margin-left:0}}.mt-slot-group-label{color:var(--text-secondary);padding-left:2px;font-size:12px;font-weight:700}.mt-cap{align-items:center;gap:8px;min-width:0;display:flex}.mt-cap-bar{background:#e8eaed;border-radius:99px;flex-shrink:0;width:72px;height:6px;overflow:hidden}.mt-cap-bar i{border-radius:99px;height:100%;display:block}.mt-cap-bar.is-empty i{background:#c5cad3}.mt-cap-bar.is-ok i{background:var(--accent)}.mt-cap-bar.is-hot i{background:#e67e22}.mt-cap-bar.is-full i{background:var(--danger)}.mt-cap em{color:var(--text-muted);white-space:nowrap;font-size:12px;font-style:normal}.mt-wait{color:var(--warning);white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:700}.mt-saved{color:var(--success);font-size:12px;font-weight:700}.mt-menu{flex:none;position:relative}.mt-menu-btn{border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text-secondary);background:#fff;border-radius:8px;flex-shrink:0;font-size:16px;font-weight:700;line-height:1}.mt-inline-btn{border:1px solid var(--border);cursor:pointer;height:32px;color:var(--text-secondary);background:#fff;border-radius:8px;padding:0 10px;font-size:12px;font-weight:600}.mt-menu-mask{z-index:90;position:fixed;inset:0}.mt-menu-pop{z-index:91;border:1px solid var(--border);min-width:148px;box-shadow:var(--shadow-md);background:#fff;border-radius:10px;padding:4px;position:fixed}.mt-menu-pop button{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;width:100%;padding:8px 10px;font-size:13px;display:block}.mt-menu-pop button:hover{background:var(--bg-elevated)}.mt-menu-pop button.is-danger{color:var(--danger)}.mt-ended{margin-top:8px}.mt-ended-toggle{border:1px dashed var(--border);background:var(--bg-elevated);width:100%;color:var(--text-secondary);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;font-weight:600;display:flex}.mt-ended-list{margin-top:10px}.mt-toast{color:#fff;z-index:80;box-shadow:var(--shadow-md);background:#292d34;border-radius:10px;padding:10px 16px;font-size:13px;font-weight:600;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.mt-modal-mask{z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mt-modal{width:360px;max-width:90vw;padding:24px}.mt-modal.is-wide{width:480px}.mt-modal h3{margin:0;font-size:16px}.mt-modal p{color:var(--text-secondary);margin:8px 0 16px;font-size:13px;line-height:1.5}.mt-modal p.mt-modal-warn{color:#b42318;background:#b4231814;border-radius:8px;margin:0 0 12px;padding:10px 12px;font-weight:600}.mt-modal-actions{gap:10px;display:flex}.mt-modal-actions.is-col{flex-direction:column}@media (width<=720px){.mt-grid{grid-template-columns:1fr}.mt-toolbar-right{width:100%}.mt-view,.mt-view button{flex:1}.mt-toggle{text-align:center;flex:1}.mt-teacher-filter{width:100%}.mt-teacher-filter select{flex:1;max-width:none}.mt-day-card{padding:14px}.mt-filter-pop{width:min(280px,100vw - 32px)}.mt-clock-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"start arrow end""dur dur dur"}.mt-clock-start{grid-area:start}.mt-clock-arrow{grid-area:arrow}.mt-clock-end{grid-area:end}.mt-clock-dur{grid-area:dur}.mt-clock-dur .mt-time-pill{width:100%}}@media (width<=560px){.mt-slot-bundle{grid-template-columns:1fr}.mt-cal-board{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}.mt-clock .hh-time{height:48px}.mt-clock .hh-time select{min-height:44px;font-size:16px}.mt-time-pill{min-height:48px;font-size:15px}.mt-dur-btns{grid-template-columns:repeat(3,1fr);display:grid}.mt-dur button{width:100%;height:40px}}.buy-page{max-width:1080px}.buy-log-link{border:1px solid var(--border);color:var(--text-primary);cursor:pointer;background:#fff;border-radius:8px;flex-shrink:0;margin-left:auto;padding:6px 12px;font-size:13px;font-weight:700}.buy-log-link:hover{border-color:var(--accent);color:var(--accent)}.buy-done{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:480px;box-shadow:var(--shadow-sm);padding:20px 18px 18px}.buy-done-lead{margin:0 0 8px;font-size:15px;font-weight:600;line-height:1.45}.buy-done .buy-order{margin:12px 0 16px;padding:10px 0 0}.buy-done-proof{margin:0 0 16px}.buy-done-proof figcaption{margin:0 0 8px;font-size:13px;font-weight:700}.buy-done-proof img{object-fit:contain;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;max-height:420px;display:block}.buy-done-btn{width:100%}.buy-done-ref{background:var(--accent-soft);color:var(--text-secondary);border-radius:10px;margin:0 0 8px;padding:10px 12px;font-size:13px}.buy-done-ref b{letter-spacing:.08em;font-size:18px;font-family:var(--font-display);color:var(--accent);margin-left:6px}.buy-guest-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.buy-guest-fields label{min-width:0;display:block}.buy-guest-fields label span{color:var(--text-secondary);margin-bottom:6px;font-size:12px;display:block}.buy-guest-fields input,.buy-guest-fields select{width:100%;max-width:none;margin:0}.buy-guest-err{color:var(--danger);margin:8px 0 0;font-size:12px}.buy-guest-warn{background:color-mix(in srgb, var(--warning,#f59e0b) 14%, #fff);border:1px solid color-mix(in srgb, var(--warning,#f59e0b) 45%, #fff);border-radius:10px;gap:4px;margin:12px 0 0;padding:10px 12px;font-size:13px;line-height:1.5;display:grid}.buy-guest-warn b{color:#92400e}.buy-guest-warn span{color:var(--text-secondary)}.buy-guest-warn a{color:var(--accent);margin:0 2px;font-weight:700}@media (width<=520px){.buy-guest-fields{grid-template-columns:1fr}}.buy-layout{grid-template-columns:minmax(0,1fr) minmax(300px,360px);align-items:start;gap:20px;display:grid}.buy-main{gap:16px;min-width:0;display:grid}.buy-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px 18px 16px}.buy-step{align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.buy-step b{font-size:15px;font-weight:700}.buy-step span{color:var(--text-muted);font-size:12px}.buy-carousel-wrap{position:relative}.buy-carousel{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain;cursor:grab;-webkit-user-select:none;user-select:none;gap:16px;padding:4px 2px 10px;scroll-padding-inline:4px;display:flex;overflow-x:auto}.buy-carousel.is-dragging{cursor:grabbing;scroll-snap-type:none}.buy-carousel::-webkit-scrollbar{display:none}.buy-course-card{scroll-snap-align:start;text-align:left;cursor:grab;min-width:0;color:inherit;font:inherit;background:#fff;border:none;border-radius:18px;flex-direction:column;flex:0 0 min(240px,78%);margin:0;padding:0 0 4px;transition:box-shadow .15s;display:flex;overflow:hidden;box-shadow:0 10px 28px #181c240f}.buy-course-card .mac-art{pointer-events:none;cursor:inherit;display:block}.buy-course-card .mac-title{pointer-events:none;cursor:inherit;min-height:2.7em;font-size:16px}.buy-course-card .mac-dates,.buy-course-card .mac-price{pointer-events:none;display:block}.buy-carousel.is-dragging .buy-course-card{cursor:grabbing}.buy-course-card img{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.buy-course-card.is-on{box-shadow:0 10px 28px #181c240f, 0 0 0 2px var(--accent)}.buy-course-card .buy-check{top:12px;left:auto;right:12px}.buy-carousel-nav{z-index:2;width:32px;height:32px;color:var(--text-primary);cursor:pointer;background:#fff;border:none;border-radius:50%;place-items:center;display:grid;position:absolute;top:86px;box-shadow:0 6px 16px #181c2429}.buy-carousel-nav.is-prev{left:-6px}.buy-carousel-nav.is-next{right:-6px}.buy-check{z-index:1;background:var(--accent);color:#fff;pointer-events:none;border-radius:50%;place-items:center;width:22px;height:22px;display:grid;position:absolute;top:10px;right:10px;overflow:visible}.buy-check svg{width:12px;height:12px;display:block;overflow:visible}.buy-discounts{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.buy-disc{text-align:left;border:1.5px solid var(--border);cursor:pointer;color:inherit;font:inherit;background:#fff;border-radius:14px;min-height:92px;padding:14px 12px 12px;position:relative}.buy-disc:hover{border-color:var(--border-accent)}.buy-disc.is-on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, #fff);box-shadow:0 0 0 3px var(--accent-soft)}.buy-disc b{font-size:14px;display:block}.buy-disc em{color:var(--accent);margin-top:4px;font-size:13px;font-style:normal;font-weight:700;display:block}.buy-need-note{color:var(--text-secondary);margin-top:6px;font-size:11px;font-weight:600;display:inline-block}.buy-disc small{color:var(--text-muted);margin-top:6px;font-size:12px;display:block}.buy-plans{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.buy-plan{text-align:left;border:1.5px solid var(--border);cursor:pointer;min-height:112px;color:inherit;font:inherit;background:#fff;border-radius:14px;flex-direction:column;align-items:flex-start;width:100%;padding:16px 16px 14px;display:flex;position:relative}.buy-plan:hover{border-color:var(--border-accent)}.buy-plan.is-on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, #fff);box-shadow:0 0 0 3px var(--accent-soft)}.buy-plan b{padding-right:22px;font-size:15px;font-weight:700;line-height:1.35;display:block}.buy-plan .buy-hours{color:var(--text-muted);margin-top:6px;font-size:12px;display:block}.buy-plan .buy-price{letter-spacing:-.03em;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:auto;padding-top:12px;font-size:18px;font-weight:700;line-height:1.2;display:flex}.buy-plan s{color:var(--text-muted);font-size:12px;font-weight:500;display:inline}.buy-side{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px 18px 16px;position:sticky;top:16px}.buy-side h3{margin:0 0 10px;font-size:15px}.buy-side h3:not(:first-child){border-top:1px solid var(--border);margin-top:20px;padding-top:16px}.buy-rules{color:var(--text-secondary);margin:0 0 4px;padding-left:18px;font-size:13px;line-height:1.55}.buy-rules li{margin-bottom:6px}.buy-total{border-top:1px solid var(--border);margin-bottom:12px;padding-top:12px}.buy-total>span{color:var(--text-muted);margin-bottom:2px;font-size:12px;display:block}.buy-price-line{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.buy-total b{font-size:26px;line-height:1.15;font-family:var(--font-display)}.buy-price-line s{color:var(--text-muted);font-size:14px;font-weight:500}.buy-saved{color:var(--accent);margin:4px 0 0;font-size:12px;font-weight:600}.buy-order{border-top:1px dashed var(--border);margin:10px 0 0;padding:8px 0 0}.buy-order>div{grid-template-columns:3.2em minmax(0,1fr);gap:8px;margin-top:6px;font-size:12px;line-height:1.4;display:grid}.buy-order dt{color:var(--text-muted);font-weight:500}.buy-order dd{color:var(--text-primary);word-break:break-word;min-width:0;margin:0}.buy-summary{color:var(--text-secondary);margin:8px 0 0;font-size:12px}.buy-field-label,.buy-note>label{color:var(--text-secondary);margin-bottom:8px;font-size:12px;display:block}.buy-note{margin-bottom:14px}.buy-pay{margin-bottom:16px}.buy-pay-static{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);margin:0;padding:10px 12px;font-size:13px;font-weight:600}.buy-pay-opts{grid-template-columns:1fr 1fr;gap:10px;display:grid}.buy-pay-opt{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;min-height:48px;color:var(--text-primary);background:#fff;align-items:center;gap:8px;margin:0;padding:10px 12px;font-size:13px;line-height:1.35;display:flex}.buy-pay-opt.is-on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, #fff)}.buy-pay-opt input{accent-color:var(--accent);flex:none;margin:0}.buy-drop{border:1.5px dashed var(--border);background:var(--bg-elevated);border-radius:10px;min-height:88px;position:relative;overflow:hidden}.buy-drop.is-over{border-color:var(--accent);background:var(--accent-soft)}.buy-drop>input[type=file]{opacity:0;width:0;height:0;position:absolute;overflow:hidden}.buy-drop-label{cursor:pointer;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:96px;padding:16px 14px;display:flex}.buy-drop-label strong{color:var(--text-primary);font-size:13px;font-weight:600}.buy-drop-label span{color:var(--text-muted);font-size:12px}.buy-drop-preview{align-items:center;gap:10px;min-height:88px;padding:10px;display:flex}.buy-drop-preview img{object-fit:cover;border:1px solid var(--border);border-radius:8px;flex:none;width:56px;height:56px}.buy-drop-preview div{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.buy-drop-preview b{text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:12px;font-weight:600;overflow:hidden}.buy-drop-preview span{color:var(--text-muted);font-size:11px}.buy-drop-preview .btn-link{z-index:2;padding:0;font-size:12px;position:relative}.buy-drop-cover{cursor:pointer;position:absolute;inset:0}.buy-hint{color:var(--text-muted);margin:0 0 4px;font-size:13px;line-height:1.5}.buy-pay-info{margin:0 0 16px}.buy-pay-info>h3{margin:0 0 10px;font-size:15px}.buy-pay-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;margin:0;padding:14px 14px 12px}.buy-pay-heading{color:var(--text-primary);margin:0 0 12px;font-size:13px;font-weight:700}.buy-pay-methods{gap:12px;margin:0;padding:0;list-style:none;display:grid}.buy-pay-methods li{border-bottom:1px solid var(--border);padding:0 0 12px}.buy-pay-methods li:last-child{border-bottom:none;padding-bottom:0}.buy-pay-methods b{color:var(--text-primary);margin:0 0 6px;font-size:13px;font-weight:700;display:block}.buy-pay-details{gap:3px;display:grid}.buy-pay-details span{color:var(--text-secondary);font-size:12px;line-height:1.5;display:block}.buy-pay-note{background:color-mix(in srgb, var(--warning) 14%, #fff);color:var(--text-secondary);border-radius:8px;margin:12px 0 0;padding:10px 12px;font-size:12px;line-height:1.5}.buy-pay-info pre{background:var(--bg-elevated);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;color:var(--text-primary);border-radius:10px;margin:0;padding:14px;font-family:inherit;font-size:13px;line-height:1.65}@media (width<=860px){.buy-layout{grid-template-columns:1fr}.buy-side{position:static}.buy-discounts{grid-template-columns:1fr 1fr}.buy-course-card{flex-basis:min(260px,82%)}.buy-plans{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.buy-discounts,.buy-plans,.buy-pay-opts{grid-template-columns:1fr}}.bk-page{max-width:1080px}.bk-page .buy-card,.bk-slot{min-width:0}.bk-page .buy-carousel-wrap{min-width:0;max-width:100%}.bk-page .buy-carousel{scrollbar-width:thin;max-width:100%}.bk-page .buy-carousel::-webkit-scrollbar{height:8px;display:block}.bk-page .buy-course-card{flex:0 0 240px}.bk-teachers{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:10px;min-width:0;max-width:100%;margin:0 0 14px;padding:2px 2px 8px;display:flex;overflow:auto hidden}.bk-teacher{cursor:pointer;width:180px;color:inherit;font:inherit;background:0 0;border:none;flex:0 0 180px;padding:0;overflow:visible}.bk-teacher-inner{box-sizing:border-box;text-align:left;border:1.5px solid var(--border);background:#fff;border-radius:14px;flex-direction:column;align-items:flex-start;gap:8px;width:100%;padding:14px 36px 14px 14px;display:flex;position:relative;overflow:visible}.bk-teacher b{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;overflow:hidden}.bk-steps{flex-wrap:wrap;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:flex}.bk-steps li{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:flex}.bk-steps i{width:22px;height:22px;color:var(--text-muted);background:#eef0f3;border-radius:50%;place-items:center;font-size:11px;font-style:normal;font-weight:700;display:grid}.bk-steps .is-on{color:var(--text-primary);font-weight:700}.bk-steps .is-on i,.bk-steps .is-done i{background:var(--accent);color:#fff}.bk-teacher:hover .bk-teacher-inner{border-color:var(--border-accent)}.bk-teacher.is-on .bk-teacher-inner{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, #fff);box-shadow:0 0 0 3px var(--accent-soft)}.bk-teacher .buy-check{top:8px;left:auto;right:8px}.bk-step3{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:18px;display:grid}.bk-cal{border:1px solid var(--border);background:#fff;border-radius:14px;width:100%;min-width:0;max-width:100%;margin-bottom:16px;padding:12px;overflow:hidden}.bk-cal-nav{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.bk-cal-nav button{border:1px solid var(--border);background:#fff;border-radius:8px;width:32px;height:32px}.bk-cal-nav button:disabled{opacity:.35;cursor:not-allowed}.bk-cal .sched-month-cell.out{cursor:pointer;opacity:1}.bk-cal .sched-month-cell.out>.sched-month-num{color:var(--text-muted);opacity:.55}.bk-cal .sched-month-cell.is-mb-t{border-top:2px solid #94a3b8}.bk-cal .sched-month-cell.is-mb-b{border-bottom:2px solid #94a3b8}.bk-cal .sched-month-cell.is-mb-l{border-left:2px solid #94a3b8}.bk-cal .sched-month-cell.is-mb-r{border-right:2px solid #94a3b8}.bk-cal .sched-month-cell.is-past:not(.has-lesson){opacity:.38;filter:grayscale(.5)}.bk-cal .sched-month-chip{align-items:center;gap:4px;max-width:100%;display:flex}.bk-cal .sched-month-chip-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.bk-cal .bk-chip-tag{white-space:nowrap;border-radius:99px;flex-shrink:0;align-items:center;margin:0;padding:1px 5px;font-size:9px;font-style:normal;font-weight:700;line-height:1.2;display:inline-flex}.bk-cal .bk-chip-tag.is-joined,.bk-cal .bk-chip-tag.is-open{color:#15803d;background:#22c55e24}.bk-cal .bk-chip-tag.is-closed,.bk-cal .bk-chip-tag.is-stopped{color:#b45309;background:#f59e0b29}.bk-cal .bk-chip-tag.is-ended{color:#334155;background:#47556924}.bk-cal .bk-chip-tag.is-deleted,.bk-cal .bk-chip-tag.is-cancelled{color:#c0392b;background:#e74c3c1f}.bk-cal .sched-month-chip.is-past{opacity:.5;filter:saturate(.7);cursor:default}.bk-cal .sched-month-cell.is-past .sched-month-num{color:var(--text-muted);box-shadow:none;background:0 0}.bk-cal .sched-month.is-rich{border:1px solid var(--border);border-radius:10px;width:100%;min-width:0;overflow:hidden}.bk-cal .sched-month-cell.is-events{min-height:88px;max-height:128px;overflow:hidden}.bk-slot{border-top:1px solid var(--border);margin-top:16px;padding:18px 4px 20px}.bk-slot-head{flex-direction:column;align-items:stretch;gap:6px;margin-bottom:14px;display:flex}.bk-slot-top{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.bk-slot-course{color:var(--text-primary);min-width:0;font-size:17px;font-weight:700;line-height:1.3}.bk-slot-teacher{color:#6f61e8;background:#f3f0ff;border-radius:999px;flex-shrink:0;align-items:center;max-width:46%;padding:3px 10px 3px 4px;display:inline-flex}.bk-slot-teacher .slot-teacher{color:#6f61e8;font-weight:600}.bk-slot-meta{color:var(--text-muted);margin:0;font-size:15px;font-weight:500;line-height:1.45}.bk-cart-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px 16px;margin:0 2px 14px;display:flex}.bk-cart-copy{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.bk-cart-copy b{color:#1a1d24;font-size:17px;font-weight:700;line-height:1.3}.bk-cart-copy span{color:var(--text-secondary);font-size:13px;font-weight:500}.bk-cart-partial{color:var(--danger);margin-left:4px;font-style:normal;font-weight:700}.bk-cart-warn{color:#c43c33;background:#fff1f0;border-radius:8px;margin-top:2px;padding:5px 10px;font-size:12px;font-style:normal;font-weight:600;animation:1.15s ease-in-out 3 bk-warn-pulse;display:inline-flex}.bk-slot-alert{color:#c43c33;background:#fff1f0;border:1px solid #f5c2c0;border-radius:10px;margin:0 0 12px;padding:10px 12px;font-size:13px;font-weight:700;line-height:1.45;animation:1.15s ease-in-out 3 bk-warn-pulse}@keyframes bk-warn-pulse{0%,to{box-shadow:0 0 #c43c3300}50%{box-shadow:0 0 0 4px #c43c3333}}.bk-cart-row .btn-primary{width:auto;box-shadow:0 8px 18px color-mix(in srgb, var(--accent) 28%, transparent);border-radius:12px;padding:10px 20px;font-size:14px;font-weight:700}.bk-slot{position:relative;overflow:visible}.bk-time-wrap{min-width:0}.bk-time-bar{flex-wrap:nowrap;align-items:stretch;gap:10px;margin-bottom:12px;display:flex}.bk-time-field{min-width:0;min-height:52px;color:inherit;font:inherit;text-align:left;background:#eef1fb;border:none;border-radius:14px;flex:auto;align-items:center;gap:10px;padding:8px 12px 8px 14px;display:flex}.bk-time-field.is-static{cursor:default}.bk-time-icon{color:#3b5bdb;flex-shrink:0}.bk-time-copy{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bk-time-copy small{color:var(--text-muted);font-size:11px;font-weight:600}.bk-time-copy b{color:var(--text-primary);letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:800;overflow:hidden}.bk-time-pill{color:#3b5bdb;white-space:nowrap;background:#fff;border-radius:99px;flex-shrink:0;margin-left:auto;padding:3px 8px;font-size:12px;font-style:normal;font-weight:800}.bk-time-bar .btn-primary{white-space:nowrap;border-radius:12px;flex:none;width:auto;padding:0 16px;font-size:14px;font-weight:700}.bk-time-bar .bk-add-cart{color:#fff;background:#0f766e}.bk-time-bar .bk-add-cart:hover:not(:disabled){background:#115e59;box-shadow:0 4px 14px #0f766e47}.bk-time-bar .bk-add-cart:active:not(:disabled){box-shadow:none;background:#134e4a}.bk-time-bar .bk-add-cart:disabled{color:#788582;box-shadow:none;background:#e2e8e7}.bk-time-bar .bk-add-cart.is-pulse{animation:.45s ease-in-out 3 bk-add-cart-flash}@keyframes bk-add-cart-flash{0%,to{background:#0f766e;transform:scale(1);box-shadow:0 0 #0f766e00}50%{background:#14b8a6;transform:scale(1.04);box-shadow:0 0 0 8px #0f766e38}}.bk-confirm-btn.is-pulse{animation:.45s ease-in-out 3 bk-confirm-flash}@keyframes bk-confirm-flash{0%,to{background:var(--accent);transform:scale(1);box-shadow:0 0 #7b68ee00}50%{background:#9b8af5;transform:scale(1.03);box-shadow:0 0 0 8px #7b68ee38}}@media (prefers-reduced-motion:reduce){.bk-time-bar .bk-add-cart.is-pulse,.bk-confirm-btn.is-pulse{animation:none}}.bk-time-sum,.bk-time-sum-hint{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 0;font-size:13px;display:flex}.bk-coach{z-index:200;pointer-events:none;position:fixed;inset:0}.bk-coach-shade{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.bk-coach-dim{cursor:pointer;pointer-events:auto;background:0 0;border:0;margin:0;padding:0;position:absolute;inset:0}.bk-coach-ring{pointer-events:none;border-radius:14px;position:fixed;box-shadow:0 0 0 2px #ffffffe0}.bk-coach-tip{z-index:201;color:#fff;text-shadow:0 1px 2px #00000073;pointer-events:auto;grid-template-columns:auto minmax(140px,220px);grid-template-areas:"arrow copy""arrow skip";align-items:end;gap:10px 6px;max-width:min(340px,100vw - 24px);font-size:15px;font-weight:600;line-height:1.45;display:grid;position:fixed}.bk-coach-arrow{color:#fff;grid-area:arrow;width:132px;height:72px;overflow:visible}.bk-coach-tip.is-left{align-items:center}.bk-coach-tip.is-left .bk-coach-arrow{align-self:center;width:88px;height:72px}.bk-coach-tip.is-up{align-items:start}.bk-coach-tip.is-up .bk-coach-arrow{align-self:start}.bk-coach-tip.is-down{align-items:stretch}.bk-coach-tip.is-down .bk-coach-arrow{align-self:end}.bk-coach-tip.is-down span{align-self:start}.bk-coach-tip span{grid-area:copy;align-self:end}.bk-coach-skip{color:#3ec6c0;text-shadow:none;cursor:pointer;background:0 0;border:2px solid #3ec6c0;border-radius:4px;grid-area:skip;justify-content:center;justify-self:start;align-items:center;margin:0;padding:6px 18px;font-size:14px;font-weight:700;display:inline-flex}.bk-coach-skip:hover{background:#3ec6c024}.bk-deduct{border-top:1px solid var(--border);margin:18px 0 0;padding-top:18px}.bk-deduct-title{letter-spacing:.01em;color:var(--text-primary);text-align:center;margin:0 0 18px;font-size:17px;font-weight:800}.bk-deduct-hero{text-align:center;flex-direction:column;align-items:center;gap:4px;margin:0 0 20px;display:flex}.bk-deduct-hero span{color:var(--text-muted);letter-spacing:.04em;font-size:13px;font-weight:600}.bk-deduct-hero strong{font-size:40px;font-weight:800;line-height:1.05;font-family:var(--font-display);color:var(--accent);letter-spacing:-.03em}.bk-deduct-hero em{color:var(--text-primary);letter-spacing:0;margin-left:6px;font-size:16px;font-style:normal;font-weight:700}.bk-remain-card{border:1px solid var(--border);background:#fff;border-radius:16px;padding:16px 16px 14px;box-shadow:0 10px 28px #181c2412}.bk-remain-course{color:var(--text-primary);margin:0 0 12px;font-size:15px;font-weight:700;line-height:1.35;display:block}.bk-remain-label{color:var(--text-muted);margin-bottom:4px;font-size:12px;font-weight:600;display:block}.bk-remain-num{font-size:26px;font-weight:800;line-height:1.15;font-family:var(--font-display);color:var(--text-primary);margin:0 0 12px}.bk-remain-num i{color:var(--text-muted);margin:0 8px;font-style:normal;font-weight:700}.bk-remain-num em{color:var(--text-secondary);margin-left:6px;font-size:14px;font-style:normal;font-weight:700}.bk-remain-num.is-warn{color:var(--danger)}.bk-remain-bar{background:#eceff3;border-radius:999px;height:8px;overflow:hidden}.bk-remain-bar i{border-radius:inherit;background:var(--accent);height:100%;transition:width .2s;display:block}.bk-confirm-copy{color:var(--text-secondary);margin:18px 0 0;font-size:13px;line-height:1.7}.bk-confirm-mask{z-index:60;background:#12161c6b;justify-content:center;align-items:flex-end;padding:12px;display:flex;position:fixed;inset:0}.bk-confirm-sheet{background:#fff;border-radius:22px 22px 16px 16px;width:min(420px,100%);padding:22px 20px 18px;box-shadow:0 24px 56px #14182038}.bk-confirm-sheet .bk-deduct{border:none;margin:0;padding:0}.bk-confirm-sheet .bk-confirm-copy{margin:20px 0 0;font-size:14px;line-height:1.75}.bk-confirm-actions{gap:10px;margin-top:22px;display:flex}.bk-confirm-actions .btn-ghost,.bk-confirm-actions .btn-primary{flex:1;min-width:0}.bk-confirm-actions .btn-primary{flex:1.25}.bk-picks{gap:8px;margin:0 0 14px;padding:0;list-style:none;display:grid}.bk-picks li{border:1px solid var(--border);background:#fff;border-radius:12px;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.bk-picks b{font-size:13px;display:block}.bk-picks span,.bk-picks small{color:var(--text-secondary);font-size:12px;display:block}.bk-picks button{color:var(--danger);background:0 0;border:none;flex-shrink:0;padding:4px 0;font-size:12px}.bk-picks.is-confirm li{display:block}.bk-confirm-course{margin-bottom:12px;font-weight:700}.bk-success{margin-bottom:6px;font-size:22px;font-weight:800}.bk-receipt-lead{color:var(--text-secondary);margin:0 0 16px;font-size:14px}.bk-receipt-course{margin:0 0 12px;font-size:16px;font-weight:700}.bk-receipt-list{gap:10px;margin:0 0 16px;padding:0;list-style:none;display:grid}.bk-receipt-list li{border:1px solid var(--border);background:#fff;border-radius:14px;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 14px 12px;display:flex;box-shadow:0 8px 22px #181c240d}.bk-receipt-list b{margin-bottom:4px;font-size:15px;display:block}.bk-receipt-list span,.bk-receipt-list small{color:var(--text-secondary);font-size:13px;line-height:1.5;display:block}.bk-receipt-remain{color:var(--text-secondary);margin:0 0 4px;font-size:14px}.bk-receipt-remain b{color:var(--text-primary);font-size:18px;font-weight:800;font-family:var(--font-display)}.bk-receipt-remain i{color:var(--text-muted);margin:0 8px;font-style:normal}.bk-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.bk-actions .btn-primary,.bk-actions .btn-ghost{flex:1;min-width:120px}.btn-ghost{color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:#fff;padding:12px 24px;font-size:15px;font-weight:600}@media (width<=860px){.bk-step3{grid-template-columns:1fr}.bk-cal .sched-month-cell.is-events{min-height:72px;max-height:92px;padding:4px}.bk-cal .sched-month-chip{font-size:10px}.bk-time-bar .btn-primary{height:52px;padding:0 12px;font-size:13px}}@media (width>=640px){.bk-confirm-mask{align-items:center;padding:24px}.bk-confirm-sheet{border-radius:22px}}.pw-check{gap:3px;margin:8px 0 0;padding:0;list-style:none;display:grid}.pw-check li{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;line-height:1.4;display:flex}.pw-check li:before{content:"○";text-align:center;flex:none;width:1em;font-size:11px}.pw-check li.is-ok{color:var(--accent)}.pw-check li.is-ok:before{content:"✓"}.pw-check li.is-bad{color:var(--danger)}.pw-check li.is-bad:before{content:"✕"}.pw-field{width:100%}.pw-field-wrap{position:relative}.pw-field-wrap input{padding-right:42px}.pw-field-wrap input::-ms-reveal{display:none}.pw-field-wrap input::-ms-clear{display:none}.pw-field-toggle{width:32px;height:32px;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.pw-field-toggle:hover{color:var(--text-primary);background:var(--bg-card)}.log-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.log-search,.log-filters select{border:1px solid var(--border);height:36px;color:inherit;background:#fff;border-radius:8px;padding:0 12px;font-size:13px}.log-search{flex:220px;min-width:min(100%,200px)}.log-filters{flex-wrap:wrap;flex:280px;align-items:center;gap:8px;min-width:0;display:flex}.log-filters select{flex:128px;min-width:120px}.log-ghost{border:1px solid var(--border);cursor:pointer;height:36px;color:var(--text-secondary);white-space:nowrap;background:#fff;border-radius:8px;padding:0 12px;font-size:13px}.log-colpick{flex-shrink:0;margin-left:auto;position:relative}.log-colpick-mask{z-index:110;position:fixed;inset:0}.log-colpick-pop{z-index:111;border:1px solid var(--border);width:max-content;min-width:168px;box-shadow:var(--shadow-md);background:#fff;border-radius:10px;padding:8px;position:fixed}.log-colpick-pop label{cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.log-colpick-pop label:hover{background:var(--bg-elevated)}.log-table-wrap{-webkit-overflow-scrolling:touch;border:1px solid var(--border);background:#fff;border-radius:12px;max-width:100%;overflow-x:auto}.log-table{border-collapse:collapse;width:100%}.log-table th,.log-table td{text-align:left;vertical-align:middle;white-space:nowrap;border-bottom:1px solid #eef0f3;padding:12px 14px;font-size:13px}.log-table th{color:var(--text-muted);background:#f6f7f9;font-weight:600}.log-table tbody tr.log-row{cursor:pointer}.log-table tbody tr:hover{background:#fafbfc}.log-table tbody tr:last-child td{border-bottom:none}.log-actions{text-align:center;width:52px}.log-sort{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;display:inline-flex}.log-sort i{border-bottom:5px solid #c5cad3;border-left:4px solid #0000;border-right:4px solid #0000;width:0;height:0}.log-sort i.is-asc{border-bottom-color:var(--text-secondary)}.log-sort i.is-desc{border-bottom:none;border-top:5px solid var(--text-secondary)}.log-datetime{flex-direction:column;line-height:1.25;display:flex}.log-datetime b{color:var(--text-primary);font-weight:600}.log-datetime em{color:var(--text-muted);font-size:12px;font-style:normal}.log-id{color:var(--text-secondary);cursor:default;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.log-desc{text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--text-secondary);display:inline-block;overflow:hidden}.log-amt{font-variant-numeric:tabular-nums;font-weight:700}.log-amt.is-plus{color:#16a34a}.log-amt.is-minus{color:var(--danger)}.log-pill{border-radius:999px;align-items:center;width:fit-content;min-height:22px;padding:2px 8px;font-size:12px;font-style:normal;font-weight:600;display:inline-flex}.log-pill.is-type{color:#6d4fd6;background:#efeafc}.log-pill.is-pending{color:#c27812;background:#fff4e5}.log-pill.is-done{color:#1f9d57;background:#e8f8ee}.log-pill.is-rejected{color:#6b7280;background:#f3f4f6}.log-pager{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:14px;font-size:13px;display:flex}.log-pager-nav{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.log-pager-nav button,.log-pager-jump button,.log-pager-size select{border:1px solid var(--border);cursor:pointer;min-width:32px;height:32px;color:inherit;background:#fff;border-radius:8px;padding:0 10px;font-size:13px}.log-pager-nav button.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.log-pager-nav button:disabled{opacity:.45;cursor:default}.log-pager-gap{padding:0 4px}.log-pager-size,.log-pager-jump{align-items:center;gap:6px;display:inline-flex}.log-pager-jump input{text-align:center;border:1px solid var(--border);border-radius:8px;width:56px;height:32px}.log-cards{display:none}.log-card{cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:12px;margin-bottom:10px;padding:14px}.log-card-top,.log-card-bot{justify-content:space-between;align-items:center;gap:10px;display:flex}.log-card-meta{color:var(--text-muted);margin:8px 0;font-size:12px}.log-card-desc{color:var(--text-secondary);margin-top:8px;font-size:13px}.log-card-reject{color:var(--danger);margin-top:6px;font-size:13px}.log-detail-mask{z-index:80;background:#181c2447;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.log-detail{width:min(440px,100%);box-shadow:var(--shadow-md);background:#fff;border-radius:14px;padding:20px}.log-detail h3{margin-bottom:14px;font-size:16px}.log-detail p{word-break:break-all;grid-template-columns:84px 1fr;gap:8px;margin-bottom:8px;font-size:13px;display:grid}.log-detail p span{color:var(--text-muted)}.log-detail img{object-fit:contain;background:var(--bg-elevated);border-radius:8px;width:100%;max-height:220px;margin:8px 0 12px}.log-detail-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}@media (width<=768px){.log-search,.log-filters{flex-basis:100%}.log-colpick{margin-left:0;display:none}}.login-screen{background:var(--bg-deep);background-image:radial-gradient(at 30% 20%,#7b68ee14 0%,#0000 50%),radial-gradient(at 70% 80%,#2ecc710f 0%,#0000 50%);flex-direction:column;align-items:center;min-height:100vh;display:flex;position:relative}.login-back{z-index:2;white-space:nowrap;width:auto;height:36px;color:var(--text-primary);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:4px;margin:0;padding:0 10px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex;position:absolute;top:20px;left:20px}.login-back:hover{color:var(--accent)}.login-screen>:not(.site-footer):not(.login-back){margin-top:auto;margin-bottom:auto}.login-screen .site-footer{width:100%}.login-form-card{border:1px solid var(--border-accent);width:380px;box-shadow:var(--shadow-glow);padding:40px 32px;animation:.5s fadeInUp}.login-title{text-align:center;font-family:var(--font-display);margin-bottom:8px;font-size:24px}.login-sub{text-align:center;color:var(--text-muted);margin-bottom:28px;font-size:13px}.login-guest{border-top:1px solid var(--border);text-align:center;color:var(--text-muted);margin:18px 0 0;padding-top:14px;font-size:13px}.login-guest a{color:var(--accent);margin-left:4px;font-weight:700}.login-remember{color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;margin-bottom:24px;font-size:13px;display:flex}.acct-card{background:var(--bg-card);border:1px solid var(--border);width:400px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-md);border-radius:28px;animation:.45s fadeInUp;overflow:hidden}.acct-card-head{grid-template-columns:28px 1fr 36px;align-items:center;gap:10px;padding:16px 16px 12px;font-size:16px;font-weight:700;display:grid}.acct-card-head span{text-align:center}.acct-close{width:36px;height:36px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;display:flex}.acct-close:hover{background:var(--bg-elevated);color:var(--text-primary)}.acct-list{padding:4px 8px 0}.acct-row{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:16px;align-items:center;gap:12px;padding:12px 14px;display:flex}.acct-row:hover:not(:disabled){background:var(--bg-elevated)}.acct-row:disabled{opacity:.65;cursor:wait}.acct-row.is-active{background:var(--accent-soft)}.acct-meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.acct-meta b{font-size:15px;font-weight:650;line-height:1.3}.acct-meta small{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.acct-badge{color:var(--text-muted);background:var(--bg-elevated);border-radius:999px;flex:none;padding:3px 8px;font-size:11px}.acct-action{border-radius:16px;margin:0 8px}.acct-plus,.acct-logout-ico{background:var(--bg-elevated);width:40px;height:40px;color:var(--text-secondary);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:22px;font-weight:500;display:flex}.acct-error{margin:8px 16px 0}.acct-busy{text-align:center;color:var(--text-muted);padding:10px 16px 16px;font-size:13px}.rcpt-page{color:#111;background:#f3f4f6;min-height:100vh;font-family:Noto Sans TC,Microsoft JhengHei,sans-serif}.rcpt-toolbar{justify-content:flex-end;max-width:860px;margin:0 auto;padding:16px 16px 0;display:flex}.rcpt-toolbar button{font:inherit;cursor:pointer;background:#fff;border:1px solid #c8cdd4;border-radius:8px;padding:6px 14px;font-size:14px;font-weight:700}.rcpt-msg{color:#656f7d;max-width:860px;margin:24px auto;padding:0 16px}.rcpt-sheet{background:#fff;max-width:860px;margin:16px auto 40px;box-shadow:0 10px 30px #181c2414}.rcpt-bar{background:#e5e5e5;height:78px;position:relative}.rcpt-logo{object-fit:cover;background:#fff;border:4px solid #fff;border-radius:50%;width:92px;height:92px;position:absolute;top:16px;right:28px}.rcpt-body{padding:36px 48px 56px}.rcpt-body h1{letter-spacing:.04em;margin:0 0 6px;font-size:28px;font-weight:800}.rcpt-sub{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.rcpt-sub b{font-size:22px;font-weight:800}.rcpt-no{white-space:nowrap;font-size:18px;font-weight:700}.rcpt-no em,.rcpt-body p>em,.rcpt-month,.rcpt-other{border-bottom:1.5px solid #111;min-width:180px;padding:0 8px 2px;font-style:normal;font-weight:700;display:inline-block}.rcpt-no em{min-width:210px}.rcpt-rule{background:#111;height:3px;margin:8px 0 28px}.rcpt-body p{margin:0 0 16px;font-size:18px;font-weight:700}.rcpt-grid{grid-template-columns:1.2fr 1fr;gap:24px;display:grid}.rcpt-dollar{margin-right:6px}.rcpt-body p.rcpt-items>em{min-width:360px}.rcpt-sign{text-align:center;width:340px;margin-top:20px;margin-left:auto}.rcpt-mark{justify-content:center;align-items:flex-end;gap:2px;margin-bottom:-8px;display:flex}.rcpt-chop,.rcpt-sign-img{object-fit:contain;display:block}.rcpt-chop{flex:0 0 108px;width:108px;height:108px}.rcpt-sign-img{flex:0 0 196px;width:196px;height:126px}.rcpt-sign i{border-top:1.5px solid #111;margin-bottom:8px;display:block}.rcpt-sign span{font-size:16px;font-weight:700}@media (width<=720px){.rcpt-body{padding:28px 20px 40px}.rcpt-grid{grid-template-columns:1fr;gap:0}.rcpt-sub{flex-direction:column;align-items:flex-start}.rcpt-logo{width:72px;height:72px;right:16px}}@media print{.rcpt-toolbar{display:none}.rcpt-page{background:#fff}.rcpt-sheet{box-shadow:none;max-width:none;margin:0}.rcpt-sign-img,.rcpt-chop{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.dash-title-row{flex-wrap:wrap;row-gap:10px}.dash-period{border:1px solid var(--border);background:#fff;border-radius:10px;gap:2px;margin-left:auto;padding:3px;display:inline-flex}.dash-period-btn{height:30px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:0 12px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.dash-period-btn:hover{background:var(--bg-elevated)}.dash-period-btn.is-on{background:var(--accent);color:#fff}.dash-sub{color:var(--text-muted);margin:-14px 0 18px;font-size:13px}.dash-body{transition:opacity .2s}.dash-body.is-loading{opacity:.55;pointer-events:none}.dash-pending{cursor:pointer;color:#c27812;background:#f59e0b14;border-color:#f59e0b66;align-self:flex-start}.dash-kpis{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:14px;display:grid}.dash-kpi{align-items:flex-start;gap:14px;margin:0;padding:18px;display:flex}.dash-kpi-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:inline-flex}.dash-kpi-icon.is-accent{background:var(--accent-soft);color:var(--accent)}.dash-kpi-icon.is-success{background:var(--success-soft);color:#1f9d55}.dash-kpi-icon.is-pink{color:#db2777;background:#ec48991f}.dash-kpi-icon.is-amber{color:#c27812;background:#f59e0b24}.dash-kpi-body{flex:1;min-width:0}.dash-kpi-label{color:var(--text-secondary);font-size:12px;font-weight:600}.dash-kpi-value{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.02em;margin-top:2px;font-size:26px;font-weight:700;line-height:1.2}.dash-kpi-delta{color:var(--text-muted);flex-direction:column;align-items:flex-start;gap:2px;margin-top:8px;font-size:11px;font-weight:600;line-height:1.45;display:flex}.dash-kpi-delta.is-up{color:#1f9d55}.dash-kpi-delta.is-down{color:var(--danger)}.dash-kpi-delta b{white-space:nowrap;font-weight:700}.dash-kpi-delta span{word-break:keep-all}.dash-grid{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:14px;margin-bottom:14px;display:grid}.dash-grid.is-three{grid-template-columns:repeat(3,minmax(0,1fr))}.dash-grid.is-teacher{grid-template-columns:minmax(0,2.2fr) minmax(0,1fr)}.dash-kpi-stack{flex-direction:column;gap:14px;display:flex}.dash-kpi-stack .dash-kpi{flex:1}.dash-teachers{flex-direction:column;flex:1;justify-content:center;gap:12px;display:flex}.dash-teacher-row{grid-template-columns:32px minmax(0,1fr) auto;align-items:start;gap:12px;display:grid}.dash-teacher-main{min-width:0}.dash-teacher-head{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;margin-bottom:6px;display:flex}.dash-teacher-name{max-width:100%;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:32px;text-decoration:none;display:block;overflow:hidden}.dash-teacher-name:hover{color:var(--accent);text-decoration:underline}.dash-teacher-meta{color:var(--text-muted);font-variant-numeric:tabular-nums;flex-direction:column;gap:1px;font-size:11px;line-height:1.45;display:flex}.dash-teacher-row .dash-growth{justify-content:flex-end;line-height:32px}.dash-panel{flex-direction:column;min-width:0;margin:0;padding:18px;display:flex}.dash-panel-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.dash-panel-head h3{font-size:15px;font-weight:700;line-height:1.3}.dash-panel-head p{color:var(--text-muted);margin-top:2px;font-size:12px}.dash-pill{border:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;background:#fff;border-radius:99px;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:600}.dash-chart{width:100%;height:auto;display:block;overflow:visible}.dash-chart text{font-family:var(--font-body);fill:var(--text-muted);font-size:10px}.dash-chart .dash-val{fill:var(--text-secondary);font-size:10px;font-weight:600}.dash-chart .dash-gridline{stroke:var(--border);stroke-dasharray:3 4}.dash-chart .dash-axis{stroke:var(--border)}.dash-chart .dash-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.dash-chart .dash-dot{fill:#fff;stroke:var(--accent);stroke-width:2px}.dash-chart .dash-bar{fill:var(--accent);rx:4}.dash-chart .dash-bar.is-dim{fill:#7b68ee59}.dash-chart .dash-bar.is-future{fill:#7b68ee2e;stroke:#7b68ee73;stroke-dasharray:3 2}.dash-donut{flex:1;align-items:center;gap:18px;display:flex}.dash-donut svg{flex-shrink:0;width:150px;height:150px}.dash-donut-center{font-family:var(--font-display);fill:var(--text-primary);font-weight:700}.dash-legend{flex-direction:column;flex:1;gap:8px;min-width:0;font-size:12px;display:flex}.dash-legend li{align-items:center;gap:8px;min-width:0;list-style:none;display:flex}.dash-legend i{border-radius:50%;flex-shrink:0;width:9px;height:9px}.dash-legend span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-secondary);flex:1;overflow:hidden}.dash-legend b{color:var(--text-primary);font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:700}.dash-progress{flex-direction:column;flex:1;justify-content:center;gap:14px;display:flex}.dash-progress-row{grid-template-columns:24px minmax(0,1fr) 44px;align-items:center;gap:10px;display:grid}.dash-progress-icon{background:var(--bg-elevated);width:24px;height:24px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.dash-progress-main{min-width:0}.dash-progress-main span{color:var(--text-secondary);margin-bottom:5px;font-size:12px;font-weight:600;display:block}.dash-progress-track{background:var(--bg-elevated);border-radius:99px;height:6px;overflow:hidden}.dash-progress-track i{background:var(--accent);border-radius:99px;height:100%;transition:width .5s;display:block}.dash-progress-pct{text-align:right;color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.dash-table-wrap{flex:1;margin:0 -4px;overflow-x:auto}.page-container .dash-table{width:100%;min-width:0;box-shadow:none;background:0 0;border:none}.page-container .dash-table thead th{background:0 0;padding:8px 6px;font-size:11px}.page-container .dash-table tbody td{white-space:nowrap;padding:9px 6px;font-size:13px}.dash-table .dash-course{text-overflow:ellipsis;max-width:160px;font-weight:600;display:block;overflow:hidden}.dash-course-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block;position:relative;top:-1px}.dash-table .is-num{text-align:right;font-variant-numeric:tabular-nums}.dash-growth{color:var(--text-muted);align-items:center;gap:2px;font-size:12px;font-weight:700;display:inline-flex}.dash-growth.is-up{color:#1f9d55}.dash-growth.is-down{color:var(--danger)}.dash-empty{min-height:120px;color:var(--text-muted);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.dash-links{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;display:grid}.dash-links .card{text-align:left;cursor:pointer;margin:0;font-weight:700}@media (width<=1100px){.dash-grid,.dash-grid.is-three,.dash-grid.is-teacher{grid-template-columns:1fr}.dash-kpi-stack{flex-direction:row}}@media (width<=768px){.dash-teacher-meta{white-space:normal}.dash-period{-webkit-overflow-scrolling:touch;width:100%;margin-left:0;overflow-x:auto}.dash-period-btn{flex:1 0 auto;padding:0 10px;font-size:12px}.dash-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dash-kpi{gap:10px;padding:14px}.dash-kpi-icon{border-radius:10px;width:36px;height:36px;font-size:16px}.dash-kpi-value{font-size:22px}.dash-donut{flex-direction:column;align-items:stretch}.dash-donut svg{align-self:center}}.slot-pop-mask{z-index:70;background:#181c2447;position:fixed;inset:0}.slot-pop-anchor:not(.is-sheet){z-index:72;filter:drop-shadow(0 4px 6px #0000000f)drop-shadow(0 12px 24px #0000001f);width:320px;position:fixed}.slot-pop-anchor.is-form:not(.is-sheet){width:min(440px,100vw - 24px);max-width:440px}.slot-pop-anchor:not(.is-sheet):not(.is-ready){opacity:0;transform:translateY(4px)}.slot-pop-anchor.is-ready:not(.is-sheet){animation:.12s ease-out forwards slot-pop-in}@keyframes slot-pop-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.slot-pop-anchor.is-sheet{width:auto;max-width:none;position:absolute;bottom:0;left:0;right:0}.slot-pop{box-sizing:border-box;background:#fff;border:1px solid #00000014;border-radius:12px;width:100%;max-height:min(82vh,640px);padding:14px 14px 12px;overflow:hidden auto;box-shadow:0 0 0 1px #00000005}.slot-pop.is-sheet{border-radius:16px 16px 0 0;max-height:82vh;box-shadow:0 -8px 28px #14182029}.slot-pop-arrow{pointer-events:none;background:#fff;border:1px solid #00000014;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.slot-pop-anchor[data-place=right] .slot-pop-arrow{border-top:none;border-right:none;left:-5px}.slot-pop-anchor[data-place=left] .slot-pop-arrow{border-bottom:none;border-left:none;right:-5px}.slot-pop-anchor[data-place=bottom] .slot-pop-arrow{border-bottom:none;border-right:none;top:-5px}.slot-pop-anchor[data-place=top] .slot-pop-arrow{border-top:none;border-left:none;top:auto;bottom:-5px}.slot-pop-head{align-items:flex-start;gap:8px;display:flex}.slot-pop-bar{border-radius:4px;flex-shrink:0;width:4px;min-height:22px;margin-top:3px}.slot-pop-title{flex-wrap:wrap;flex:1;align-items:center;gap:8px;min-width:0;display:flex}.slot-pop-title strong{overflow-wrap:anywhere;min-width:0;font-size:15px}.slot-pop-title em,.slot-pop-chip{border-radius:999px;padding:1px 8px;font-size:11px;font-style:normal;font-weight:700}.slot-pop-chip.is-ended{color:#5c6570;background:#eef0f3}.slot-pop-chip.is-full{color:var(--danger);background:#fdecea}.slot-pop-chip.is-partial{color:#b45309;background:#f59e0b29}.slot-pop-chip.is-kind.is-private{color:#3d4a5c;background:#e8edf5}.slot-pop-chip.is-kind.is-school{color:#0f6b4c;background:#e5f6ee}.slot-pop-meet-status{color:var(--text-muted);font-size:12px}.slot-pop-x{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:16px;line-height:1}.slot-pop-when{color:var(--text-secondary);margin:6px 0 10px;font-size:13px}.slot-pop-cap-text{color:var(--text-muted);margin:0 0 10px;font-size:12px}.slot-pop-teachers{flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;margin-bottom:8px;display:flex}.slot-pop-teachers .sched-ev-teacher{min-width:0;max-width:100%}.slot-pop-teacher-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.slot-pop-venue{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.slot-pop-venue:before{content:"·";color:var(--text-muted);margin-right:8px;font-weight:400}.slot-pop-cap{color:var(--text-secondary);flex-direction:column;gap:6px;margin:8px 0 12px;font-size:12px;display:flex}.slot-pop-cap-bar{background:#e8eaee;border-radius:99px;height:6px;overflow:hidden}.slot-pop-cap-bar i{background:var(--accent);height:100%;display:block}.slot-pop-cap-track{background:#e8eaee;border-radius:99px;height:2px}.slot-pop-cap.is-hot .slot-pop-cap-bar i{background:#e67e22}.slot-pop-cap.is-full .slot-pop-cap-bar i{background:var(--danger)}.slot-pop-h{color:var(--text-secondary);margin:4px 0 6px;font-size:13px}.slot-pop-students{list-style:none}.slot-pop-students li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:7px 0;font-size:13px;display:flex}.slot-pop-students b{font-weight:600}.slot-pop-name{font:inherit;color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:0;margin:0;padding:0;font-weight:600}.slot-pop-name:hover{text-decoration:underline}.slot-pop-students em{color:var(--text-muted);margin-left:8px;font-size:12px;font-style:normal}.slot-pop-students .is-in{color:var(--accent);font-weight:600}.slot-pop-empty{color:var(--text-muted);margin:6px 0;font-size:13px}.slot-pop-link{text-align:left;width:100%;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:8px 0;font-size:13px;font-weight:600;display:block}.slot-pop-cta{border:1px solid var(--accent);cursor:pointer;color:var(--accent);background:#fff;border-radius:8px;align-items:center;margin:8px 0 4px;padding:7px 12px;font-size:13px;font-weight:600;display:inline-flex}.slot-pop-note{color:var(--text-secondary);margin:0 0 10px;font-size:12px}.slot-pop-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:10px;display:flex}.slot-pop-text-danger{color:var(--danger);cursor:pointer;background:0 0;border:none;font-size:13px;font-weight:700}.slot-pop-primary,.slot-pop-ghost,.slot-pop-danger{cursor:pointer;border:none;border-radius:8px;min-height:36px;padding:8px 12px;font-size:13px;font-weight:600}.slot-pop-primary{background:var(--accent);color:#fff;white-space:nowrap}.slot-pop>.slot-pop-actions .slot-pop-primary{border-radius:6px;min-height:28px;padding:4px 10px;font-size:12px}.slot-pop-ghost{background:var(--bg-elevated);color:var(--text-primary)}.slot-pop-danger{background:var(--danger);color:#fff}.slot-pop-mini{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600}.slot-pop-copy{gap:8px;margin-top:8px;display:flex}.slot-pop-copy input{flex:1}.slot-pop-edit{margin-top:8px}.slot-pop-warn{background:var(--bg-elevated);border-radius:8px;margin-bottom:10px;padding:10px;font-size:13px}.slot-pop-warn label{gap:8px;margin-top:6px;display:flex}.sched-confirm-mask{z-index:80;background:#181c2466;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.sched-confirm{background:#fff;border-radius:14px;width:min(360px,100%);padding:18px;box-shadow:0 16px 40px #14182033}.sched-confirm h4{margin-bottom:8px;font-size:16px}.sched-confirm p{color:var(--text-secondary);margin-bottom:14px;font-size:13px}.sp-field{flex-direction:column;gap:6px;display:flex}.sp-label{color:var(--text-primary);font-size:13px;font-weight:600}.sp-pick{position:relative}.sp-pick input{width:100%;max-width:none}.sp-browse{border:1px solid var(--border);background:#fff;border-radius:10px;max-height:360px;margin:8px 0 0;padding:6px;list-style:none;overflow:auto}.sp-pick-opt{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:none;border-radius:8px;padding:10px 12px;font-size:14px;display:block}.sp-pick-opt:hover,.sp-pick-opt.is-on{background:var(--accent-soft)}.sp-pick-opt small{color:var(--text-secondary);margin-top:2px;font-size:12px;display:block}.sp-pick-empty{color:var(--text-secondary);padding:10px 12px;font-size:13px}.sp-picked{border:1px solid var(--border);background:#fff;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.sp-picked b{font-size:15px}.sp-picked span{color:var(--text-secondary);font-size:13px}.sp-picked-actions{flex-wrap:wrap;gap:8px;display:flex}.sp-ghost{border:1px solid var(--border);height:36px;color:var(--text-primary);cursor:pointer;background:#fff;border-radius:8px;padding:0 12px;font-size:13px;font-weight:600}.sp-ghost:hover{background:var(--bg-elevated)}.sp-ghost:focus-visible,.sp-pick-opt:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ms-board{flex-direction:column;gap:10px;display:flex}.ms-title{margin:0;font-size:16px}.ms-status{margin:0}.ms-tools{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.ms-tools label{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:inline-flex}.ms-tools select,.ms-tools input[type=date]{width:auto;min-width:0;padding:6px 8px}.ms-custom-date{gap:6px}.ms-sort{margin-left:auto}.ms-count{color:var(--text-secondary);margin:0;font-size:13px}.ms-date{color:var(--text-primary);white-space:nowrap}.page-container .ms-board .ms-course{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:280px;line-height:1.4;display:-webkit-box;overflow:hidden}.ms-empty{text-align:center;color:var(--text-muted);padding:28px 12px}.ms-empty p{margin:0 0 8px}.ms-muted{color:var(--text-muted)}@media (width<=720px){.ms-sort{margin-left:0}.ms-course{max-width:180px}}.calapp{background:var(--bg-card);border:1px solid var(--border);min-height:0;color:var(--text-primary);border-radius:16px;flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.calapp-shell{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.calapp-shell .calapp{flex:1;min-height:0}.calapp-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 12px 8px;display:flex}.calapp-title{letter-spacing:0;min-width:88px;font-size:16px;font-weight:700}.calapp-search{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;flex:1;padding:7px 12px;font-size:13px}.calapp-search::placeholder{color:var(--text-muted)}.calapp-gear{border:1px solid var(--border);background:var(--bg-card);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;border-radius:8px;font-size:14px}.calapp-gear:hover{background:var(--bg-elevated)}.calapp-settings{color:var(--text-secondary);background:var(--bg-elevated);border-bottom:1px solid var(--border);gap:16px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.calapp-settings select{color:var(--text-primary);border:1px solid var(--border);background:#fff;border-radius:8px;margin-left:6px;padding:4px 6px}.calapp-span{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;align-self:flex-start;gap:1px;margin:8px 12px 0;padding:2px;display:flex}.calapp-span button{color:var(--text-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;height:26px;padding:4px 10px;font-size:12px;font-weight:600}.calapp-span button.on{color:var(--text-primary);box-shadow:var(--shadow-sm);background:#fff}.calapp-week{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.calapp-week-head,.calapp-week-allday,.calapp-week-body{grid-template-columns:56px repeat(var(--cal-cols,7), minmax(0, 1fr));display:grid}.calapp-week-head{border-bottom:1px solid var(--border);background:#fff;flex-shrink:0}.calapp-week-gutter{min-width:0}.calapp-wcol{border-right:1px solid var(--border);cursor:pointer;background:0 0;flex-direction:column;align-items:center;min-width:0;padding:8px 6px 6px;display:flex}.calapp-wcol:last-child{border-right:none}.calapp-wcol.is-today,.calapp-week-allcol.is-today{background:#7b68ee0f}.calapp-week-body .calapp-slots.is-today{background:#7b68ee09}.calapp-week-body .calapp-slots.is-today .calapp-hline{background:#292d341f}.calapp-wcol.is-today .calapp-wdow{color:var(--accent)}.calapp-wdow{color:var(--text-muted);font-size:11px;font-weight:600}.calapp-wnum{border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;margin:2px 0 0;font-size:15px;font-weight:700;display:inline-flex}.calapp-wcol.is-today .calapp-wnum{background:var(--accent);color:#fff}.calapp-week-allday{border-bottom:1px solid var(--border);flex-shrink:0;min-height:8px}.calapp-week-allcol{border-right:1px solid var(--border);flex-direction:column;gap:3px;min-width:0;padding:4px;display:flex}.calapp-week-allcol:last-child{border-right:none}.calapp-week-scroll{flex:1;min-height:0;overflow:auto}.calapp-week-body{min-width:0}.calapp-week-body .calapp-hours{border-right:1px solid var(--border)}.calapp-week-body .calapp-slots{border-right:1px solid var(--border);background:0 0;border-radius:0}.calapp-week-body .calapp-slots:last-child{border-right:none}.calapp-wpills{flex-direction:column;gap:4px;display:flex}.calapp-pill,.calapp-allbar,.calapp-block,.calapp-mrow,.calapp-madd{text-align:left;cursor:pointer;font:inherit;color:inherit;border:0}.calapp-pill{white-space:normal;border-radius:6px;flex-direction:column;gap:2px;padding:5px 6px 5px 10px;font-size:12px;font-weight:600;line-height:1.3;display:flex;position:relative;overflow:hidden}.calapp-pill:before,.calapp-allbar:before,.calapp-block:before,.calapp-mpill:before,.calapp-enroll:before{content:"";background:var(--bar,var(--accent));border-radius:3px;width:3px;position:absolute;top:2px;bottom:2px;left:0}.calapp-copy{flex-direction:column;align-items:flex-start;gap:1px;min-width:0;max-width:100%;display:flex}.calapp-etitle{align-items:center;gap:6px;min-width:0;max-width:100%;font-weight:700;line-height:1.25;display:inline-flex}.calapp-ename{text-overflow:ellipsis;min-width:0;overflow:hidden}.calapp-esub{color:var(--text-muted);font-size:11px;font-weight:500;line-height:1.25}.calapp-week-body .calapp-block{gap:4px;min-height:56px;padding:6px 6px 6px 10px}.calapp-block>.calapp-copy{white-space:normal;font-size:13px;font-weight:400;overflow:hidden}.calapp-week-body .calapp-block>.calapp-copy{font-size:12px}.calapp-day{flex:1;padding:0 12px 12px;overflow:auto}.calapp-allday{flex-wrap:wrap;gap:6px;min-height:28px;margin:8px 0;display:flex}.calapp-allbar{border-radius:6px;padding:6px 10px 6px 12px;font-size:13px;font-weight:600;position:relative}.calapp-grid{grid-template-columns:56px 1fr;display:grid;position:relative}.calapp-hours{color:var(--text-muted);font-size:11px;font-weight:600}.calapp-hours div{border-top:1px solid var(--border)}.calapp-slots{background:#f7f8fa;border-radius:8px;position:relative}.calapp-hline{background:var(--border);height:1px;position:absolute;left:0;right:0}.calapp-block{box-shadow:var(--shadow-sm);border:1px solid #0000;border-radius:8px;flex-direction:column;padding:4px 8px 4px 10px;display:flex;position:absolute;overflow:hidden}.calapp-block em:not(.calapp-tag){opacity:.8;font-variant-numeric:tabular-nums;font-size:11px;font-style:normal}.calapp-tag{vertical-align:middle;white-space:nowrap;border-radius:99px;flex-shrink:0;align-items:center;margin:0;padding:2px 8px;font-size:11px;font-style:normal;font-weight:700;line-height:1.2;display:inline-flex}.calapp-tag.is-joined,.calapp-tag.is-open{color:#15803d;background:#22c55e24}.calapp-tag.is-closed,.calapp-tag.is-stopped{color:#b45309;background:#f59e0b29}.calapp-tag.is-ended{color:#334155;background:#47556924}.calapp-tag.is-deleted,.calapp-tag.is-cancelled{color:#c0392b;background:#e74c3c1f}.calapp-block.is-past,.calapp-allbar.is-past,.calapp-mpill.is-past,.calapp-mrow.is-past{opacity:.5;filter:saturate(.7);cursor:default;box-shadow:none}.calapp-mrow:disabled>em{visibility:hidden}.calapp-tag.is-holiday{color:#fff;background:#e8a54b}.calapp-block.is-joined,.calapp-allbar.is-joined{box-shadow:inset 0 0 0 1.5px var(--success)}.calapp-month{touch-action:pan-y;flex:1;padding:0 0 12px;overflow:visible}.calapp-mdow,.calapp-mgrid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calapp-mgrid{position:relative}.calapp-mgrid>.cal-month-mark{opacity:.04;z-index:3;font-size:clamp(88px,20vw,168px);inset:8% 2% 4%}.calapp-mgrid>.calapp-mcell{z-index:1}.calapp-mdow span{text-align:center;color:var(--text-muted);border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:8px 0;font-size:11px;font-weight:600}.calapp-mcell{border:none;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:118px;color:var(--text-primary);text-align:left;cursor:pointer;background:#fff;flex-direction:column;align-items:stretch;padding:6px;display:flex;position:relative}.calapp-mcell.is-out{cursor:pointer}.calapp-mcell.is-out>strong{color:var(--text-muted);opacity:.55}.calapp-mcell.is-mb-t{border-top:2px solid #94a3b8}.calapp-mcell.is-mb-b{border-bottom:2px solid #94a3b8}.calapp-mcell.is-mb-l{border-left:2px solid #94a3b8}.calapp-mcell.is-mb-r{border-right:2px solid #94a3b8}.calapp-mcell strong{border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;font-weight:600;display:inline-flex}.calapp-mplus{width:18px;height:18px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex;position:absolute;top:6px;right:4px}.calapp-mplus:hover{color:var(--accent);background:#7b68ee1f}.calapp-mcell.is-today strong{background:var(--accent);color:#fff}.calapp-mcell.is-on{background:#7b68ee0f}.calapp-mcell.is-on strong{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.calapp-mpills{flex-direction:column;gap:3px;min-width:0;margin-top:4px;display:flex}.calapp-mpill{text-align:left;cursor:pointer;color:inherit;white-space:nowrap;border:0;border-radius:6px;min-width:0;max-width:100%;padding:2px 5px 2px 7px;font-family:inherit;font-size:10px;font-weight:600;line-height:1.2;display:block;position:relative;overflow:hidden}.calapp-mpill .calapp-etitle,.calapp-mpill .calapp-esub{white-space:nowrap;text-overflow:clip;align-items:center;gap:4px;max-width:100%;display:flex;overflow:hidden}.calapp-mpill .calapp-ename{text-overflow:clip;white-space:nowrap;overflow:hidden}.calapp-mpill .calapp-tag{padding:1px 5px;font-size:9px}.calapp-mpill .calapp-esub,.calapp-mcell.is-on .calapp-mpill{font-size:9px}.calapp-mpills>em{color:var(--text-muted);font-size:10px;font-style:normal}.calapp-mlist{border:1px solid var(--border);box-shadow:var(--shadow-sm);background:#fff;border-radius:12px;margin:20px 0 0;padding:0}.calapp-mcluster{grid-template-columns:repeat(var(--n,1), minmax(0, 1fr));border-bottom:1px solid var(--border);display:grid}.calapp-mcluster:last-of-type{border-bottom:none}.calapp-mrow{width:100%;min-width:0;color:var(--text-primary);background:0 0;border:0;grid-template-columns:6px 1fr 16px;align-items:start;gap:10px;padding:16px 8px;display:grid}.calapp-mcluster[data-n="2"] .calapp-mrow,.calapp-mcluster[data-n="3"] .calapp-mrow{gap:6px;padding:16px 6px}.calapp-mcluster .calapp-mrow+.calapp-mrow{border-left:1px solid var(--border)}.calapp-mrow i{border-radius:4px;align-self:stretch;width:4px;height:100%;min-height:28px;display:block}.calapp-mcopy{flex-direction:column;gap:2px;width:100%;min-width:0;display:flex;overflow:hidden}.calapp-mrow .calapp-copy{align-items:stretch;width:100%;max-width:100%}.calapp-mrow .calapp-etitle{font-size:15px}.calapp-mrow .calapp-tag{flex-shrink:0;font-size:13px}.calapp-mrow .calapp-esub{font-size:14px}.calapp-mrow .calapp-ename,.calapp-mrow .calapp-esub,.calapp-mrow .calapp-enroll{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.calapp-mcluster[data-n="2"] .calapp-etitle,.calapp-mcluster[data-n="3"] .calapp-etitle{font-size:14px}.calapp-mrow strong{font-size:15px}.calapp-mrow .calapp-enroll{font-size:13px}.calapp-mrow>em{color:var(--text-muted);font-size:16px;font-style:normal}.calapp-enrolls{flex-direction:column;gap:2px;min-width:0;margin-top:4px;display:flex}.calapp-enroll{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:6px;min-width:0;padding:3px 6px 3px 10px;font-size:12px;font-weight:600;line-height:1.35;display:block;position:relative;overflow:hidden}.calapp-block.is-enroll{z-index:2;padding:4px 8px 4px 10px}.calapp-empty{color:var(--text-muted);text-align:center;padding:28px 16px;font-size:16px;line-height:1.5}.calapp-madd{background:var(--accent-soft);width:100%;color:var(--accent);border-radius:8px;margin-top:6px;padding:10px;font-size:13px;font-weight:700}.calapp-nav{border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:#fff;grid-template-columns:repeat(5,1fr);display:grid}.calapp-nav button{color:var(--text-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:8px;padding:8px 10px;font-size:13px;font-weight:600}.calapp-nav button.on{background:var(--accent-soft);color:var(--accent)}.calapp-nav .is-plus{background:var(--accent);color:#fff;border-radius:10px;justify-self:center;width:40px;height:40px;padding:0;font-size:20px;font-weight:700}.calform.is-pop{z-index:auto;background:0 0;position:static;inset:auto}.calform.is-pop .calform-body{padding:8px 0 0;overflow:visible}.calform.is-pop .calform-label:first-child{margin-top:0}.calform.is-view{flex-direction:column;display:flex}.calform-view-when{align-items:center;gap:8px;margin-top:2px;display:flex}.calform-view-color{border-radius:50%;flex-shrink:0;width:12px;height:12px}.calform-view-note{color:var(--text-secondary);white-space:pre-wrap;margin:2px 0 8px;font-size:13px;line-height:1.5}.calform.is-pop .slot-pop-actions{justify-content:flex-end;margin-top:12px}.calform.is-pop .slot-pop-text-danger{margin-right:auto}.calform-error{background:var(--danger-soft);color:var(--danger);border-radius:8px;margin:8px 16px 0;padding:8px 10px;font-size:13px;font-weight:600;line-height:1.45}.calform-top{border-bottom:1px solid var(--border);grid-template-columns:72px 1fr 72px;align-items:center;padding:12px 14px;display:grid}.calform-top button,.calform-bottom button{color:var(--text-secondary);cursor:pointer;font:inherit;background:0 0;border:0;font-weight:600}.calform-top strong{text-align:center;font-size:14px}.calform-top .is-save{color:var(--accent);text-align:right;font-weight:700}.calform-body{flex-direction:column;flex:1;gap:8px;padding:16px;display:flex;overflow:auto}.calform-label{color:var(--text-secondary);margin-top:6px;font-size:12px;font-weight:600}.calform input,.calform select,.calform textarea{border:1px solid var(--border);color:var(--text-primary);background:#fff;border-radius:8px;padding:10px 12px}.calform-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.calform .mt-clock{margin:4px 0 2px}.calform .mt-clock-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"start arrow end""dur dur dur"}.calform .mt-clock-start{grid-area:start}.calform .mt-clock-arrow{grid-area:arrow}.calform .mt-clock-end{grid-area:end}.calform .mt-clock-dur{grid-area:dur}.calform .mt-clock-dur .mt-time-pill{width:100%}.calform .mt-clock .hh-time select{box-shadow:none;background:0 0;border:none;padding:0 4px}.calform .mt-dur{margin-top:10px}.calform .mt-dur-btns{grid-template-columns:repeat(3,1fr);display:grid}.calform .mt-warn{margin:8px 0 0}.calform-seg{gap:8px;display:flex}.calform .sp-browse{max-height:160px}.calform-seg button{border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);cursor:pointer;border-radius:8px;flex:1;padding:8px 6px;font-size:13px;font-weight:600}.calform-seg button.on{color:var(--text-primary);border-color:var(--accent);box-shadow:var(--shadow-sm);background:#fff}.calform-seg button:disabled{cursor:default}.calform-seg button:disabled:not(.on){opacity:.45}.calform-hint{color:var(--text-secondary);margin:0;font-size:13px}.calform-period{flex-direction:column;gap:8px;display:flex}.calform.is-pop .hhs.is-pick .hhs-track{grid-template-columns:repeat(auto-fill,minmax(5.2rem,1fr));gap:6px}.calform-check{align-items:center;gap:8px;font-size:14px;display:flex}.calform-who{flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:600;display:flex}.calform-who-item{align-items:center;gap:6px;display:inline-flex}.calform-colors{flex-wrap:wrap;gap:8px;display:flex}.calform-colors button{cursor:pointer;border:2px solid #0000;border-radius:50%;width:22px;height:22px}.calform-colors button.on{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.calform-bottom{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fff;gap:8px;display:flex}.calform-bottom .is-add{background:var(--accent);color:#fff;border-radius:10px;flex:1;padding:12px;font-weight:700}.calform-bottom .is-del{color:var(--danger);padding:12px 16px}@media (width<=768px){.calapp{border-radius:12px;min-height:calc(100dvh - 140px)}.calapp-head{padding:8px 6px 6px}.calapp-month{padding:0}.calapp-mcell{min-height:72px;padding:2px 1px 3px}.calapp-mpill{border-radius:4px;padding:1px 2px 1px 5px}}.rf-rules{color:#3d4450;background:#f4f5f8;border:1px solid #d9dce3;border-radius:10px;margin-bottom:16px;padding:14px 16px;font-size:14px;line-height:1.55}.rf-rules p{margin:0}.rf-rules p+p{margin-top:6px}.rf-field{flex-direction:column;gap:6px;display:flex}.rf-label{color:var(--text-primary);font-size:13px;font-weight:600}.rf-pick{position:relative}.rf-pick input{width:100%;max-width:none}.rf-pick-list{z-index:30;border:1px solid var(--border);max-height:280px;box-shadow:var(--shadow-md);background:#fff;border-radius:10px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto}.rf-pick-opt{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:none;border-radius:8px;padding:10px 12px;font-size:14px;display:block}.rf-pick-opt:hover,.rf-pick-opt.is-on{background:var(--accent-soft)}.rf-pick-opt small{color:var(--text-secondary);margin-top:2px;font-size:12px;display:block}.rf-pick-empty{color:var(--text-secondary);padding:10px 12px;font-size:13px}.rf-picked{border:1px solid var(--border);background:#fff;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.rf-picked b{font-size:15px}.rf-picked span{color:var(--text-secondary);font-size:13px}.rf-ghost{border:1px solid var(--border);height:36px;color:var(--text-primary);cursor:pointer;background:#fff;border-radius:8px;padding:0 12px;font-size:13px;font-weight:600}.rf-ghost:hover{background:var(--bg-elevated)}.rf-ghost:focus-visible,.rf-btn:focus-visible,.rf-pick-opt:focus-visible,.rf-filter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rf-summary{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px 0;margin-bottom:16px;padding:10px 14px;font-size:13px;line-height:1.45;display:flex}.rf-summary.is-warn{background:var(--warning-soft);border-color:#f6c34373}.rf-summary.is-cap{background:var(--danger-soft);border-color:#e74c3c47}.rf-sep{color:var(--text-muted);padding:0 8px}.rf-summary-note{color:#8a6a10;width:100%;margin:4px 0 0;font-size:12px;font-weight:600}.rf-summary.is-cap .rf-summary-note{color:var(--danger)}.rf-lessons h3{margin:0 0 4px;font-size:16px}.rf-range{color:var(--text-primary);margin:0 0 6px;font-size:13px}.rf-hint{color:var(--text-secondary);margin:0 0 14px;font-size:13px;line-height:1.5}.rf-tools{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.rf-filter{border:1px solid var(--border);cursor:pointer;height:34px;color:var(--text-secondary);background:#fff;border-radius:999px;padding:0 12px;font-size:13px}.rf-filter.is-on{background:var(--accent-soft);border-color:var(--border-accent);color:var(--accent);font-weight:600}.rf-group-title{color:var(--text-primary);margin:16px 0 8px;font-size:13px;font-weight:700}.rf-group-title:first-child{margin-top:0}.rf-item{border-bottom:1px solid var(--border);padding:14px 0}.rf-item:last-child{border-bottom:none}.rf-item-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;margin-bottom:8px;display:flex}.rf-item-title{font-size:15px;font-weight:700}.rf-pills{flex-wrap:wrap;gap:6px;display:flex}.rf-pill{border-radius:999px;align-items:center;min-height:22px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.rf-pill.is-refund{color:#1f9d57;background:#e8f8ee}.rf-pill.is-done{color:#4338ca;background:#eef2ff}.rf-pill.is-soon{color:#1d6fa5;background:#e8f1fb}.rf-pill.is-cancel{color:#6b7280;background:#f3f4f6}.rf-pill.is-expired{color:#c27812;background:#fff4e5}.rf-pill.is-block{color:#c0392b;background:#fdecea}.rf-meta{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;font-size:13px;display:grid}.rf-meta span{color:var(--text-muted);margin-bottom:2px;font-size:12px;font-weight:600;display:block}.rf-block{color:#8a4b12;margin-top:8px;font-size:13px}.rf-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.rf-btn{border-radius:var(--radius-sm);cursor:pointer;border:none;height:36px;padding:0 14px;font-size:13px;font-weight:600}.rf-btn:disabled{opacity:.45;cursor:not-allowed}.rf-btn.is-brand{background:var(--accent);color:#fff}.rf-btn.is-brand:hover:not(:disabled){background:#6a57e0}.rf-btn.is-danger{background:var(--danger);color:#fff}.rf-btn.is-danger:hover:not(:disabled){background:#c0392b}.rf-btn.is-ghost{color:var(--text-primary);border:1px solid var(--border);background:#fff}.rf-empty{text-align:center;padding:22px 8px}.rf-empty p{color:var(--text-secondary);margin:0 0 12px;font-size:14px;line-height:1.55}.rf-empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.rf-ok{background:var(--success-soft);border:1px solid #2ecc7147;border-radius:10px;margin-bottom:16px;padding:14px 16px}.rf-ok h3{color:#168a48;margin:0 0 6px;font-size:15px}.rf-ok p{color:var(--text-primary);margin:0;font-size:13px}.rf-ok code{letter-spacing:.02em;font-family:inherit;font-weight:700}.rf-mask{z-index:40;background:#00000059;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.rf-modal{width:min(440px,100%);max-height:90vh;padding:20px;overflow:auto}.rf-modal h3{margin:0 0 12px;font-size:17px}.rf-modal.is-danger h3{color:var(--danger)}.rf-dl{grid-template-columns:7.5em 1fr;gap:8px 12px;margin:0 0 14px;font-size:13px;display:grid}.rf-dl dt{color:var(--text-muted);font-weight:600}.rf-dl dd{color:var(--text-primary);margin:0}.rf-modal-actions{gap:8px;margin-top:16px;display:flex}.rf-modal-actions .rf-btn{flex:1}@media (width<=640px){.rf-item-top{flex-direction:column}.rf-dl{grid-template-columns:1fr;gap:2px}.rf-modal-actions{flex-direction:column-reverse}}.msp-keep{white-space:nowrap}.msp-cancel-modal{width:min(420px,92vw)}.msp-cancel-modal .mt-modal-actions{flex-direction:column}.msp-cancel-modal .mt-modal-actions .btn-primary,.msp-cancel-modal .mt-modal-actions .mt-ghost{white-space:nowrap;box-sizing:border-box;width:100%;height:42px;padding:0 16px;line-height:1.2}.msp-cancel-modal .btn-primary.is-danger{background:var(--danger)}.msp-cancel-modal .btn-primary.is-danger:hover{box-shadow:none;background:#c0392b}.msp-course{margin:0 0 10px;font-size:18px;font-weight:700;line-height:1.35}.msp-summary{flex-wrap:wrap;align-items:baseline;gap:10px 20px;margin-bottom:18px;padding:14px 16px;display:flex}.msp-summary b{font-size:20px}.msp-summary span{color:var(--text-secondary);font-size:13px}.msp-sec{margin-bottom:16px}.msp-erase-block{color:var(--danger);margin-top:10px}.msp-sync-check{align-items:flex-start;gap:8px;margin:4px 0 12px;font-size:14px;line-height:1.45;display:flex}.msp-sync-check input{margin-top:3px}.msp-sec h3{margin:0 0 10px;font-size:15px}.msp-sec-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.msp-sec-head h3{margin:0}.msp-join-tabs{border-bottom:1px solid var(--border);gap:4px;margin:0 0 4px;display:flex}.msp-join-tab{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px;font-size:13px;font-weight:600}.msp-join-tab.is-on{color:var(--accent);border-bottom-color:var(--accent)}.msp-join-tab em{opacity:.72;margin-left:5px;font-style:normal;font-weight:700}.msp-join-more{width:100%;color:var(--accent);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:8px 10px;font-size:13px;font-weight:600;display:block}.msp-join-more:hover{text-decoration:underline}.msp-sync-link{color:var(--accent);font-size:14px;font-weight:700;text-decoration:none}.msp-sync-link:hover{text-decoration:underline}.msp-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.msp-row .mt-field{flex:1;min-width:120px}.msp-row .mt-field>select,.msp-row .mt-field>input,.msp-row .hh-time{box-sizing:border-box;height:40px}.msp-row .mt-field>select,.msp-row .mt-field>input{padding:0 12px}.msp-confirm{box-sizing:border-box;white-space:nowrap;flex:none;height:40px;padding:0 16px;font-size:14px;line-height:1}.msp-join{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.msp-join:last-child{border-bottom:none}.msp-join-meta{min-width:0}.msp-join-name{color:var(--accent);font-weight:600;text-decoration:none}.msp-join-name:hover{text-decoration:underline}.msp-join-facts{color:var(--text-muted);word-break:break-word;margin:3px 0 0;font-size:13px}.msp-join-time{color:var(--text-secondary);margin:4px 0 0;font-size:13px}.msp-join-acts{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;display:flex}.msp-credit{margin:8px 0 12px;font-size:13px;line-height:1.55}.msp-credit p{margin:0 0 6px}.msp-credit-opts{flex-direction:column;gap:8px;margin:8px 0;display:flex}.msp-credit-opts label{align-items:center;gap:8px;display:flex}.msp-picked{margin:10px 0;font-size:13px}.msp-picked span{color:var(--text-secondary);margin-left:4px}.msp-picked .btn-link{margin-left:8px}.msp-student-hits-wrap{border:1px solid var(--border);border-radius:8px;flex-direction:column;min-height:0;max-height:220px;margin:0 0 8px;display:flex}.msp-student-hits{min-height:0;margin:0;padding:0;list-style:none;overflow:auto}.msp-student-hits-wrap .msp-join-more{border-top:1px solid var(--border);border-radius:0 0 8px 8px;flex-shrink:0;margin:0}.msp-student-hits li{border-bottom:1px solid var(--border)}.msp-student-hits li:last-child{border-bottom:none}.msp-student-hits button{text-align:left;cursor:pointer;background:0 0;border:0;align-items:flex-start;gap:8px;width:100%;padding:8px 10px;display:flex}.msp-student-hits button:hover{background:var(--bg-elevated)}.msp-student-hit-main{flex-direction:column;gap:2px;min-width:0;display:flex}.msp-student-hits em{color:var(--text-muted);word-break:break-word;font-size:12px;font-style:normal}.msp-student-hits button>span:last-child{color:var(--text-secondary);flex-shrink:0;margin-left:auto;font-size:12px}.msp-fee-warn{color:#8a6d00;background:var(--warning-soft);border-radius:8px;margin:8px 0 16px;padding:10px 12px;font-size:13px;line-height:1.5}.msp-warn{background:var(--warning-soft);border:1px solid #b86e0061}.msp-warn h3{color:#9a6200}.msp-warn .btn-primary{background:#c47d0e}.msp-warn .btn-primary:hover{box-shadow:none;background:#a86a0c}.card.msp-warn:hover{border-color:#b86e009e}.msp-danger{background:var(--danger-soft);border:1px solid #e74c3c47}.msp-danger h3{color:var(--danger)}.msp-danger .btn-primary{background:var(--danger)}.msp-danger .btn-primary:hover{box-shadow:none;background:#c0392b}.card.msp-danger:hover{border-color:#e74c3c8c}.ac-action-row{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.ac-action-btn{border-radius:var(--radius-sm);cursor:pointer;background:#fff;border:1.5px solid #0000;min-width:120px;padding:8px 16px;font-size:13px;font-weight:600;line-height:1.2;transition:background .15s,color .15s,box-shadow .15s,border-color .15s,transform .15s}.ac-action-btn.is-add:not(.is-on){color:var(--success);background:#fff;border-color:#2ecc7180}.ac-action-btn.is-add:not(.is-on):hover{background:var(--success-soft)}.ac-action-btn.is-add.is-on{color:#fff;background:#1b9a52;border-color:#168a48;transform:translateY(-1px);box-shadow:0 4px 14px #1b9a5261,0 0 0 3px #2ecc7147}.ac-action-btn.is-add.is-on:hover{background:#168a48}.ac-action-btn.is-reduce:not(.is-on){color:var(--danger);background:#fff;border-color:#e74c3c73}.ac-action-btn.is-reduce:not(.is-on):hover{background:var(--danger-soft)}.ac-action-btn.is-reduce.is-on{color:#fff;background:#c0392b;border-color:#a93226;transform:translateY(-1px);box-shadow:0 4px 14px #c0392b66,0 0 0 3px #e74c3c47}.ac-action-btn.is-reduce.is-on:hover{background:#a93226}.ac-form{flex-direction:column;align-items:stretch;max-width:420px;display:flex}.ac-form label{color:var(--text-secondary);margin-bottom:6px;font-size:13px;display:block}.ac-form input,.ac-form select{width:100%;max-width:none;margin:0 0 14px;display:block}.ac-form .ac-next{color:var(--text-secondary);margin:0 0 14px;font-size:13px}.ac-form .ac-next.is-negative{color:var(--danger)}.ac-form>.btn-primary{align-self:flex-start}.ac-confirm h3{margin:0 0 12px;font-size:16px}.ac-confirm h3.is-reduce{color:var(--danger)}.ac-confirm p{color:var(--text-secondary);margin:0 0 8px;font-size:13px;line-height:1.5}.ac-confirm .ac-confirm-warn{color:var(--danger);background:var(--danger-soft);border-radius:8px;padding:8px 10px}.ac-confirm .mt-modal-actions{margin-top:8px}.ac-mode-hint{border-radius:8px;align-items:center;gap:8px;margin:0 0 14px;padding:8px 12px;font-size:13px;font-weight:600;line-height:1.4;display:flex}.ac-mode-hint.is-add{color:#168a48;background:var(--success-soft)}.ac-mode-hint.is-reduce{color:#a93226;background:var(--danger-soft)}.ac-mode-hint.is-pulse{animation:.9s ac-hint-pulse}@keyframes ac-hint-pulse{0%{box-shadow:0 0 #c0392b59}70%{box-shadow:0 0 0 8px #c0392b00}to{box-shadow:none}}.ac-mode-hint.is-add.is-pulse{animation-name:ac-hint-pulse-add}@keyframes ac-hint-pulse-add{0%{box-shadow:0 0 #1b9a5259}70%{box-shadow:0 0 0 8px #1b9a5200}to{box-shadow:none}}.btn-primary.ac-confirm-danger{background:var(--danger)}.btn-primary.ac-confirm-danger:hover{background:#c0392b;box-shadow:0 4px 14px #e74c3c4d}.ac-queue-wrap{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.ac-queue-table{border-collapse:collapse;background:var(--bg-card);border-radius:10px;width:max-content;min-width:1280px}.ac-queue-table th,.ac-queue-table td{white-space:nowrap;vertical-align:middle}.ac-queue-row{border-bottom:1px solid var(--border);cursor:pointer}.ac-queue-row:hover{background:var(--accent-soft,#f3f0ff)}.ac-queue-row .ac-ops{cursor:default}.ac-note{white-space:pre-wrap;word-break:break-word;max-width:200px;line-height:1.4}.ac-hours-list{gap:6px;margin:0 0 14px;padding:0;list-style:none;display:grid}.ac-hours-list li{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:6px 0;font-size:13px;display:flex}.ac-detail-mask{z-index:1000;background:#181c2447;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.ac-detail{background:var(--bg-card,#fff);box-sizing:border-box;border-radius:14px;flex-direction:column;width:min(460px,100% - 16px);max-height:min(88vh,720px);padding:22px 24px 18px;display:flex}.ac-detail h3{flex-shrink:0;margin:0 0 14px;font-size:16px}.ac-detail-body{min-height:0;padding-right:2px;overflow:auto}.ac-detail-body p{grid-template-columns:7em minmax(0,1fr);gap:10px 14px;margin:0 0 10px;font-size:13px;line-height:1.5;display:grid}.ac-detail-body p span{color:var(--text-muted);white-space:nowrap}.ac-detail-proof{object-fit:contain;object-position:center;background:var(--bg-elevated);cursor:zoom-in;border-radius:8px;width:100%;max-height:160px;margin:8px 0 4px;display:block}.ac-detail-actions{border-top:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:8px;margin-top:14px;padding-top:12px;display:flex}.ac-guest-badge{color:#92400e;vertical-align:middle;background:#fef3c7;border-radius:999px;margin-right:6px;padding:4px 7px;font-size:11px;font-weight:600;line-height:1;display:inline-block}.ac-guest-sub{color:var(--text-muted);margin-top:3px;font-size:12px;display:block}.ac-guest-hint{color:var(--accent);margin-top:3px;font-size:12px;display:block}.ac-queue-wrap .ac-guest-cell{white-space:normal;min-width:180px}.ac-link{width:min(600px,100% - 16px);max-height:min(92vh,820px)}.ac-link .ac-detail-body p{grid-template-columns:none;margin:0 0 12px;font-size:13px;line-height:1.55;display:block}.ac-link .ac-link-hint{color:var(--text-secondary);background:var(--bg-elevated);border-radius:8px;padding:8px 10px}.ac-link-claim{background:var(--bg-elevated);border-radius:10px;flex-direction:column;flex-shrink:0;gap:4px;margin-bottom:12px;padding:10px 12px;display:flex}.ac-link-claim>div{align-items:baseline;gap:10px;font-size:14px;display:flex}.ac-link-claim>div span{color:var(--text-secondary);font-variant-numeric:tabular-nums}.ac-link-claim small{color:var(--text-muted);font-size:12px}.ac-link-tabs{flex-shrink:0;margin-bottom:12px}.ac-link-matches{margin-bottom:14px}.ac-link-matches>p{color:var(--text-secondary);margin:0 0 6px;font-size:13px}.ac-link-match{text-align:left;border:1.5px solid var(--accent);background:var(--accent-soft,#f3f0ff);cursor:pointer;width:100%;font:inherit;border-radius:10px;align-items:baseline;gap:10px;margin-bottom:6px;padding:9px 12px;display:flex}.ac-link-match:hover{filter:brightness(.97)}.ac-link-match small{color:var(--text-secondary);font-size:12px}.ac-link-done .ac-link-done-title{margin:4px 0 10px;font-size:15px;font-weight:700}.ac-link-done .ac-confirm-warn{color:var(--danger);background:var(--danger-soft);border-radius:8px;margin:0 0 10px;padding:8px 10px;font-size:13px}.ac-cred{border:1px dashed var(--accent);background:var(--accent-soft,#f3f0ff);border-radius:10px;margin:0 0 12px;padding:12px 14px}.ac-cred>p{color:var(--text-secondary);margin:0 0 8px;font-size:13px}.ac-cred-row{grid-template-columns:6.5em minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;display:grid}.ac-cred-row span{color:var(--text-muted)}.ac-cred-row code{letter-spacing:.04em;-webkit-user-select:all;user-select:all;background:#fff;border-radius:6px;padding:4px 8px;font-size:16px;font-weight:700}.ac-detail-body .ac-confirm-warn{color:var(--danger);background:var(--danger-soft);border-radius:8px;padding:8px 10px;font-size:13px}.settings-list{flex-direction:column;gap:12px;max-width:640px;display:flex}.settings-item{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;padding:16px 18px;display:flex}.settings-item-copy h2{margin:0;font-size:15px;font-weight:700}.settings-item-copy p{color:var(--text-secondary);margin:4px 0 0;font-size:13px}.settings-hours{color:var(--text-secondary);align-items:center;gap:8px;font-size:13px;font-weight:600;display:inline-flex}.settings-hours select,.settings-hours input[type=number]{width:auto;min-width:88px;height:36px;padding:0 8px;font-size:13px;font-weight:600}.settings-item.is-stack{flex-direction:column;align-items:stretch}.settings-pay{flex-direction:column;gap:8px;width:100%;display:flex}.settings-pay textarea{resize:vertical;width:100%;min-height:280px;font-family:inherit;font-size:13px;line-height:1.55}.settings-pay-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-deep:#f7f8fa;--bg-surface:#f1f2f4;--bg-card:#fff;--bg-card-hover:#fff;--bg-elevated:#f1f2f4;--accent:#7b68ee;--accent-soft:#7b68ee1f;--accent-gold:#7b68ee;--accent-gold-soft:#7b68ee1a;--text-primary:#292d34;--text-secondary:#656f7d;--text-muted:#87909a;--text-accent:#7b68ee;--success:#2ecc71;--success-soft:#2ecc711f;--warning:#f6c343;--warning-soft:#f6c34329;--danger:#e74c3c;--danger-soft:#e74c3c1a;--border:#e8eaed;--border-accent:#7b68ee59;--shadow-sm:0 1px 2px #181c240a, 0 1px 3px #181c240d;--shadow-md:0 8px 24px #181c2414;--shadow-glow:0 0 20px #7b68ee1f;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--font-display:"Noto Sans TC", "Inter", sans-serif;--font-body:"Inter", "Noto Sans TC", sans-serif;--sidebar-bg:#f9f9f9;--sidebar-width:248px;--sidebar-collapsed-width:72px}*{box-sizing:border-box;margin:0;padding:0}html,body{touch-action:manipulation;overscroll-behavior:none}@keyframes fadeInUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulseGlow{0%,to{box-shadow:0 0 8px #7b68ee33}50%{box-shadow:0 0 20px #7b68ee66}}body{font-family:var(--font-body);background:var(--bg-deep);color:var(--text-primary);background-image:radial-gradient(at 20% 0,#7b68ee0a 0%,#0000 50%),radial-gradient(at 80% 100%,#2ecc7108 0%,#0000 50%);min-height:100vh;line-height:1.6}#root{min-height:100vh}.page-container{min-width:0;max-width:1280px;margin:0 auto;padding:8px 4px 88px;animation:.4s fadeIn}.card{background:var(--bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:14px;padding:20px;transition:transform .2s,box-shadow .25s,border-color .25s}.card:hover{box-shadow:var(--shadow-md);border-color:var(--border-accent);transform:translateY(-2px)}.card-animate{animation:.5s both fadeInUp}h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em}a{color:var(--accent);text-decoration:none}a:hover{color:#5b4cdb}input,select,textarea{font-family:var(--font-body);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:#fff;outline:none}input::placeholder{color:var(--text-muted)}textarea{resize:vertical;min-height:76px}.hh-time{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:2px;height:38px;padding:0 8px;display:inline-flex}.hh-time select{width:auto;min-width:3.4em;box-shadow:none;background:0 0;border:none;padding:6px 4px}.hh-time select:focus{box-shadow:none;background:0 0}.hh-time-sep{color:var(--text-muted);padding:0 2px;font-weight:700}.hh-range{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.hh-range label{color:var(--text-secondary);flex-direction:column;gap:4px;width:auto;font-size:12px;display:flex}.hh-range-dash{color:var(--text-muted);padding-bottom:10px;font-weight:700}.hh-range-hours{color:var(--text-primary);padding-bottom:8px;font-size:13px;font-weight:700}.hh-range.is-read{align-items:flex-end;gap:16px;margin-top:32px}.hh-range.is-read span{flex-direction:column;gap:6px;display:flex}.hh-range.is-read small{color:var(--text-muted);font-size:13px;font-weight:600}.hh-range.is-read b{color:var(--text-primary);font-size:24px;font-weight:800;line-height:1.2}.hh-range.is-read .hh-range-dash{color:var(--text-primary);padding-bottom:4px;font-size:24px;font-weight:800}.hh-range-change{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;column-gap:12px;margin-top:32px;display:grid}.hh-range-side{flex-direction:column;align-items:center;gap:6px;width:max-content;max-width:100%;display:flex}.hh-range-side.is-from{justify-self:start}.hh-range-side:not(.is-from){justify-self:end}.hh-range-change .hh-range.is-read{margin-top:0}.hh-range-title{color:var(--text-secondary);margin:0;font-size:13px;font-weight:700}.hh-range-total{color:var(--text-muted);margin:0;font-size:13px;font-weight:600}.hh-range.is-read.is-from b,.hh-range.is-read.is-from .hh-range-dash{color:var(--text-muted);font-size:18px;font-weight:700}.hh-range-arrow{color:var(--text-muted);justify-self:center;padding-bottom:2px;font-size:22px;font-weight:800;line-height:1}.join-title{color:var(--text-primary);margin:0 0 18px;font-size:22px;font-weight:700}.join-meta{background:var(--bg-elevated);border-radius:var(--radius-md);margin:0 0 24px;padding:20px 22px;font-size:16px}.join-meta p{margin:0 0 10px;line-height:1.7}.join-meta p:last-child{margin-bottom:0}.join-meta .join-k{color:var(--text-muted)}.join-meta .join-v{color:var(--text-primary);font-weight:500}.join-meta .join-v.is-accent{color:var(--accent-gold);font-weight:500}.join-meta-warn{color:var(--warning);font-weight:600}.join-facts{border-bottom:1px solid var(--border);color:var(--text-secondary);flex-wrap:wrap;gap:6px 16px;margin:0 0 20px;padding:0 0 14px;font-size:13px;display:flex}.join-facts b{color:var(--text-primary);font-weight:600}.join-pick-label{color:var(--text-primary);margin-bottom:10px;font-size:15px;font-weight:700;display:block}.join-bill{border-radius:var(--radius-sm);background:var(--accent-soft);margin-top:14px;padding:14px}.join-bill-row{color:var(--text-secondary);justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;font-size:13px;display:flex}.join-bill-row b{color:var(--text-primary);text-align:right;font-weight:600}.join-bill-change{border-top:1px solid color-mix(in srgb, var(--accent) 22%, transparent);color:var(--text-primary);justify-content:space-between;align-items:baseline;gap:12px;margin:10px 0 0;padding-top:10px;font-size:14px;font-weight:700;display:flex}.join-bill-change b{font-size:18px;font-weight:800}.join-bill-change.is-return b{color:var(--success)}.join-bill-change.is-deduct b{color:var(--danger)}.join-bill-total{justify-content:space-between;align-items:baseline;gap:12px;margin-top:10px;display:flex}.join-bill-total span{color:var(--text-primary);font-size:14px;font-weight:700}.join-bill-total strong{color:var(--accent);letter-spacing:.01em;font-size:24px;font-weight:800}.join-bill-note{color:var(--text-muted);margin:8px 0 0;font-size:12px}.join-cancel{border-top:1px dashed color-mix(in srgb, var(--danger) 28%, var(--border));margin-top:48px;padding:28px 0 0}.join-cancel-note{color:var(--text-muted);margin:0 0 14px;font-size:13px;line-height:1.6}.join-cancel-stat{color:var(--text-secondary);margin:-4px 0 14px;font-size:13px;line-height:1.6}.join-cancel-stat b{color:var(--text-primary);font-weight:800}.join-cancel-stat.is-warn,.join-cancel-stat.is-warn b{color:var(--danger)}.join-cancel-btn{width:100%;color:var(--danger);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px dashed #e74c3c66;padding:10px 12px;font-size:14px;font-weight:600}.join-cancel-btn:hover:not(:disabled){background:var(--danger-soft)}.join-cancel-btn:disabled{cursor:not-allowed;opacity:.5}.join-cancel-confirm{border-radius:var(--radius-sm);background:var(--danger-soft);border:1px solid #e74c3c47;padding:14px 16px}.join-cancel-confirm p{color:var(--danger);margin:0 0 14px;font-size:14px;font-weight:600;line-height:1.6}.join-cancel-actions{gap:10px;display:flex}.join-cancel-back{color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:#fff;flex:1;padding:10px 12px;font-size:14px;font-weight:600}.join-extend-confirm{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--accent,#7b68ee) 10%, #fff);border:1px solid color-mix(in srgb, var(--accent,#7b68ee) 28%, #fff);margin-top:12px;padding:14px 16px}.join-extend-confirm p{color:var(--text-primary);margin:0 0 14px;font-size:14px;font-weight:600;line-height:1.6}.join-extend-go{flex:1.4;padding:10px 12px}.join-cancel-btn.is-confirm{background:var(--danger);color:#fff;border-style:solid;border-color:var(--danger);flex:1.4}.join-cancel-btn.is-confirm:hover:not(:disabled){color:#fff;background:#c0392b;border-color:#c0392b}input[type=checkbox],input[type=radio]{width:auto;height:auto;accent-color:var(--accent);box-shadow:none;background:0 0;border:none;border-radius:0;flex-shrink:0;margin:0;padding:0}input[type=checkbox]:focus,input[type=radio]:focus{box-shadow:none;background:0 0}button{font-family:var(--font-body);cursor:pointer;transition:all .2s}.btn-primary{background:var(--accent);color:#fff;border-radius:var(--radius-sm);letter-spacing:.02em;border:none;padding:12px 24px;font-size:15px;font-weight:600}.btn-primary:hover{background:#6a57e0;box-shadow:0 4px 14px #7b68ee4d}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.badge-success{letter-spacing:.02em;background:var(--success-soft);color:#1ea557;border:1px solid #2ecc712e;border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.badge-info{letter-spacing:.02em;color:#2e86c1;background:#3498db1f;border:1px solid #3498db38;border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.badge-muted{letter-spacing:.02em;color:var(--text-muted);background:#8b949e1a;border:1px solid #8b949e26;border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.badge-warning{letter-spacing:.02em;background:var(--warning-soft);color:#c39212;border:1px solid #f6c34347;border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.profile-facts{flex-direction:column;gap:4px;min-width:0;display:flex}.profile-facts-grid{grid-template-columns:1fr 1fr;gap:10px 28px;display:grid}.profile-facts-section{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.profile-facts-section h4{color:var(--text-primary);margin:0 0 10px;font-size:13px;font-weight:600}.profile-facts-empty{color:var(--text-muted);margin:0;font-size:13px}.profile-hours-row{justify-content:space-between;align-items:center;gap:12px;padding:4px 0;font-size:14px;display:flex}.profile-fact{grid-template-columns:5.5em 1fr;align-items:start;gap:8px 14px;min-width:0;font-size:14px;display:grid}.profile-fact.is-wide{grid-column:1/-1}.profile-fact>span:first-child{color:var(--text-muted);padding-top:1px;font-size:13px}.profile-fact>div{word-break:break-word;min-width:0}@media (width<=720px){.profile-facts-grid{grid-template-columns:1fr}}.member-hero{align-items:center;gap:14px;margin:-6px 0 18px;display:flex}.member-hero h2{margin:0;font-size:20px;font-weight:700;line-height:1.3}.member-meta{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 0;font-size:13px;display:flex}.member-section{margin-bottom:16px}.member-section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.member-section-head h3{margin:0;font-size:16px}.member-section-actions{gap:10px;margin-top:4px;display:flex}.member-cancel{border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 16px}.member-field label{color:var(--text-secondary);margin-bottom:4px;font-size:13px;display:block}.member-value{min-height:22px;margin:0;font-size:15px}.member-pair{grid-template-columns:1fr 1fr;gap:12px 16px;margin-bottom:12px;display:grid}.member-pair .is-wide{grid-column:1/-1}.member-hours{margin-bottom:12px}.profile-hours-row b{color:var(--accent)}.profile-hours-row b.is-negative{color:var(--danger)}.member-block{color:var(--danger);margin-top:10px}.scf-confirm-mask{z-index:1200;background:#181c2466;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.scf-confirm{box-sizing:border-box;width:min(440px,100%);max-height:90vh;padding:22px 24px 18px;overflow:auto}.scf-confirm h3{margin:0 0 4px;font-size:16px}.scf-confirm-sub{color:var(--text-secondary);margin:0 0 14px;font-size:13px;line-height:1.5}.scf-confirm-list{border-top:1px solid var(--border);margin:0;padding:12px 0 4px}.scf-confirm-list>div{grid-template-columns:6em minmax(0,1fr);gap:8px 12px;margin-bottom:8px;font-size:13px;line-height:1.5;display:grid}.scf-confirm-list dt{color:var(--text-muted);white-space:nowrap}.scf-confirm-list dd{word-break:break-word;min-width:0;color:var(--text-primary);margin:0}.scf-confirm-list code{letter-spacing:.04em;background:var(--bg-elevated);border-radius:6px;padding:2px 8px;font-size:14px;font-weight:700}.scf-confirm .member-modal-actions .mt-ghost{white-space:nowrap;flex:none}.member-modal-actions{align-items:stretch;margin-top:16px}.member-modal-actions .mt-ghost,.member-modal-actions .btn-primary{box-sizing:border-box;height:40px;padding:0 16px;font-size:14px;line-height:1}.member-modal-actions .mt-ghost{flex:0 0 88px}.member-modal-actions .btn-primary{flex:1}.member-modal-actions .btn-primary.is-danger{background:var(--danger);color:#fff}.member-modal-actions .btn-primary.is-danger:hover:not(:disabled){box-shadow:none;background:#c0392b}.member-modal-actions .btn-primary:disabled{opacity:1;color:#98a2b3;box-shadow:none;cursor:not-allowed;background:#eceff3}.member-account-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.member-btn-ghost{color:var(--accent);border:1px solid var(--accent);background:#fff}.btn-primary-sm.is-danger,.btn-primary.is-danger{background:var(--danger)}.member-security{flex-direction:column;gap:12px;display:flex}.member-reset{flex-direction:column;align-items:stretch;gap:8px;display:flex}.member-reset .member-field{flex:1;min-width:0}.member-reset>.btn-primary-sm{align-self:flex-end}@media (width<=720px){.member-pair{grid-template-columns:1fr}.member-reset{flex-direction:column;align-items:stretch}}.stat-number{font-family:var(--font-display);color:var(--accent);font-size:28px;font-weight:700}.section-title{font-family:var(--font-display);letter-spacing:-.02em;border-left:none;margin-bottom:16px;padding-left:0;font-size:20px;font-weight:700}.page-header-back{width:28px;height:28px;color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.page-header-back:hover{color:var(--accent);background:0 0}.page-header-back:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:14px;display:grid}.empty-state{color:var(--text-muted);text-align:center;padding:40px 20px;font-style:italic}.page-container table{border-collapse:collapse;background:var(--bg-card);border-radius:var(--radius-md);width:max-content;min-width:100%;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.page-container thead th{text-align:left;color:var(--text-muted);letter-spacing:.02em;border-bottom:1px solid var(--border);white-space:nowrap;background:#fbfbfc;padding:10px 12px;font-size:12px;font-weight:600}.page-container tbody td{border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:middle;padding:12px;font-size:14px}.page-container tbody tr:last-child td{border-bottom:none}.page-container tbody tr{transition:background .15s}.page-container tbody tr:hover{background:#f7f8fa}.table-scroll{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.list-name-link{color:var(--accent);font-weight:600;text-decoration:none}.list-name-link:hover{text-decoration:underline}.list-face-link{border-radius:50%;display:inline-flex}.list-face-link:hover{opacity:.88}.page-container td .ac-note,.page-container .ac-note{white-space:pre-wrap;word-break:break-word}.content-title-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;margin-bottom:22px;padding-bottom:14px;display:flex}.content-title{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:22px;font-weight:700;overflow:hidden}.content-title-sub{max-width:42%;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.content-title-row .page-header-back{flex-shrink:0;margin-left:0}.content-title-row .mh-status{flex-shrink:0}@media (width<=768px){.page-container{padding:4px 0 24px}.content-title{font-size:18px}.content-title-row{margin-bottom:14px;padding-bottom:10px}}.group-perms{margin-bottom:16px}.group-perms-label{color:var(--text-secondary);margin-bottom:8px;font-size:13px;display:block}.group-perms-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.group-perm-card{border:1px solid var(--border);background:var(--bg-elevated);border-radius:10px;padding:12px 14px}.group-perm-title{margin-bottom:4px;font-size:14px;font-weight:600}.group-perm-hint{color:var(--text-muted);margin-bottom:10px;font-size:12px;line-height:1.45}.group-perm-item{cursor:pointer;white-space:nowrap;align-items:center;gap:8px;width:fit-content;margin-bottom:8px;font-size:14px;display:flex}.group-perm-item:last-child{margin-bottom:0}.group-perm-item.is-disabled{opacity:.45;cursor:not-allowed}.group-perm-item span{line-height:1.4}@media (width<=560px){.group-perms-grid{grid-template-columns:1fr}}.list-filters{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.list-filters input[type=search],.list-filters input[type=number],.list-filters select{flex:160px;width:auto;min-width:140px;max-width:280px;padding:8px 12px}.filter-box-toggle{background:var(--bg-elevated);width:auto;min-width:auto;max-width:none;color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;flex:none;padding:8px 14px;font-size:13px;font-weight:600}.filter-box-toggle:hover{border-color:var(--accent)}.filter-box-toggle.is-on{background:var(--accent-soft);color:var(--accent);border-color:var(--border-accent)}.filter-box-hint{color:var(--text-muted);align-self:center;font-size:12px}.filter-box-panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);margin:-6px 0 14px;padding:10px}.list-batch{background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.list-batch .is-danger{color:var(--danger)}.list-check{text-align:center;vertical-align:middle;width:40px}.list-pager{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:14px;font-size:13px;display:flex}.list-pager-nav{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.list-pager-nav button,.list-pager-size select{border:1px solid var(--border);cursor:pointer;min-width:32px;height:32px;color:inherit;background:#fff;border-radius:8px;padding:0 10px;font-size:13px}.list-pager-nav button.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.list-pager-nav button:disabled{opacity:.45;cursor:default}.list-pager-gap{padding:0 4px}.list-pager-size{align-items:center;gap:6px;display:inline-flex}.teacher-face{object-fit:cover;background:var(--bg-elevated);vertical-align:middle;border-radius:50%;flex-shrink:0;display:inline-block}.teacher-face-fallback{letter-spacing:.02em;border:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.activity-mark{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.activity-badge{background:color-mix(in srgb, var(--assigned-color) 12%, white);color:var(--assigned-text,var(--assigned-color));border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.teacher-face-row{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.teacher-face-more{color:var(--text-muted);font-size:10px;font-weight:600}.slot-teacher{color:var(--text-secondary);align-items:center;gap:6px;min-width:0;max-width:100%;font-size:12px;font-weight:600;display:inline-flex}.slot-teacher-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.slot-teacher.is-empty{color:var(--text-muted);font-weight:500}.avatar-picker-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:0;position:relative;overflow:hidden}.avatar-picker-btn .teacher-face{border-radius:50%;width:100%;height:100%}.avatar-picker-btn img.teacher-face{object-fit:cover;display:block}.avatar-picker-btn .teacher-face-fallback{box-sizing:border-box;justify-content:center;align-items:center;padding-bottom:28%;display:flex}.avatar-picker-hint{letter-spacing:.06em;color:#fff;background:#281c088c;justify-content:center;align-items:center;height:28%;margin:0;padding:0;font-size:11px;font-weight:600;line-height:1;display:flex;position:absolute;bottom:0;left:0;right:0}.auth-error{background:var(--danger-soft);color:var(--danger);text-align:center;border-radius:8px;margin:0 0 14px;padding:8px 10px;font-size:13px;font-weight:600;line-height:1.45}.auth-hint{background:var(--accent-soft,#7b68ee1f);color:var(--text-primary);text-align:center;border-radius:8px;margin:0 0 22px;padding:8px 10px;font-size:13px;font-weight:600;line-height:1.45}.form-ok{background:var(--success-soft);color:var(--success);text-align:center;border-radius:8px;margin:0 0 14px;padding:8px 10px;font-size:13px;font-weight:600;line-height:1.45}.page-flash{z-index:2400;border-radius:12px;align-items:flex-start;gap:12px;max-width:min(520px,100vw - 32px);padding:12px 14px;font-size:14px;font-weight:600;line-height:1.45;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #14182029}.page-flash.is-error{color:var(--danger);background:#fff;border:1px solid #e74c3c59}.page-flash.is-ok{color:var(--success);background:#fff;border:1px solid #2ecc7159}.page-flash button{color:inherit;cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 2px;font-size:18px;line-height:1}.app-loader{z-index:2200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#f7f8fa94;justify-content:center;align-items:center;animation:.12s fadeIn;display:flex;position:fixed;inset:0}.app-loader-card{border:1px solid var(--border);box-shadow:var(--shadow-md);color:var(--text-secondary);background:#fff;border-radius:16px;flex-direction:column;align-items:center;gap:12px;padding:22px 28px;font-size:13px;font-weight:600;display:flex}.app-loader-spin{border:3px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite app-spin}@keyframes app-spin{to{transform:rotate(360deg)}}
