:root{--ink: #1a1a1a;--paper: #faf8f3;--rule: #d4cfc0;--accent: #c8443a;--accent-dim: #f0d5d2;--gold: #b8923a;--moss: #5a6e3a;--moss-dim: #e3e8d6;--sky: #3a5a7a;--sky-dim: #d6e0e8;--warn: #c47a1a;--warn-dim: #f5e3c5;--muted: #6b665a}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--paper);color:var(--ink);font-family:DM Sans,sans-serif;font-size:14px;line-height:1.5}h1,h2,h3{font-family:Fraunces,serif;font-weight:700;letter-spacing:-.02em}h1{font-size:28px}h2{font-size:20px;margin-bottom:12px}h3{font-size:16px}header.app-header{border-bottom:2px solid var(--ink);padding:14px 24px;background:var(--paper);position:sticky;top:0;z-index:100}.header-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand{display:flex;align-items:baseline;gap:12px}.brand .mark{font-family:Fraunces,serif;font-weight:900;font-size:22px;letter-spacing:-.03em}.brand .sub{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--muted)}.template-bar{display:flex;align-items:center;gap:10px;background:var(--ink);color:var(--paper);padding:6px 12px}.template-bar label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;opacity:.7}.template-bar select{background:transparent;color:var(--paper);border:1px solid #555;padding:4px 8px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500}.template-bar select option{background:var(--ink);color:var(--paper)}.user-chip{font-size:12px;color:var(--muted)}.user-chip strong{color:var(--ink)}.logout-btn{background:none;border:1px solid var(--rule);padding:4px 10px;cursor:pointer;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.logout-btn:hover{background:var(--accent-dim);border-color:var(--accent)}nav.tabs{border-bottom:1px solid var(--rule);padding:0 24px;display:flex;gap:0;background:var(--paper);flex-wrap:wrap}.tab{padding:14px 20px;cursor:pointer;font-size:13px;text-transform:uppercase;letter-spacing:.1em;border:none;background:transparent;border-bottom:2px solid transparent;font-family:DM Sans,sans-serif;color:var(--muted)}.tab.active{border-bottom-color:var(--accent);color:var(--ink);font-weight:500}.tab:hover{color:var(--ink)}main{padding:24px;max-width:1400px;margin:0 auto}.panel{background:#fff;border:1px solid var(--rule);padding:20px;margin-bottom:20px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:8px}button.action{padding:8px 16px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);font-family:DM Sans,sans-serif;font-size:12px;cursor:pointer;text-transform:uppercase;letter-spacing:.08em}button.action:hover{background:var(--accent);border-color:var(--accent)}button.action:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:transparent;color:var(--ink)}button.secondary:hover{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}button.danger{background:var(--accent);border-color:var(--accent);color:var(--paper)}button.danger:hover{background:#a0362e;border-color:#a0362e}button.tiny{padding:4px 8px;font-size:10px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;padding:10px 8px;border-bottom:2px solid var(--ink);text-transform:uppercase;font-size:10px;letter-spacing:.1em}td{padding:10px 8px;border-bottom:1px solid var(--rule);vertical-align:middle}tr:hover td{background:var(--paper)}input,select,textarea{padding:8px 10px;border:1px solid var(--rule);background:#fff;font-family:DM Sans,sans-serif;font-size:13px;width:100%}input:focus,select:focus,textarea:focus{outline:1px solid var(--accent);border-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;align-items:end}.field label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.badge{display:inline-block;padding:2px 8px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:500;border:1px solid}.badge-pw{background:#f5e3c5;border-color:var(--warn);color:var(--warn)}.badge-spec{background:var(--sky-dim);border-color:var(--sky);color:var(--sky)}.badge-gen-t{background:var(--moss-dim);border-color:var(--moss);color:var(--moss)}.badge-gen-p{background:#eef0e3;border-color:var(--moss);color:var(--moss);opacity:.85}.badge-gen-f{background:#f5f5ec;border-color:var(--muted);color:var(--muted)}.badge-call{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:20px}.stat{background:#fff;border:1px solid var(--rule);padding:16px}.stat .label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.stat .value{font-family:Fraunces,serif;font-size:28px;font-weight:700;margin-top:4px}.stat .delta{font-size:11px;color:var(--moss);margin-top:2px}.stat .delta.neg{color:var(--accent)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1a1a80;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--paper);border:2px solid var(--ink);padding:24px;max-width:600px;width:90%;max-height:85vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--rule)}.modal-close{background:none;border:none;font-size:20px;cursor:pointer}.empty-state{text-align:center;padding:40px;color:var(--muted);font-style:italic}.priority-list{background:var(--paper);border:1px solid var(--rule);padding:12px}.priority-list ol{list-style:none;counter-reset:pri}.priority-list li{counter-increment:pri;padding:6px 0 6px 28px;position:relative;font-size:12px}.priority-list li:before{content:counter(pri);position:absolute;left:0;top:6px;width:20px;height:20px;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.alert{padding:12px 16px;border-left:4px solid;margin-bottom:16px;font-size:13px}.alert-info{background:var(--sky-dim);border-left-color:var(--sky)}.alert-warn{background:var(--warn-dim);border-left-color:var(--warn)}.alert-success{background:var(--moss-dim);border-left-color:var(--moss)}.hint{font-size:11px;color:var(--muted);font-style:italic;margin-top:4px}.layout-2col{display:grid;grid-template-columns:1fr 320px;gap:20px}@media (max-width: 900px){.layout-2col{grid-template-columns:1fr}}.template-card{border:1px solid var(--rule);padding:16px;background:#fff;margin-bottom:12px}.template-card.active-tpl{border-color:var(--accent);border-width:2px}.template-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;flex-wrap:wrap;gap:8px}.template-card h3{font-size:18px}.template-stats{display:flex;gap:16px;font-size:12px;color:var(--muted);margin-top:8px;flex-wrap:wrap}.active-tag{background:var(--accent);color:var(--paper);font-size:10px;padding:2px 8px;text-transform:uppercase;letter-spacing:.08em}.login-screen{max-width:420px;margin:80px auto;padding:32px;background:#fff;border:2px solid var(--ink)}.login-screen h1{margin-bottom:4px}.login-screen .sub{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.15em;margin-bottom:24px}.login-screen label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px;margin-top:16px}.login-screen .pin-input{font-size:24px;letter-spacing:8px;text-align:center;font-variant-numeric:tabular-nums}.login-screen .err-msg{color:var(--accent);font-size:12px;margin-top:8px}.login-screen button{width:100%;padding:12px;margin-top:20px}.login-screen .leader-cta{font-size:11px;text-align:center;margin-top:16px;color:var(--muted)}.shift-checkbox-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--rule)}.shift-checkbox-row input[type=checkbox]{width:auto}.shift-checkbox-row label{flex:1;cursor:pointer}.pin-cell{font-family:Courier New,monospace;font-size:14px;letter-spacing:2px}.spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--rule);border-top-color:var(--ink);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{background:var(--accent-dim);border-left:4px solid var(--accent);padding:12px 16px;margin-bottom:16px;color:var(--accent);font-size:13px}
