:root{--bg: #f6f7f9;--panel: #ffffff;--border: #e3e6ea;--text: #1f2328;--muted: #6b7280;--accent: #278654;--accent-hover: #1f6d44;--accent-soft: #edf7f1;--accent-border: #cbe5d5;--accent-ring: rgba(39, 134, 84, .18);--brand-orange: #e46334;--joint: #2563eb;--warn-bg: #fff7ed;--warn-border: #fdba74;--warn-text: #b45309;--missing: #dc2626;--ok: #16a34a;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:transparent;color:var(--text);font-size:14px}.app{display:flex;flex-direction:column;height:100%;background:var(--bg)}.dev-role-bar{display:flex;align-items:center;gap:8px;padding:6px 16px;background:#fef3c7;border-bottom:1px solid #fde68a;font-size:12px;color:#92400e}.dev-role-bar select,.dev-role-bar input{padding:3px 6px;border:1px solid #fbbf24;border-radius:4px;font-size:12px;background:#fffbeb}.dev-role-bar button.ghost{padding:3px 10px;font-size:12px}.dev-role-bar button.ghost:disabled{opacity:.5;cursor:default}.dev-role-current{padding:2px 8px;background:#fffbeb;border:1px solid #fde68a;border-radius:4px}.dev-role-pending{color:#b45309;font-weight:600}.app-body{display:flex;flex:1;min-height:0;min-width:0}.app-sidebar{width:152px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:12px 8px;display:flex;flex-direction:column;gap:2px}.app-sidebar-btn{display:flex;align-items:center;gap:10px;text-align:left;padding:9px 12px;border:none;border-radius:6px;background:transparent;cursor:pointer;font-size:13.5px;color:var(--muted);font-family:inherit}.app-sidebar-btn:hover{background:var(--bg);color:var(--text)}.app-sidebar-btn.active{background:var(--accent-soft);color:var(--accent);font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}.app-sidebar-icon{flex-shrink:0;opacity:.85}.app-sidebar-btn.active .app-sidebar-icon{opacity:1}.app-sidebar-company{margin:10px -8px -12px;padding:12px 20px 14px;border-top:1px solid var(--border)}.app-sidebar-company .company-logo{display:block;width:100%;height:auto;opacity:.9}.app-main,.scenario-area{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column}.subtabs{display:flex;align-items:center;gap:4px;padding:10px 20px 0;background:var(--panel)}.tab{padding:7px 16px;border:none;background:transparent;cursor:pointer;font-size:14px;color:var(--muted);font-family:inherit;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.active{color:var(--accent);font-weight:500;border-bottom-color:var(--accent)}.spacer{flex:1}.roster-page{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.roster-page .filters{padding:6px 16px;gap:8px}.roster-page .filters select,.roster-page .filters input[type=search]{padding:4px 8px;font-size:12.5px}.roster-page .filters label{font-size:12.5px;gap:4px}.roster-page .count{font-size:12.5px}.roster-page .table-wrap{padding:0 16px 12px}.roster-page thead th{padding:5px 8px;font-size:11.5px}.roster-page tbody td{font-size:12.5px}.roster-page .cell{padding:4px 8px;font-size:12.5px;min-width:0}.roster-page .badge{font-size:10.5px;padding:0 5px}.roster-page .export-bar{padding:4px 16px}.roster-page .export-bar button.ghost{padding:3px 10px;font-size:12.5px}.roster-page table{table-layout:fixed;width:auto;min-width:0}.roster-page td.sticky-name,.roster-page th.sticky-name{width:auto;min-width:0;max-width:none}.roster-page th{position:relative}.roster-page .col-resize{position:absolute;top:0;right:0;bottom:0;width:6px;cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:1}.roster-page .col-resize:hover,.roster-page .col-resize:active{background:var(--accent);opacity:.35}.roster-page .cell-static{display:block;padding:4px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-page .cell-static.missing{background:#fef2f2;color:var(--missing)}.roster-page th.center,.roster-page td.center{text-align:center}.roster-page .sticky-col{position:sticky;z-index:1;background:var(--panel)}.roster-page thead th.sticky-col{z-index:3;background:#f9fafb}.roster-page .sticky-name{box-shadow:1px 0 0 var(--border)}.roster-page .sticky-seq{text-align:center;padding:4px}.roster-page .sticky-seq{box-shadow:-16px 0 0 var(--bg)}.roster-page .row-actions{display:flex;gap:3px;flex-shrink:0}.roster-page .row-actions button,.roster-page .row-edit{padding:2px 6px;font-size:11px;flex-shrink:0}.roster-page tr.editing-row td,.roster-page tr.editing-row td.sticky-col{background:var(--accent-soft)}.roster-page .group-header th{text-align:center;font-weight:700;color:var(--text);border-bottom:1px solid var(--border)}.roster-page .group-header th.sticky-col{background:#f9fafb;font-weight:600}.roster-page .group-header .sec-green{background:#92d050}.roster-page .group-header .sec-red{background:#e0645a}.roster-page .group-header .sec-blue{background:#5b9bd5}.roster-page .group-header .sec-orange{background:#ffc000}.roster-page thead tr:not(.group-header) th.sec-green{background:#eaf7e0}.roster-page thead tr:not(.group-header) th.sec-red{background:#fbe9e7}.roster-page thead tr:not(.group-header) th.sec-blue{background:#eaf3fb}.roster-page thead tr:not(.group-header) th.sec-orange{background:#fff8e1}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 20px;background:var(--panel);border-bottom:1px solid var(--border)}.filters select,.filters input[type=search]{padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;font-family:inherit}.filters label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.count{color:var(--muted);font-size:13px}.table-wrap{flex:1;overflow:auto;padding:0 20px 20px}table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;background:var(--panel)}th,td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:0;text-align:left;font-weight:400;white-space:nowrap}thead th{position:sticky;top:0;z-index:2;background:#f9fafb;padding:8px 10px;font-size:12px;color:var(--muted);font-weight:600;border-top:1px solid var(--border)}tbody td{font-size:13px}tbody tr:hover{background:#fafbfc}.cell{width:100%;border:none;background:transparent;padding:7px 10px;font:inherit;font-size:13px;color:inherit;outline:none;min-width:60px}.cell:focus{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.cell.missing{background:#fef2f2}.cell.missing::placeholder{color:var(--missing)}.cell.saving{opacity:.5}td.sticky-name,th.sticky-name{position:sticky;left:0;z-index:1;background:var(--panel);box-shadow:1px 0 0 var(--border);width:150px;min-width:150px;max-width:150px}thead th.sticky-name{z-index:3;background:#f9fafb}.name-cell{display:flex;align-items:center;gap:4px;padding-right:4px}.name-cell .cell,.name-cell .cell-static{flex:1;min-width:0}.name-cell .badge{flex-shrink:0;margin-left:0}.student-no{color:var(--muted);font-size:11px;font-weight:400;font-family:ui-monospace,Menlo,monospace;flex-shrink:0;white-space:nowrap}.badge{display:inline-block;padding:1px 6px;border-radius:10px;font-size:11px;margin-left:6px}.badge.warn{background:var(--warn-bg);color:var(--warn-text);border:1px solid var(--warn-border)}.badge.missing{background:#fef2f2;color:var(--missing);border:1px solid #fecaca}.badge.ok{background:#f0fdf4;color:var(--ok);border:1px solid #bbf7d0}.reject-form{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;min-width:150px}.reject-form .cell{width:100%}.dict-row-actions:has(.reject-form){white-space:normal}.import-page{padding:20px;overflow:auto;flex:1}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px 18px;margin-bottom:16px}.panel h2{font-size:14px;margin:0 0 12px;font-weight:600}.dropzone{border:2px dashed var(--border);border-radius:8px;padding:36px;text-align:center;color:var(--muted);background:var(--panel);cursor:pointer}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}button.primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:14px;cursor:pointer;font-family:inherit}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.primary:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit}.warn-row{background:var(--warn-bg)}.warn-list{margin:0;padding-left:18px;color:var(--warn-text);font-size:12px}.chip{display:inline-block;background:#f3f4f6;border:1px solid var(--border);border-radius:4px;padding:2px 8px;margin:0 6px 6px 0;font-size:12px}.chip.mapped{background:#f0fdf4;border-color:#bbf7d0}.chip.unmapped{background:#fef2f2;border-color:#fecaca;color:var(--missing)}.error{color:var(--missing);font-size:13px}.empty{padding:60px;text-align:center;color:var(--muted)}.activate-form{display:flex;gap:8px;justify-content:center;margin-top:12px}.activate-form input{padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit;text-transform:uppercase;letter-spacing:1px;width:140px}.template-bar{display:flex;align-items:center;justify-content:space-between;gap:16px}.export-bar{border-top:none;padding-top:0;gap:8px}.export-bar button.ghost{padding:5px 12px;font-size:13px}.export-bar button.ghost:disabled{opacity:.45;cursor:default}.dict-page,.hours-page,.accounts-page,.courses-page{flex:1;min-width:0;overflow:auto;padding:16px 20px}.onboarding{flex:1;overflow:auto;padding:40px 20px;display:flex;flex-direction:column;align-items:center;gap:16px}.onboarding-card{width:100%;max-width:480px}.onboarding-card h2{margin-bottom:6px}.onboarding-steps{display:flex;gap:8px;list-style:none;margin:0;padding:0;flex-wrap:wrap}.onboarding-steps li{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--panel);border:1px solid var(--border);font-size:13px;color:var(--muted)}.onboarding-steps li.current{border-color:var(--accent);color:var(--accent);font-weight:500}.onboarding-steps li.done{color:var(--ok)}.onboarding-step-no{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--bg);font-size:11px}.onboarding-steps li.current .onboarding-step-no{background:var(--accent);color:#fff}.onboarding-form{display:grid;grid-template-columns:1fr;gap:10px;margin:12px 0}.onboarding-actions{display:flex;gap:8px}.onboarding-summary{display:grid;grid-template-columns:72px 1fr;gap:6px 10px;margin:10px 0 14px;font-size:13px}.onboarding-summary dt{color:var(--muted)}.onboarding-summary dd{margin:0}.onboarding .activate-form{justify-content:flex-start;margin-top:0}.onboarding-orgs{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px}.onboarding-orgs li{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border:1px solid var(--border);border-radius:6px}.org-choices{display:flex;flex-direction:column;gap:8px;margin-top:12px}.org-choice{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;font-family:inherit;border:1px solid var(--border);border-radius:8px;background:var(--panel);cursor:pointer;font-size:14px}.org-choice:hover{border-color:var(--accent);background:var(--accent-soft)}.org-choice-role{color:var(--muted);font-size:13px}.login-page{flex:1;display:flex;min-height:0;overflow:auto;background:var(--panel)}.login-hero{flex:1 1 52%;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:56px 64px 36px;border-right:1px solid var(--border);background:radial-gradient(520px 420px at 92% 6%,#e4633417,#e4633400 60%),radial-gradient(680px 560px at 0% 100%,#27865429,#27865400 65%),linear-gradient(160deg,#f4faf6,#e4f2e9)}.login-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(rgba(39,134,84,.13) 1px,transparent 1.2px);background-size:18px 18px;-webkit-mask-image:linear-gradient(140deg,#000 0%,transparent 70%);mask-image:linear-gradient(140deg,#000 0%,transparent 70%)}.login-hero-inner{position:relative;width:100%;max-width:480px;margin:auto 0;display:flex;flex-direction:column;gap:36px}.login-brand{display:flex;align-items:center;gap:18px}.login-logo{height:84px;width:auto;filter:drop-shadow(0 8px 16px rgba(39,134,84,.18))}.login-title{margin:0;font-size:34px;font-weight:800;letter-spacing:1px;color:var(--text);line-height:1.15}.login-tagline{margin:8px 0 0;font-size:14px;color:#4b6358;letter-spacing:.5px}.login-company{position:relative;width:190px;height:auto;opacity:.95}.ticker{background:#ffffffd6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(39,134,84,.14);border-radius:14px;padding:16px 18px 6px;box-shadow:0 12px 32px #1f6d441a}.ticker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.ticker-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--text)}.ticker-live{width:8px;height:8px;border-radius:50%;background:var(--brand-orange);animation:ticker-pulse 2s infinite}@keyframes ticker-pulse{0%{box-shadow:0 0 #e4633473}70%{box-shadow:0 0 0 8px #e4633400}to{box-shadow:0 0 #e4633400}}.ticker-stats{display:flex;align-items:center;font-size:12.5px;color:var(--muted);white-space:nowrap}.ticker-stats b{margin:0 3px;font-size:16px;color:var(--accent)}.ticker-stats i{width:1px;height:12px;margin:0 10px;background:var(--border)}.ticker-list{list-style:none;margin:0;padding:0}.ticker-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 0;border-top:1px dashed #dfe9e2;font-size:13px}.ticker-list li:first-child{border-top:none}.ticker-list li.enter{animation:ticker-in .5s ease}@keyframes ticker-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.ticker-kind{padding:0 8px;border-radius:999px;font-size:11px;line-height:20px;white-space:nowrap}.ticker-kind.camp{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}.ticker-kind.hours{background:#fff4ee;color:#c24e22;border:1px solid #f6d3c3}.ticker-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#374151}.ticker-text b{font-weight:600;color:var(--text)}.ticker-time{font-size:12px;color:var(--muted);white-space:nowrap}.ticker-empty{margin:6px 0 12px;font-size:13px;color:var(--muted)}@media(prefers-reduced-motion:reduce){.ticker-live,.ticker-list li.enter{animation:none}}.login-main{flex:1 1 48%;display:flex;align-items:center;justify-content:center;padding:48px 32px}.login-card{width:100%;max-width:360px}.login-heading{margin:0 0 18px;font-size:24px;font-weight:700;color:var(--text)}.login-card>.hint{margin:0 0 16px;line-height:1.6}.login-tabs{display:flex;gap:4px;padding:4px;margin-bottom:20px;border-radius:10px;background:#f1f4f2}.login-tabs button{flex:1;padding:7px 0;border:none;border-radius:7px;background:transparent;cursor:pointer;font-family:inherit;font-size:14px;color:var(--muted)}.login-tabs button.active{background:#fff;color:var(--accent);font-weight:600;box-shadow:0 1px 3px #10182814}.login-form{display:grid;gap:14px;margin:0 0 6px}.login-form .field>span{font-size:12.5px;color:#4b5563}.login-form input,.change-password input{width:100%}.login-form input{height:42px;box-sizing:border-box;padding:0 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;background:#fbfcfb;color:var(--text)}.login-form input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-ring)}.login-form input::placeholder{color:#a8b0ad}.login-form .field small{font-size:11.5px;margin-top:2px}.login-card .error{margin:8px 0 0}.login-submit{width:100%;height:44px;margin-top:12px;border-radius:8px;font-size:15px;letter-spacing:2px}.login-foot{margin:16px 0 0;text-align:center}@media(max-width:900px){.login-page{flex-direction:column;background:linear-gradient(180deg,#eef7f1 0,var(--panel) 280px)}.login-hero,.login-hero-inner{display:contents}.login-hero:before{display:none}.login-brand{order:1;justify-content:center;padding:32px 20px 0}.login-logo{height:56px}.login-title{font-size:26px}.login-tagline{font-size:12.5px}.login-main{order:2;flex:none;padding:24px 20px 28px}.ticker{order:3;width:calc(100% - 40px);max-width:400px;margin:0 auto 24px;box-sizing:border-box}.login-company{order:4;width:150px;margin:0 auto 32px}}.change-password{display:grid;gap:10px;margin-top:8px}.onboarding>.link-btn{font-size:13px}.temp-password{font-size:15px;padding:1px 6px;background:var(--panel);border:1px solid var(--border);border-radius:4px}.accounts-reset-phone{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.accounts-reset-phone input{width:160px}.accounts-users .link-btn{font-size:11.5px}.accounts-users .link-btn:disabled{color:var(--muted);cursor:default}.accounts-users .link-btn.danger{color:var(--missing)}.accounts-users .link-btn.danger:disabled{color:var(--muted)}.account-links{display:flex;gap:8px;margin-top:2px;white-space:nowrap}.accounts-toolbar{display:flex;align-items:center;gap:8px;margin:12px 0 10px;flex-wrap:wrap}.accounts-toolbar .spacer{flex:1}.accounts-toolbar input,.accounts-toolbar select,.accounts-form input,.accounts-form select{height:32px;box-sizing:border-box;padding:0 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit;background:#fff;color:inherit}.accounts-toolbar input[type=search]{width:200px}.accounts-toolbar button.primary{height:32px;padding:0 14px;font-size:13px}.accounts-form select:disabled{background:#f6f7f9;color:var(--muted)}.accounts-panel{display:flex;flex-direction:column;gap:8px}.accounts-panel .hint{margin:0}.accounts-form{display:flex;flex-wrap:wrap;gap:8px}.accounts-form input{width:150px}.campus-picker{display:flex;flex-wrap:wrap;gap:4px;white-space:normal}.campus-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--border);border-radius:999px;font-size:12px;line-height:18px;color:var(--muted);background:#fff;cursor:pointer;-webkit-user-select:none;user-select:none}.campus-chip input{margin:0;width:12px;height:12px;accent-color:var(--accent)}.campus-chip.on{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}.campus-chip.gone{text-decoration:line-through}.accounts-users td .campus-picker{padding:1px 0}.accounts-form-campus{flex-basis:100%;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.accounts-form-label{font-size:12.5px;color:var(--muted)}.accounts-users tr.frozen-row td{color:var(--muted);background:#fafafa}.accounts-users tr.frozen-row td .link-btn:not(:disabled){color:var(--accent)}.app-header{display:flex;align-items:stretch;height:52px;flex-shrink:0;background:var(--panel);border-bottom:1px solid var(--border)}.app-brand{width:152px;flex-shrink:0;box-sizing:border-box;display:flex;align-items:center;padding:0 8px 0 20px;border-right:1px solid var(--border)}.brand-mark{display:inline-flex;align-items:center;gap:7px}.brand-mark img{height:26px;width:auto;display:block}.brand-name{font-size:16px;font-weight:700;color:var(--text);letter-spacing:.5px;white-space:nowrap}.brand-name em,.login-title em{font-style:normal;color:var(--accent);margin-left:1px}.brand-mark-lg img{height:40px}.brand-mark-lg .brand-name{font-size:20px}.onboarding>.brand-mark{margin-bottom:4px}.app-header-org{position:relative;display:flex;align-items:center;gap:4px;padding:0 12px}.org-switch,.org-add,.header-user{display:flex;align-items:center;gap:8px;border:none;background:none;cursor:pointer;font-family:inherit;color:var(--text);border-radius:6px}.org-switch{padding:6px 8px}.org-switch:hover,.org-switch.open,.org-add:hover,.org-add.open,.header-user:hover{background:var(--bg)}.org-avatar{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:600;border:1px solid var(--accent-border)}.org-name{font-size:15px;font-weight:500}.org-chevron{display:flex;color:var(--muted);transition:transform .15s}.org-switch.open .org-chevron{transform:rotate(180deg)}.org-pending{min-width:18px;height:18px;padding:0 5px;border-radius:9px;font-size:11px;line-height:18px;text-align:center;background:var(--warn-bg);color:var(--warn-text);border:1px solid var(--warn-border)}.org-add{width:32px;height:32px;justify-content:center;color:var(--muted)}.header-role{margin-left:10px;font-size:14px;color:var(--muted)}.app-header-spacer{flex:1}.header-notice{align-self:center;margin-right:12px;font-size:13px;color:var(--ok)}.header-user{align-self:center;margin-right:4px;padding:6px 10px;font-size:14px}.header-logout{align-self:center;display:flex;align-items:center;gap:6px;margin:0 16px 0 4px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-family:inherit;font-size:13.5px;cursor:pointer}.header-logout:hover{border-color:var(--missing);color:var(--missing);background:#fef2f2}.header-user-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:12px;font-weight:600}.org-menu{position:absolute;top:calc(100% - 4px);left:12px;z-index:30;min-width:260px;max-height:70vh;overflow-y:auto;padding:6px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0f172a1f}.org-menu-title{padding:6px 10px 4px;font-size:12px;color:var(--muted)}.org-menu-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 10px;border:none;background:none;border-radius:6px;font-family:inherit;font-size:13.5px;color:var(--text);cursor:pointer;text-align:left}.org-menu-item:hover{background:var(--bg)}.org-menu-item.current{color:var(--accent);font-weight:500;background:var(--accent-soft)}.org-menu-item.disabled{color:var(--muted);cursor:default}.org-menu-item.disabled:hover{background:none}.org-menu-role{font-size:12px;color:var(--muted);font-weight:400}.org-menu-sep{height:1px;background:var(--border);margin:6px 4px}.org-join{width:300px;padding:10px 12px 12px}.org-join .org-menu-title{padding:0 0 4px}.org-join .hint{margin:0 0 8px}.org-join .activate-form.compact{display:flex;gap:6px}.org-join .activate-form.compact input{flex:1}.link-btn{border:none;background:none;padding:0;color:var(--accent);cursor:pointer;font-size:12px;font-family:inherit}.app-sidebar-spacer{flex:1}.profile-page{flex:1;min-width:0;overflow:auto;padding:16px 20px}.profile-page .dict-section{max-width:640px}.profile-info{display:grid;grid-template-columns:90px 1fr;gap:10px 12px;margin:0;font-size:13.5px;align-items:center}.profile-info dt{color:var(--muted)}.profile-info dd{margin:0}.profile-inline{display:inline-flex;align-items:center;gap:8px}.profile-inline input{width:180px}.profile-subhead{margin:16px 0 4px;font-size:13px;font-weight:600}.profile-page .activate-form.compact{justify-content:flex-start;margin-top:8px}.profile-page .activate-form.compact input{width:180px}.profile-page .change-password{max-width:320px}.profile-notice{color:var(--ok);margin:0 0 10px}.accounts-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 12px}.accounts-steps li{min-width:0;border-radius:8px;padding:7px 12px}.accounts-grid{table-layout:fixed;min-width:1080px}.accounts-grid th,.accounts-grid td{overflow:hidden;text-overflow:ellipsis}.accounts-codes .code-revoke{margin-left:10px;font-size:11.5px}.accounts-codes .link-btn.danger{color:var(--missing)}.accounts-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.accounts-head h2{margin:0}.accounts-page .dict-section{max-width:none}.accounts-table-wrap{overflow-x:auto}.accounts-table-wrap .dict-table td,.accounts-table-wrap .dict-table th{white-space:nowrap}.accounts-section:first-of-type{margin-top:4px}.dict-subnav{display:flex;flex-wrap:wrap;gap:4px;padding:4px;margin-bottom:16px;background:var(--panel);border:1px solid var(--border);border-radius:8px;max-width:640px}.dict-subnav-tab{padding:7px 14px;border:none;border-radius:6px;background:transparent;cursor:pointer;font-size:13px;color:var(--muted);font-family:inherit}.dict-subnav-tab:hover{background:var(--bg)}.dict-subnav-tab.active{background:var(--accent);color:#fff;font-weight:500}.hours-page .dict-section{max-width:none}.hours-page h3{font-size:13px;margin:0 0 8px;font-weight:600}.hours-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:13px;color:var(--muted);margin-bottom:10px}.hours-toolbar label{display:flex;align-items:center;gap:6px}.hours-toolbar button.ghost{padding:2px 8px;font-size:12px}.hours-toolbar input[type=date],.hours-toolbar input[type=month]{font-size:12.5px}.hours-range{flex-direction:column;align-items:flex-start;gap:4px}.hours-range label>input{margin-left:2px}.hours-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:6px;overflow:hidden}.hours-calendar-weekday-cell{background:var(--bg);text-align:center;font-size:12px;color:var(--muted);padding:6px 0;font-weight:500}.hours-calendar-day-cell{background:var(--panel);min-height:68px;padding:3px;font-size:11.5px}.hours-calendar-day-cell.empty{background:var(--bg)}.hours-calendar-day-cell.today{box-shadow:inset 0 0 0 2px var(--accent)}.hours-calendar-day-num{font-size:11px;color:var(--muted);margin-bottom:2px}.hours-calendar-entry{background:var(--bg);border-radius:4px;padding:2px 3px;margin-bottom:2px;font-size:10px;line-height:1.35}.hours-calendar-entry>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hours-calendar-teacher,.hours-calendar-time{color:var(--muted)}.hours-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1.5fr) minmax(0,.8fr);gap:16px;align-items:start;margin-bottom:16px}.hours-page .hours-grid>.dict-section{max-width:none;margin-bottom:0;min-width:0;overflow-x:auto}.hours-grid .dict-table th{padding:4px 6px}.hours-grid .dict-table .dict-value-cell{padding:5px 6px}.hours-grid .dict-row-actions{padding:2px 4px}.hours-grid .dict-table .num{padding-left:4px;padding-right:4px}.product-tags{display:flex;flex-wrap:wrap;gap:4px}.product-tag{display:inline-block;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:1px 6px;font-size:12px;white-space:nowrap}.product-tag-date{color:var(--muted);margin-left:5px;font-size:11px}.product-tag-date:before{content:"· "}@media(max-width:1650px){.hours-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr)}.hours-grid>:first-child{grid-column:1 / -1}}@media(max-width:1100px){.hours-grid{grid-template-columns:minmax(0,1fr)}.hours-grid>:first-child{grid-column:auto}}.dict-section{max-width:640px}.dict-list{list-style:none;margin:10px 0;padding:0}.dict-list li{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--border)}.dict-list li:last-child{border-bottom:none}.dict-list .cell{flex:1}.dict-add{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.dict-add input{flex:1;min-width:120px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit}.dict-add select{flex-shrink:0;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit;background:#fff;color:inherit}.dict-add button{flex-shrink:0}.dict-list select.cell{min-width:110px;flex:1}.dict-table{width:100%;margin-top:8px}.dict-table th{text-align:left;font-size:12px;color:var(--muted);padding:4px 8px}.dict-table th.num,.dict-table td.num{text-align:center;padding-left:8px;padding-right:8px}.hours-table-fixed{table-layout:fixed}.hours-table-fixed .cell{width:100%;box-sizing:border-box}.hours-package{padding:0;margin-bottom:16px}.hours-package+.hours-package{border-top:1px solid var(--border);padding-top:14px}.dict-table td{border-bottom:1px solid var(--border);padding:2px}.dict-table .cell{width:100%;padding:6px 8px}.permission-table th:not(:first-child):not(:last-child){text-align:center}.permission-table td{padding:8px 4px}.permission-table input[type=checkbox]{width:15px;height:15px;cursor:pointer}.permission-table input[type=checkbox]:disabled{opacity:.55;cursor:default}.dict-value{flex:1;min-width:0;padding:7px 10px;color:inherit}.dict-value-cell{padding:7px 10px;color:inherit}.dict-row-actions{white-space:nowrap;padding:2px 8px;text-align:right}.dict-row-actions button{margin-left:4px}.dict-list li button,.dict-row-actions button{flex-shrink:0}.institution-block{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:10px 0}.institution-head{display:flex;align-items:center;gap:8px}.institution-head .cell{flex:1}.institution-name{flex:1;font-weight:600;font-size:14px}.institution-campus-list{margin:8px 0 0 16px;padding-left:12px;border-left:2px solid var(--border)}.institution-campus-list li{padding:3px 0}.institution-add-campus{margin:6px 0 0 16px;padding-left:12px}.institution-add-campus input{font-size:12.5px;padding:5px 8px}.institution-add-campus button{font-size:12px}.camp-recruiter-checks{display:flex;flex-wrap:wrap;gap:4px 10px;padding:4px 6px}.camp-recruiter-checks label{display:inline-flex;align-items:center;gap:3px;font-size:12px;white-space:nowrap;cursor:pointer}.camp-recruiter-checks input{margin:0}.intake-page{flex:1;min-width:0;overflow:auto;padding:12px 16px;display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:12px;align-items:start}.intake-form{min-width:0}.intake-form .panel{padding:10px 14px;margin-bottom:8px}.intake-form .panel h2{font-size:13px;margin:0 0 8px;font-weight:600;display:flex;align-items:center}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.dot-green{background:#92d050}.dot-red{background:#e05252}.dot-blue{background:#5b9bd5}.dot-orange{background:#ffc000}.grid{display:grid;gap:8px 14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:1100px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.grid-2,.grid-3{grid-template-columns:1fr}}.field{display:flex;flex-direction:column;gap:3px;min-width:0}.field>span{font-size:11.5px;color:var(--muted)}.field .req{color:var(--missing);font-style:normal;margin-left:2px}.field input,.field select,.field textarea{padding:5px 8px;border:1px solid var(--border);border-radius:5px;font-size:13px;font-family:inherit;background:#fff;color:inherit;width:100%}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.field textarea{resize:vertical}.hint{font-size:11.5px;color:var(--muted);margin:6px 0 0}.actions{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.flash{padding:8px 12px;border-radius:6px;margin-bottom:10px;font-size:13px}.flash.ok{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.flash.err{background:#fef2f2;border:1px solid #fecaca;color:var(--missing)}.flash.warn{background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--warn-text)}.idle-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);z-index:50;padding:10px 18px;border-radius:10px;font-size:13.5px;background:var(--warn-bg);color:var(--warn-text);border:1px solid var(--warn-border);box-shadow:0 8px 24px #1018281f}.idle-toast b{font-size:15px;margin:0 2px}.match-banner{margin-top:8px;padding:6px 10px;font-size:12.5px;background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:6px;color:var(--accent-hover)}.intake-side{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 14px;position:sticky;top:0}.intake-side h2{font-size:13px;margin:0 0 8px;font-weight:600}.recent{list-style:none;margin:0;padding:0}.recent li{display:flex;flex-direction:column;gap:2px;padding:6px 0;border-bottom:1px solid var(--border);font-size:12.5px}.recent li:last-child{border-bottom:none}.recent .muted{color:var(--muted);font-size:11.5px}.boarding-page{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.boarding-page .filters{padding:8px 20px}.boarding-page .table-wrap{padding:0 20px 14px}.boarding-page thead th{padding:5px 6px;font-size:11.5px}.boarding-page tbody td{font-size:12.5px}.boarding-page table.boarding-grid th,.boarding-page table.boarding-grid td{text-align:center}.boarding-page .cell-static{padding:4px 6px}.boarding-page .boarding-grid thead th{line-height:16px}.boarding-page .boarding-grid tr.day-labels th{top:28px;border-top:none}.boarding-page .boarding-grid tr.daily-stats th{top:55px;border-top:none}.boarding-page tr.daily-stats th{background:#fffbeb;color:var(--text);font-size:12px;font-weight:600;border-bottom:1px solid #fde68a}.boarding-page tr.daily-stats th.zero{color:#c9ced6;font-weight:400}.boarding-page tr.daily-stats th.stats-label{background:#fef3c7;color:#92400e}.boarding-page tr.daily-stats th.stats-count{color:var(--muted);font-weight:500}.boarding-page tr.daily-stats th.total-col{background:#fef3c7;color:#92400e}.boarding-page .sticky-col{position:sticky;z-index:1;background:var(--panel)}.boarding-page thead th.sticky-col{z-index:3;background:#f9fafb}.boarding-page .sticky-name{box-shadow:1px 0 0 var(--border)}.boarding-page .sticky-seq{box-shadow:-20px 0 0 var(--bg)}.boarding-page tr.daily-stats th.stats-label{box-shadow:-20px 0 0 var(--bg),1px 0 0 var(--border)}.boarding-page .group-header th{font-weight:700;border-bottom:1px solid var(--border)}.boarding-page .group-header th.info-col{background:#f9fafb;color:var(--text);font-weight:600}.boarding-page .group-header th.day-odd{background:#5b9bd5;color:#fff}.boarding-page .group-header th.day-even{background:#92d050;color:#fff}.boarding-page tr.day-labels th.day-odd{background:#eaf3fb;color:var(--text);font-weight:500}.boarding-page tr.day-labels th.day-even{background:#eaf7e0;color:var(--text);font-weight:500}.boarding-page .group-header th.total-col{background:#6b7280;color:#fff}.boarding-page tr.day-labels th.total-col{background:#f3f4f6;color:var(--text);font-weight:500}.boarding-page td.total-col{font-weight:600;background:#f9fafb}.boarding-page .boarding-cell{padding:3px}.boarding-page .boarding-cell input[type=checkbox]{width:15px;height:15px;cursor:pointer}.boarding-page .boarding-cell input[type=checkbox]:disabled{opacity:.55;cursor:default}.boarding-page tr.editing-row td,.boarding-page tr.editing-row td.sticky-col{background:var(--accent-soft)}.boarding-page tr.editing-row td.total-col{background:var(--accent-border)}.boarding-page .row-actions{display:flex;gap:3px;flex-shrink:0}.boarding-page .row-actions button,.boarding-page .row-edit{padding:2px 6px;font-size:11px;flex-shrink:0}.courses-page .dict-section{max-width:none}.courses-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.courses-head h2{margin:0}.joint-text,.courses-head h2.joint-text{color:var(--joint)}option.plain-text{color:var(--text)}.courses-head-actions{display:flex;gap:8px;flex-shrink:0}.courses-meta{margin:4px 0 0}.courses-table-wrap{overflow-x:auto;margin-top:12px}.courses-table{table-layout:fixed;width:100%;min-width:1200px;border-collapse:collapse;font-size:12.5px;line-height:1.6}.courses-table th{background:var(--bg);border:1px solid var(--border);padding:6px 8px;font-size:12px;font-weight:600;color:var(--muted);text-align:center}.courses-table td{border:1px solid var(--border);padding:7px 9px;vertical-align:top;white-space:pre-line;overflow-wrap:anywhere}.courses-table td.center,.courses-table td.purpose{overflow-wrap:normal}.courses-table td.center{text-align:center;vertical-align:middle}.courses-table td.purpose{background:var(--bg);font-weight:600;text-align:center;vertical-align:middle}.courses-table .purpose-missing{color:var(--missing);font-weight:500}.courses-table td.name{font-weight:600;vertical-align:middle}.kind-tag{display:inline-block;padding:0 8px;border-radius:999px;font-size:11.5px;line-height:20px;white-space:nowrap}.kind-tag.camp{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}.kind-tag.hours{background:#f3f4f6;color:#374151;border:1px solid #e5e7eb}.courses-table td.price{font-weight:600}.courses-table td.recruiters{padding:6px 8px;vertical-align:middle}.courses-table td.recruiters .camp-recruiter-checks{flex-direction:column;align-items:flex-start;gap:2px}.courses-table td.actions{text-align:center;vertical-align:middle;white-space:normal;padding:6px 4px}.courses-table td.actions button{padding:2px 8px;font-size:12px;margin:2px}.courses-table td.actions button.danger{color:var(--missing);border-color:var(--missing)}.courses-table tr.editing-row td{padding:0;background:var(--accent-soft);vertical-align:top}.courses-table tr.editing-row td.actions{padding:6px 4px;vertical-align:middle}.courses-table .cell{width:100%;min-width:0;font-size:12.5px;line-height:1.6;padding:7px 9px}.courses-table textarea.cell{display:block;resize:vertical;font-family:inherit}.courses-table select.cell{padding:7px 2px}.courses-confirm{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:6px;padding:10px 12px;margin-top:12px;font-size:13px}.courses-confirm .actions{display:flex;gap:8px;margin-top:8px}
