:root{--bg:#0f1115;--panel:#181b22;--line:#272b34;--text:#e7e9ee;--muted:#9aa3b2;--accent:#5b8cff;--good:#2ea36b;--warn:#c9a227;--bad:#d2544a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.topnav{display:flex;align-items:center;gap:20px;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--panel)}.topnav .brand{font-weight:700;margin-right:8px}.topnav a{color:var(--muted);text-decoration:none;font-size:14px}.topnav a:hover{color:var(--text)}.topnav .spacer{flex:1 1}.topnav .who{color:var(--muted);font-size:13px}button.small{padding:5px 10px;font-size:13px}.userform{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px;align-items:center}.userform input,.userform select{font:inherit;padding:9px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text)}.grid td button+button{margin-left:6px}.daterange{color:var(--muted);font-size:14px;display:inline-flex;align-items:center;gap:6px}.daterange input{font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text)}.dim{color:var(--muted);font-size:12px}.editor{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:18px}.erow{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin-bottom:12px}.erow:last-child{margin-bottom:0}.editor label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.editor label.chk{flex-direction:row;align-items:center;gap:6px}.editor label.grow{flex:1 1}.editor input,.editor select{font:14px inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text)}.editor .elabel{color:var(--muted);font-size:13px;align-self:center}.login{max-width:360px}.loginform{display:flex;flex-direction:column;gap:12px;margin-top:16px}.loginform input{font:inherit;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text)}.wrap{max-width:860px;margin:0 auto;padding:40px 24px}.wrap.wide{max-width:1200px}.calbar{justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}.calbar,.monthnav{display:flex;align-items:center}.monthnav{gap:10px}.monthlabel{font-size:18px;font-weight:700;min-width:170px;text-align:center}.sitesel{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-weight:600}.sitetabs{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:4px 0 18px}.sitetabs button{background:var(--panel);color:var(--muted);border:none;border-left:1px solid var(--line);padding:9px 18px;font-weight:600;font-size:14px}.sitetabs button:first-child{border-left:none}.sitetabs button.on{background:var(--accent);color:#fff}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{background:var(--panel);color:var(--muted);border:none;border-left:1px solid var(--line);border-radius:0;padding:8px 14px;font-weight:600}.seg button:first-child{border-left:none}.seg button.on{background:var(--accent);color:#fff}.cal{border:1px solid var(--line);border-radius:10px;overflow:hidden}.calhead,.calweek{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calhead>div{padding:8px;font-size:12px;color:var(--muted);font-weight:700;text-align:center;background:var(--panel)}.calcell,.calhead>div{border-bottom:1px solid var(--line)}.calcell{min-width:0;min-height:110px;border-right:1px solid var(--line);padding:6px;vertical-align:top}.calweek>.calcell:last-child{border-right:none}.calcell.dimmed{background:#0c0e12}.calcell.dimmed .caldate{color:var(--muted)}.calcell.holiday{background:rgba(201,162,39,.12)}.caldate{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;font-size:13px;margin-bottom:4px}.holtag{font-size:10px;font-weight:700;color:var(--warn)}.calshift{display:flex;gap:0;align-items:baseline;font-size:12px;padding:2px 4px;white-space:nowrap;overflow:hidden}.calshift .calicon{width:15px;flex:none;font-size:11px;text-align:center;margin-right:4px}.calshift .calkind{width:28px;box-sizing:border-box;text-align:center;margin-right:3px}.calshift .caltag{width:28px;box-sizing:border-box;flex:none;margin-right:7px}.calshift .caltag.filled{font-size:9px;font-weight:700;letter-spacing:.04em;color:var(--text);border:1px solid var(--line);border-radius:3px;padding:0 3px;line-height:1.5}.calshift .callabel{color:var(--muted);flex:none}.calshift .calname{color:var(--text);flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis}.calshift.holshift{background:rgba(201,162,39,.22);border-radius:4px}.calshift.myshift{background:rgba(56,139,253,.2);border-radius:4px}.calshift.myshift .calname{font-weight:700}.calshift.hlshift{background:rgba(163,113,247,.24);border-radius:4px}.calshift.hlshift .calname{font-weight:700;color:#c9b3ff}.calshift.openshift{background:rgba(248,81,73,.16);border-radius:4px}.calshift.openshift .calname{color:#ff7b72;font-weight:700;letter-spacing:.04em}.calkind{flex:none;font-size:9px;font-weight:700;letter-spacing:.04em;border-radius:3px;padding:0 3px;line-height:1.5;color:var(--muted);border:1px solid var(--line)}.calkind.app{color:var(--text)}.calshift .workedtag{flex:none;margin-left:5px;font-size:9px;font-weight:700;letter-spacing:.03em;color:#3fb950}.calshift .workedtag.pending{color:var(--muted)}.calshift .workedtag.denied{color:#ff7b72;text-decoration:line-through}.calsel.openopt{color:#ff7b72;font-weight:700}.calshift.addslot{gap:4px;white-space:normal;opacity:.75;border:1px dashed var(--line);border-radius:4px;padding:1px 3px;margin:2px 0}.calshift.addslot .callabel{flex:none}.calshiftedit{margin:2px 0}.calshift.editing{gap:4px;white-space:normal}.calsel{flex:1 1;min-width:0;font-size:12px;padding:1px 2px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:4px}.clockbtn{flex:none;background:none;border:none;cursor:pointer;font-size:12px;padding:0 2px;line-height:1}.clockbtn:hover{transform:scale(1.15)}.timeedit{display:flex;align-items:center;gap:4px;margin:3px 0 5px 16px;flex-wrap:wrap}.timeedit input[type=time]{font-size:11px;padding:1px 3px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:4px}.timeedit .small{padding:2px 8px;font-size:11px}.toggle{color:var(--muted);font-size:14px;display:flex;align-items:center;gap:6px}button.approve{background:var(--good);border-color:var(--good)}button.deny{background:transparent;color:var(--bad);border-color:var(--bad);margin-left:6px}header h1{margin:0;font-size:26px}.sub{color:var(--muted);margin:4px 0 24px}.controls{display:flex;gap:12px;align-items:center;margin-bottom:20px}button,select{font:inherit;padding:9px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer}button{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--text)}.status{display:flex;gap:8px;margin-bottom:20px}.pill{padding:4px 10px;border-radius:999px;font-size:13px;background:var(--panel);border:1px solid var(--line);color:var(--muted)}.pill.good{color:var(--good);border-color:var(--good)}.pill.warn{color:var(--warn);border-color:var(--warn)}.pill.bad{color:var(--bad);border-color:var(--bad)}.pill.review{color:var(--warn);border-color:var(--warn)}.pill.certified{color:var(--muted);border-color:var(--line)}.esep{border:none;border-top:1px solid var(--line);margin:16px 0 10px}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:16px}.card h2{margin:0 0 10px;font-size:16px}.torow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}.torow input,.torow select{padding:7px 9px}.torow input[placeholder]{flex:1 1;min-width:140px}.tolist{list-style:none;padding:0;margin:10px 0}.tolist li{justify-content:space-between;gap:10px}.today,.tolist li{display:flex;align-items:center;padding:7px 0;border-top:1px solid var(--line)}.today{flex-wrap:wrap;gap:8px}.today:first-of-type{border-top:none}.today .pill{font-size:12px}.callbar{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--panel);border:1px solid var(--good);border-radius:10px;padding:10px 14px;margin-bottom:12px}.calldot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--good);margin-right:8px;animation:callpulse 1.2s ease-in-out infinite}@keyframes callpulse{0%,to{opacity:1}50%{opacity:.25}}.linklike{background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px;padding:4px;text-decoration:underline;align-self:center}.linklike:hover{color:var(--fg)}.muted{color:var(--muted)}.gl-grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.gl-card{background:var(--panel);border-left:1px solid var(--line);border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:16px 18px}.gl-card.gl-ready{border-left-color:var(--good)}.gl-card.gl-blocked{border-left-color:var(--warn)}.gl-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.gl-head h2{margin:0;font-size:17px}.gl-blockers{margin:10px 0 0;padding-left:18px}.gl-blockers li{margin:6px 0;line-height:1.4}.violations{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:20px}.violations h2{margin:0 0 12px;font-size:16px}.vrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line)}.vrow:first-of-type{border-top:none}.table-wrap{overflow-x:auto}.grid{width:100%;border-collapse:collapse}.grid td,.grid th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.grid td.note{white-space:normal}.grid th{color:var(--muted);font-weight:600;font-size:13px}.grid tr.night td{color:#c9d2ff}.error{color:var(--bad)}.phi-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.phi-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;max-width:460px;padding:24px;line-height:1.55}.phi-card h2,.phi-card p{margin:0 0 12px;color:var(--text)}.phi-card button{margin-top:8px;width:100%}.approvals{margin:12px 0;display:flex;flex-direction:column;gap:8px}.approvalrow{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;background:rgba(56,139,253,.12);border:1px solid var(--accent);border-radius:10px;padding:12px 14px}.approvalrow span{color:var(--text)}.approvalbtns{display:flex;gap:8px;flex:none}.previewbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;background:rgba(201,162,39,.14);border:1px solid var(--warn);border-radius:10px;padding:12px 14px;margin:12px 0}.previewbar span{color:var(--text)}.starbtn{background:none;border:none;cursor:pointer;font-size:15px;color:var(--warn);padding:0 6px 0 0;line-height:1}.starbtn:hover{transform:scale(1.15)}body.ram-mode{box-shadow:inset 0 0 0 5px #b3261e;min-height:100vh}body.ram-mode .topnav{background:linear-gradient(180deg,rgba(179,38,30,.3),rgba(179,38,30,.16));border-bottom:2px solid #b3261e}body.ram-mode .topnav .brand{color:#ff6d60}@media (max-width:700px){.incal .caltag{display:none}.incal .calshift{padding:2px;font-size:11px}.incal .calcell{padding:4px 2px;min-height:84px}}