:root{font-family:"DM Sans","Noto Sans SC",sans-serif;color:#1f2c25;background:#f5f7f3;font-synthesis:none;text-rendering:optimizeLegibility;--ink:#203027;--muted:#849087;--line:#e5ebe4;--green:#356b50;--deep:#17251f;--paper:#fff;--wash:#eff4ef;--mono:"DM Mono",monospace}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f5f7f3;font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #9cc4a2;outline-offset:2px}[hidden]{display:none!important}.boot{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:18px;color:#859389;font-size:12px}.brand-mark{width:38px;height:38px;border-radius:12px;background:#dceade;display:flex;align-items:flex-end;justify-content:center;gap:4px;padding:9px}.brand-mark i{width:4px;border-radius:3px;background:#38664a}.brand-mark i:nth-child(1){height:10px}.brand-mark i:nth-child(2){height:18px}.brand-mark i:nth-child(3){height:13px}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.8fr);background:#17251f}.login-story{padding:clamp(30px,7vw,100px);display:flex;flex-direction:column;justify-content:space-between;color:#e4ece5;position:relative;overflow:hidden}.login-story:after{content:"";position:absolute;width:420px;height:420px;border:1px solid #3c5144;border-radius:50%;right:-100px;bottom:-150px;box-shadow:0 0 0 42px #21352a,0 0 0 43px #3c5144,0 0 0 95px #1d3027,0 0 0 96px #3c5144}.brand{display:flex;align-items:center;gap:12px;position:relative;z-index:1}.brand-copy strong{display:block;font-size:17px;letter-spacing:.08em}.brand-copy small{font:9px var(--mono);letter-spacing:.15em;color:#93a499}.story-copy{max-width:440px;position:relative;z-index:1;margin:50px 0}.story-copy .eyebrow{color:#a8b8ac;font:10px var(--mono);letter-spacing:.13em}.story-copy h1{font-size:clamp(32px,4.5vw,58px);line-height:1.2;letter-spacing:-.06em;font-weight:500;margin:18px 0}.story-copy p{max-width:350px;color:#a7b5ab;line-height:1.9;font-size:14px}.story-foot{position:relative;z-index:1;color:#809188;font-size:11px}.login-side{background:#f5f7f3;display:grid;place-items:center;padding:30px}.login-card{width:min(100%,390px);padding:12px}.login-card h2{font-size:25px;letter-spacing:-.04em;margin:8px 0}.login-card>p{color:#859087;font-size:12px;margin:0 0 28px;line-height:1.7}.eyebrow{font:9px var(--mono);letter-spacing:.15em;text-transform:uppercase;color:#7d9681}.field{display:grid;gap:7px;margin:16px 0}.field label{font-size:11px;font-weight:600;color:#526057}.field input,.field select,.field textarea{width:100%;min-height:44px;border:1px solid #dfe6de;border-radius:8px;background:white;padding:10px 12px;font-size:13px;color:#35463b}.field textarea{min-height:88px;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:#afb8b0}.primary-button,.secondary-button,.danger-button{border:1px solid transparent;border-radius:8px;min-height:42px;padding:0 16px;font-size:12px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.15s}.primary-button{background:var(--green);color:white}.primary-button:hover{background:#28563e}.primary-button:disabled{opacity:.6;cursor:wait}.secondary-button{border-color:#dfe6de;background:#fff;color:#536359}.secondary-button:hover{border-color:#b8cabe;background:#f8fbf8}.danger-button{background:#fff7f4;color:#a35f49;border-color:#f2ded6}.full-width{width:100%}.login-switch{border:0;background:none;color:#56765d;font-size:11px;padding:15px 0 0}.app{min-height:100vh}.sidebar{position:fixed;z-index:8;inset:0 auto 0 0;width:244px;background:var(--deep);color:#dce6df;padding:23px 15px;display:flex;flex-direction:column}.sidebar .brand{padding:0 8px 24px}.sidebar .brand-mark{width:32px;height:32px;padding:7px;border-radius:10px}.nav-caption{color:#6f8277;font:9px var(--mono);letter-spacing:.12em;margin:22px 10px 9px}.nav-list{display:grid;gap:4px}.nav-item{width:100%;height:43px;border:0;background:transparent;border-radius:7px;color:#9eada3;text-align:left;padding:0 11px;display:flex;align-items:center;gap:11px;font-size:12px}.nav-item:hover{background:#22352b;color:white}.nav-item.active{background:#294637;color:#fff;box-shadow:inset 2px 0 #a7c9a7}.nav-symbol{width:18px;text-align:center;font-size:15px;color:#aabbb0}.nav-count{margin-left:auto;background:#4a3931;color:#ecc19a;border-radius:10px;padding:2px 7px;font:9px var(--mono)}.sidebar-spacer{flex:1}.sidebar-week{margin:10px 3px 16px;padding:13px;border:1px solid #34443a;background:#1d2e25;border-radius:8px}.sidebar-week span{display:block;color:#93a197;font-size:9px}.sidebar-week strong{display:block;color:#e1e9e2;font-size:12px;margin-top:5px}.user-panel{display:flex;align-items:center;gap:9px;padding:7px 4px}.user-avatar{width:33px;height:33px;border-radius:50%;display:grid;place-items:center;background:#d8e8da;color:#385c43;font-size:12px;font-weight:700;flex:none}.user-meta{min-width:0;flex:1}.user-meta strong,.user-meta small{display:block}.user-meta strong{font-size:11px;color:#e9efe9}.user-meta small{font-size:9px;color:#91a097;margin-top:3px}.logout-button{border:0;background:none;color:#9aaba0;padding:7px;font-size:16px}.main{margin-left:244px;min-height:100vh}.topbar{height:68px;position:sticky;top:0;z-index:5;background:#ffffffed;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px}.topbar-title{font-size:11px;color:#89958c}.topbar-title strong{color:#435349;font-weight:600}.topbar-right{display:flex;align-items:center;gap:12px}.week-select{border:1px solid var(--line);border-radius:7px;background:#fff;padding:8px 11px;color:#59685d;font-size:10px}.sync-label{font-size:9px;color:#95a096}.sync-label i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#7fa984;margin-right:5px}.menu-button{display:none}.content{max-width:1350px;margin:0 auto;padding:30px 36px 55px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:15px;margin-bottom:22px}.page-head h1{font-size:27px;font-weight:600;letter-spacing:-.05em;margin:8px 0 5px;color:#25352a}.page-head p{margin:0;color:#859188;font-size:11px}.head-actions{display:flex;align-items:center;gap:8px}.card{background:white;border:1px solid #e6ebe5;border-radius:9px;box-shadow:0 2px 5px #26382d05}.section-card{padding:18px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.section-head h2{font-size:14px;margin:0;color:#3b4a40}.section-head p{font-size:10px;color:#929c94;margin:5px 0 0}.kicker{font:8px var(--mono);letter-spacing:.14em;color:#9aa69c;text-transform:uppercase}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:14px}.stat{padding:14px 15px}.stat-label{font-size:10px;color:#89958c}.stat-value{font:500 25px var(--mono);letter-spacing:-.05em;color:#2c3d31;margin-top:9px}.stat-note{font-size:9px;color:#99a39b;margin-top:5px}.stat-accent{color:#568061}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);gap:13px}.schedule-preview{display:grid;gap:8px}.preview-shift{display:grid;grid-template-columns:70px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid #edf0eb;border-radius:7px}.preview-date{font:10px var(--mono);color:#617568}.preview-date small{display:block;font:9px "Noto Sans SC";color:#9aa59c;margin-top:4px}.member-pills{display:flex;flex-wrap:wrap;gap:5px}.member-pill{background:#f0f4ef;color:#566a59;padding:5px 8px;border-radius:5px;font-size:9px}.member-pill.tech{background:#e7f1e8;color:#416a4b}.member-pill.empty{color:#9aa39d;background:#f6f7f5}.member-total{font:9px var(--mono);color:#9ca69e}.notice{display:flex;align-items:flex-start;gap:10px;background:#f8f5e9;border:1px solid #eee8d2;border-radius:8px;padding:12px 14px;color:#8c794c;font-size:10px;line-height:1.7;margin:0 0 14px}.notice-icon{width:20px;height:20px;border-radius:50%;background:#f0e9d3;display:grid;place-items:center;flex:none}.notice strong{display:block;margin-bottom:2px}.notice p{margin:0;color:#9d9170}.request-list,.enrollment-list,.member-list,.audit-list{display:grid;gap:8px}.request-card{padding:13px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px}.request-main strong{display:block;color:#405045;font-size:11px}.request-main small{display:block;color:#8d9990;font-size:9px;margin-top:4px;line-height:1.6}.request-tag{background:#faf0e8;color:#b17c59;border-radius:4px;padding:4px 6px;font-size:8px;white-space:nowrap}.request-tag.makeup{background:#eaf3ea;color:#63856a}.request-actions{display:flex;gap:5px}.request-actions button{min-height:31px;padding:0 9px;font-size:9px}.status{padding:5px 7px;border-radius:5px;font-size:9px;white-space:nowrap}.status.pending{background:#fbf1e8;color:#b17e57}.status.approved{background:#eaf3eb;color:#5e8064}.status.rejected{background:#f8ecea;color:#ad7165}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}.form-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.form-row input,.form-row select{height:36px;border:1px solid #e1e8e0;border-radius:7px;background:white;padding:0 9px;color:#536258;font-size:10px}.shift-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.shift-card{padding:13px}.shift-card-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.shift-card-head strong{font-size:11px;color:#405145}.shift-card-head small{display:block;font:9px var(--mono);color:#9ba59e;margin-top:4px}.shift-card select{width:100%;min-height:82px;border:1px solid #e4eae3;border-radius:6px;padding:6px;color:#4d5d51;font-size:10px;background:#fbfcfa}.shift-card select option{padding:4px}.shift-card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;color:#9ba59e;font-size:8px}.shift-card-foot .secondary-button{min-height:28px;padding:0 9px;font-size:8px}.coverage{font-size:9px;color:#688c70}.coverage.warn{color:#b9855d}.enrollment-card{padding:12px 14px;display:flex;gap:12px;align-items:flex-start}.enrollment-card-main{flex:1;min-width:0}.enrollment-name{display:flex;align-items:center;gap:7px}.enrollment-name strong{font-size:11px;color:#435347}.tech-badge{font-size:8px;color:#55805d;background:#edf5ee;border-radius:4px;padding:3px 5px}.enrollment-sub{margin-top:5px;color:#919c94;font-size:9px}.slot-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:9px}.slot-tag{padding:4px 6px;background:#f2f5f1;color:#718075;border-radius:4px;font-size:8px}.enrollment-count{font:11px var(--mono);color:#56725d;white-space:nowrap}.member-card{display:flex;align-items:center;gap:10px;padding:11px 13px}.member-info{flex:1}.member-info strong{display:block;color:#46564b;font-size:10px}.member-info small{display:block;color:#929d95;font-size:8px;margin-top:4px}.audit-row{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #edf0eb}.audit-row:last-child{border-bottom:0}.audit-mark{width:7px;height:7px;background:#9fbea3;border-radius:50%;margin-top:5px;flex:none}.audit-row strong{font-size:9px;color:#65756a}.audit-row small{display:block;font-size:8px;color:#9ba59e;margin-top:4px}.schedule-days{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));gap:8px;overflow:auto;padding-bottom:5px}.schedule-day{background:#fafbf9;border:1px solid #e9eee8;border-radius:8px;padding:9px;min-height:210px}.schedule-day-head{font-size:10px;color:#55675a;font-weight:600;padding:4px 3px 10px;border-bottom:1px solid #e8ede7}.schedule-day-head small{display:block;color:#a0aaa2;font:8px var(--mono);margin-top:4px}.day-shift{padding:9px 0;border-bottom:1px solid #e8ede7}.day-shift:last-child{border:0}.day-shift-label{display:flex;justify-content:space-between;color:#66786a;font-size:8px;margin-bottom:6px}.day-shift-label small{font:8px var(--mono);color:#9da79f}.day-member{display:block;font-size:8px;line-height:1.6;color:#5c6c5e;padding:3px 5px;background:#edf3ed;border-radius:4px;margin-top:3px}.day-member.tech{color:#3d704a;background:#e2efe3}.day-empty{font-size:8px;color:#b0b8b1;padding:3px}.own-request{padding:12px 13px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.own-request strong{font-size:10px;color:#46574a}.own-request small{display:block;margin-top:4px;color:#8b988e;font-size:9px}.empty-state{padding:35px 15px;text-align:center;color:#8e9a90;font-size:11px}.empty-state strong{display:block;color:#5c6e60;margin-bottom:5px}.member-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;align-items:end;gap:8px}.member-form .field{margin:0}.member-form .field input{min-height:38px}.checkbox-field{display:flex;align-items:center;gap:7px;padding:0 6px 10px;color:#637568;font-size:9px}.checkbox-field input{accent-color:#467451}.dialog{width:min(470px,calc(100% - 24px));border:1px solid #e4eae3;border-radius:12px;padding:19px;box-shadow:0 20px 80px #12251b36;color:#29392e}.dialog::backdrop{background:#17251f80;backdrop-filter:blur(2px)}.dialog h2{font-size:16px;margin:0 0 5px}.dialog p{font-size:10px;color:#859188;margin:0 0 14px}.dialog-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:14px}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:30;transform:translate(-50%,12px);opacity:0;pointer-events:none;background:#263c2e;color:white;border-radius:8px;padding:11px 16px;box-shadow:0 8px 24px #1c2a2030;font-size:11px;transition:.2s;max-width:calc(100vw - 30px)}.toast.show{opacity:1;transform:translate(-50%,0)}.mobile-nav{display:none}.page-tabs{display:flex;gap:5px;margin-bottom:13px;overflow:auto}.page-tab{border:1px solid #e3e9e2;background:white;color:#718075;border-radius:6px;padding:8px 10px;white-space:nowrap;font-size:9px}.page-tab.active{background:#eaf2eb;color:#436d4b;border-color:#dce9dd}.footnote{margin-top:14px;color:#a0aaa2;font-size:8px;line-height:1.7}.loading-bar{height:3px;background:#e6ece5;overflow:hidden;border-radius:5px}.loading-bar:after{content:"";display:block;height:100%;width:35%;background:#83aa89;animation:slide 1s infinite alternate}@keyframes slide{to{transform:translateX(190%)}}@media(max-width:1050px){.content{padding:24px 22px 45px}.sidebar{width:210px}.main{margin-left:210px}.topbar{padding:0 22px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}.shift-grid{grid-template-columns:1fr 1fr}.member-form{grid-template-columns:repeat(2,1fr)}.member-form .primary-button{grid-column:2}.schedule-days{grid-template-columns:repeat(7,minmax(145px,1fr))}}@media(max-width:700px){body{font-size:13px}.login-page{grid-template-columns:1fr;background:#f5f7f3}.login-story{display:none}.login-side{padding:24px;min-height:100svh;align-items:center}.login-card{padding:8px}.login-card h2{font-size:23px}.main{margin:0;padding-bottom:calc(71px + env(safe-area-inset-bottom))}.sidebar{display:none}.topbar{height:58px;padding:0 15px}.topbar-title{font-size:10px}.topbar-right{gap:6px}.sync-label{display:none}.week-select{max-width:150px;padding:7px;font-size:9px}.content{padding:20px 14px calc(25px + env(safe-area-inset-bottom))}.page-head{display:block;margin-bottom:16px}.page-head h1{font-size:23px;margin-top:7px}.page-head p{font-size:10px;line-height:1.6}.head-actions{margin-top:13px}.head-actions .primary-button,.head-actions .secondary-button{min-height:36px}.stats{gap:8px;margin-bottom:10px}.stat{padding:11px;border-radius:8px}.stat-label{font-size:9px}.stat-value{font-size:21px;margin-top:6px}.stat-note{font-size:8px;line-height:1.5}.dashboard-grid{gap:10px}.section-card{padding:13px}.section-head{margin-bottom:11px}.section-head h2{font-size:13px}.preview-shift{grid-template-columns:56px minmax(0,1fr);gap:7px;padding:8px}.member-total{display:none}.member-pill{font-size:8px;padding:4px 6px}.request-card{padding:10px;gap:8px;grid-template-columns:auto minmax(0,1fr)}.request-actions{grid-column:2}.request-actions button{min-height:29px}.shift-grid{grid-template-columns:1fr;gap:8px}.shift-card{padding:11px}.toolbar{align-items:stretch;flex-direction:column}.toolbar .form-row{display:grid;grid-template-columns:1fr 1fr}.toolbar .form-row>*{min-width:0}.toolbar .head-actions{margin:0}.schedule-days{grid-template-columns:repeat(7,minmax(132px,1fr));gap:6px}.schedule-day{min-height:200px}.enrollment-card{padding:10px;gap:8px}.slot-tag{font-size:7px}.enrollment-name strong{font-size:10px}.enrollment-count{font-size:10px}.member-form{grid-template-columns:1fr 1fr}.member-form .primary-button{grid-column:1/-1}.checkbox-field{padding-bottom:11px}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:0;right:0;bottom:0;z-index:9;padding:6px 7px calc(6px + env(safe-area-inset-bottom));border-top:1px solid #e4eae3;background:#ffffffed;backdrop-filter:blur(12px)}.mobile-nav button{min-height:49px;border:0;background:none;color:#87938a;display:grid;place-items:center;align-content:center;gap:3px;font-size:8px}.mobile-nav button span:first-child{font-size:16px}.mobile-nav button.active{color:#386b48}.footnote{font-size:8px}.dialog{padding:16px}.page-tabs{margin-left:-2px;margin-right:-2px}}
.availability-list{display:grid;gap:6px;margin:14px 0}.availability-row{display:grid;grid-template-columns:90px repeat(2,minmax(0,1fr));align-items:stretch;gap:7px}.availability-row>strong{display:flex;flex-direction:column;justify-content:center;color:#586a5c;font-size:10px}.availability-row>strong small{font:8px var(--mono);color:#9aa59c;margin-top:4px}.availability-row label{position:relative;display:block}.availability-row input{position:absolute;opacity:0}.availability-row label span{height:100%;min-height:43px;display:flex;justify-content:space-between;align-items:center;border:1px solid #e7ece6;border-radius:7px;background:#fbfcfa;padding:0 10px;color:#77857a;font-size:9px;cursor:pointer}.availability-row label span small{color:#a0aaa2;font:8px var(--mono)}.availability-row input:checked+span{background:#e9f2e9;border-color:#b8d1ba;color:#456d4b}.availability-row input:disabled+span{opacity:.55;cursor:not-allowed}.enrollment-controls{margin:14px 0}.enrollment-controls .field{flex:1;min-width:130px;margin:0}.enrollment-controls .field>span{font-size:10px;color:#66766a}.enrollment-controls select,.enrollment-controls input{width:100%;height:38px;border:1px solid #e1e8e0;border-radius:7px;background:white;padding:0 9px;color:#536258;font-size:10px}.assign-details{border-top:1px solid #edf0eb;margin-top:12px;padding-top:9px}.assign-details summary{font-size:9px;color:#55765c;cursor:pointer;list-style:none}.assign-details summary::-webkit-details-marker{display:none}.assign-details summary:after{content:"＋";float:right}.assign-details[open] summary:after{content:"−"}.member-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 8px;padding:10px 0;max-height:150px;overflow:auto}.member-checks label{display:flex;align-items:center;gap:6px;color:#68776c;font-size:9px;padding:4px}.member-checks input{accent-color:#467451}.empty-state strong{font-size:12px}.request-card .user-avatar{width:31px;height:31px}.request-card .request-actions{justify-self:end}.request-card .status{justify-self:end}@media(max-width:700px){.availability-row{grid-template-columns:54px repeat(2,minmax(0,1fr));gap:5px}.availability-row label span{padding:0 6px;font-size:8px}.availability-row label span small{font-size:7px}.availability-row>strong{font-size:9px}.availability-row>strong small{font-size:7px}.member-checks{max-height:180px}.request-card .request-actions{grid-column:1/-1;justify-self:end}.request-card .status{grid-column:2;grid-row:1;justify-self:end}}
.admin-mobile-nav{grid-template-columns:repeat(5,1fr)}.student-mobile-nav{grid-template-columns:repeat(3,1fr)}.more-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.more-links button{min-height:44px}@media(max-width:360px){.mobile-nav button{font-size:7px}.availability-row label span{display:grid;justify-content:center;gap:2px}}
.header-logout{display:none}@media(max-width:700px){.header-logout{display:grid;place-items:center;flex:none;width:30px;height:30px;border:1px solid #e2e9e1;border-radius:7px;background:#fff;color:#66786a;font-size:15px}.header-logout:hover{background:#eff5ef}}
.member-card .tech-toggle{min-height:32px;padding:0 10px;font-size:9px;flex:none}
