:root{--bg:#f7f8fb;--surface:#ffffff;--surface-2:#e9f3ff;--ink:#20242d;--muted:#667085;--line:#d9dee8;--academy-blue:#1d76cb;--academy-blue-deep:#0f4f9f;--academy-red:#ea4f73;--green:#1d76cb;--green-2:#dcebe3;--amber:#b46900;--red:#b42318;--cyan:#087990;--shadow:0 10px 30px rgba(32,36,45,0.08);--academy-shadow:0 24px 60px rgba(31,95,166,0.1)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:#eff4f8;color:var(--ink);font-family:Aptos,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.topbar{display:grid;grid-gap:8px;gap:8px;padding:10px 16px 8px;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:20}.filter-strip,.search-input,.topbar-controls,.topbar-main{display:flex;align-items:center;gap:10px;min-width:0}.topbar-main{justify-content:space-between;flex-wrap:nowrap}.topbar-controls{align-items:flex-end;justify-content:space-between;gap:12px}.brand{display:grid;grid-template-columns:214px minmax(180px,1fr);align-items:center;grid-gap:14px;gap:14px;min-width:430px}.brand-copy{display:grid;grid-gap:1px;gap:1px;min-width:0}.brand h1{margin:0;font-size:20px;line-height:1.15;color:#102f55}.academy-logo{display:block;height:auto;max-width:100%}.topbar-logo{width:214px}.brand span,.subtle{color:var(--muted);font-size:13px}.form-row,.metrics,.tabs,.toolbar,.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.top-actions,.topbar-controls .tabs{flex-wrap:nowrap}.main{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:10px;gap:10px;padding:10px}.main,.workspace{min-width:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.toolbar{justify-content:space-between;padding:14px;margin-bottom:14px}.filter-strip{justify-content:flex-end;flex:1 1 auto;flex-wrap:nowrap;gap:8px;min-width:0;overflow-x:auto;padding-bottom:1px}.field{display:grid;grid-gap:6px;gap:6px;color:var(--muted);font-size:12px;min-width:150px}.toolbar .field{flex:0 1 170px;min-width:0}.compact-field{flex:0 0 116px;gap:3px;min-width:0}.compact-field.date-field{flex-basis:136px}.compact-field.search-compact-field{flex-basis:166px}.compact-field.scale-field{flex-basis:112px}.compact-refresh{align-self:flex-end;flex:0 0 auto;white-space:nowrap}.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:7px;padding:9px 10px;min-height:38px;width:100%;min-width:0}.input-with-icon{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;grid-gap:8px;gap:8px}.input-with-icon svg{color:var(--muted);height:18px;justify-self:center;width:18px}.compact-field input,.compact-field select{min-height:32px;padding:6px 8px}.search-input{gap:6px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:0 8px;min-height:32px}.search-input svg{color:var(--muted);flex:0 0 auto}.search-input input{border:0;padding:0;min-height:28px}.search-input input:focus{outline:none}.field textarea{min-height:76px;resize:vertical}.field select[multiple]{min-height:132px}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);min-height:34px;padding:6px 10px;border-radius:7px;display:inline-flex;align-items:center;gap:8px;font-size:14px}.btn:hover{border-color:#aeb8c7}.btn-primary{background:linear-gradient(135deg,var(--academy-blue),#5aa0e4);border-color:rgba(31,95,166,.16);box-shadow:0 12px 28px rgba(47,128,209,.15);color:#fff}.btn-danger{color:var(--red)}.tab,.tabs{gap:6px}.tab{border:1px solid transparent;background:transparent;color:var(--muted);padding:6px 9px;border-radius:7px;display:inline-flex;align-items:center;min-height:32px}.tab.active{background:var(--surface-2);color:var(--ink);border-color:var(--line)}.schedule-shell{display:grid;grid-gap:4px;gap:4px;min-width:0}.schedule-top-scroll{overflow-x:auto;overflow-y:hidden;height:14px;border:1px solid var(--line);border-radius:8px 8px 5px 5px;background:#fff}.schedule-top-scroll div{height:1px}.schedule-top-scroll-hidden{height:0;border:0}.schedule-scroll{overflow:auto;border-radius:8px;border:1px solid var(--line);background:#fff;max-height:calc(100vh - 126px)}.compact-table{min-width:max-content}.compact-grid{display:grid}.compact-header{position:-webkit-sticky;position:sticky;top:0;z-index:18;grid-template-rows:28px 38px}.compact-row{position:relative;border-bottom:1px solid #111827}.compact-duty-row{grid-template-rows:44px;border-bottom:2px solid #111827}.compact-cell{min-width:0;border-right:1px solid #111827;border-bottom:1px solid #111827;background:#fff;color:#0f172a;font-size:var(--schedule-cell-font-size,12px);line-height:1.15}.compact-day-head,.compact-head,.compact-week{display:grid;place-items:center;background:#c7bdd5;font-weight:650;font-size:var(--schedule-header-font-size,12px)}.compact-week{grid-row:1;background:#b7c9de;font-size:var(--schedule-week-font-size,13px)}.compact-week-spacer{grid-row:1;background:#c7bdd5}.compact-day-head,.compact-title-name,.compact-title-no,.compact-title-position{grid-row:2}.compact-no{grid-column:1/2;left:0;text-align:center}.compact-name{grid-column:2/3;left:var(--schedule-no-width,42px)}.compact-position{grid-column:3/4;left:calc(var(--schedule-no-width, 42px) + var(--schedule-name-width, 240px))}.compact-sticky{position:-webkit-sticky;position:sticky;z-index:10}.compact-header .compact-sticky{z-index:24}.compact-resource-cell{display:flex;align-items:center;padding:6px;background:#fff}.compact-no.compact-resource-cell{justify-content:center;padding:0}.compact-resource-name{font-size:var(--schedule-resource-name-font-size,21px);font-family:Georgia,Times New Roman,serif;font-weight:700}.compact-position.compact-resource-cell{font-size:var(--schedule-resource-position-font-size,15px);font-family:Georgia,Times New Roman,serif}.compact-duty-label{display:flex;align-items:center;background:#dbeafe;color:#102f55;font-size:var(--schedule-header-font-size,12px);font-weight:750;line-height:1.15;padding:6px}.compact-no.compact-duty-label{justify-content:center;padding:0}.compact-duty-cell{align-items:center;background:#eef6ff;color:#102f55;display:flex;font-size:var(--schedule-event-font-size,12px);font-weight:650;justify-content:center;line-height:1.1;min-height:44px;overflow:hidden;padding:4px 5px;text-align:center;word-break:break-word}.compact-duty-cell-empty{background:#fff}.compact-day-cell{z-index:1}.compact-empty-action{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;border-right:1px solid #111827;border-bottom:1px solid #111827;cursor:crosshair}.compact-empty-action:hover{background-image:linear-gradient(rgba(36,122,88,.08),rgba(36,122,88,.08));outline:2px solid rgba(36,122,88,.36);outline-offset:-2px}.compact-day-cell.day-off,.compact-day-head.day-off,.compact-duty-cell.day-off{background:#d4d4d4}.compact-day-cell.holiday,.compact-day-head.holiday,.compact-duty-cell.holiday{background:#cfcfcf}.compact-day-cell.today,.compact-day-head.today,.compact-duty-cell.today{background:#fff3c4;box-shadow:inset 2px 0 0 #247a58,inset -2px 0 0 #247a58}.compact-day-head.today{color:#0f3d2f}.compact-event{z-index:3;margin:0;padding:5px 7px;border:1px solid rgba(15,23,42,.32);border-radius:0;color:#0f172a;font-size:var(--schedule-event-font-size,12px);font-weight:600;line-height:1.14;text-align:center;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--schedule-event-lines,5);word-break:break-word}.compact-event:focus-visible,.compact-event:hover{filter:brightness(.98);outline:1px solid rgba(29,118,203,.5);outline-offset:-1px}.schedule-grid{display:grid;min-width:max-content}.grid-cell{min-height:46px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px;background:#fff;font-size:12px;line-height:1.2}.grid-head,.resource-cell{position:-webkit-sticky;position:sticky;background:#f3f5f9;z-index:4;font-weight:650}.grid-head{top:0;min-height:42px}.resource-cell{left:0;z-index:6;width:236px;display:grid;grid-gap:2px;gap:2px}.resource-cell .role{color:var(--muted);font-size:11px;font-weight:450}.event-pill{border:1px solid rgba(32,36,45,.16);border-left:4px solid var(--green);background:#f8fafc;border-radius:6px;padding:5px 6px;margin-bottom:4px;min-width:104px;max-width:132px;text-align:left;color:#1f2937;font-size:11px;line-height:1.2}.event-pill strong{display:block;font-size:11px;font-weight:650}.event-meta{color:var(--muted);display:block;margin-top:3px}.side{display:grid;grid-gap:14px;gap:14px;align-content:start}.side-section{padding:14px}.modal h2,.side-section h2{margin:0 0 10px;font-size:16px}.metric{min-width:84px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fbfcfd}.metric b{display:block;font-size:20px}.load-block{display:grid;grid-gap:8px;gap:8px;padding-top:12px}.load-block+.load-block{margin-top:12px;border-top:1px solid var(--line)}.load-head,.load-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.load-bar{height:8px;overflow:hidden;border-radius:999px;background:#edf1f7}.load-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green),var(--cyan))}.load-list{display:grid;grid-gap:6px;gap:6px}.load-row{font-size:12px;color:var(--ink)}.load-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.load-row b{flex:0 0 auto;font-size:12px}.list{display:grid;grid-gap:8px;gap:8px;max-height:260px;overflow:auto}.list-row{border-top:1px solid var(--line);padding-top:8px;font-size:13px}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.18)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden;background:radial-gradient(circle at top left,rgba(29,118,203,.18),transparent 24%),radial-gradient(circle at bottom right,rgba(234,79,115,.12),transparent 26%),linear-gradient(180deg,#f7fafc,#eff4f8 52%,#f8fbfd)}.login-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(96,116,137,.08) 1px,transparent 0),linear-gradient(90deg,rgba(96,116,137,.08) 1px,transparent 0);background-size:48px 48px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 88%);mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 88%)}.login-box{width:min(544px,100%);padding:34px 32px;background:rgba(255,255,255,.9);border:1px solid rgba(29,118,203,.1);border-radius:8px;box-shadow:0 24px 60px rgba(31,95,166,.08);display:grid;grid-gap:18px;gap:18px;position:relative;z-index:1}.login-logo{justify-self:center;width:min(320px,100%)}.login-heading{display:grid;grid-gap:8px;gap:8px;text-align:center;margin-bottom:2px}.eyebrow{color:var(--academy-blue-deep);font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase}.login-box h1{margin:0;color:#102f55;font-size:36px;font-weight:700;line-height:1.1}.login-heading p{margin:0;color:#4f6785;font-size:16px;line-height:1.5}.login-field{min-width:0;gap:8px;color:#4f6785;font-weight:700}.login-box .input-with-icon{grid-template-columns:22px minmax(0,1fr);gap:10px}.login-box .field input{border-color:rgba(29,118,203,.28);border-radius:18px;min-height:46px;padding:11px 14px}.login-box .field input:focus{border-color:rgba(47,128,209,.55);box-shadow:0 0 0 4px rgba(47,128,209,.12)}.login-submit{justify-content:center;border-radius:999px;font-size:16px;min-height:46px}.login-message{border:1px solid rgba(25,121,95,.2);background:#eaf8f2;color:#19795f;border-radius:8px;font-size:13px;font-weight:650;padding:10px 12px}.login-email-summary{align-items:center;background:rgba(255,255,255,.88);border:1px solid rgba(29,118,203,.14);border-radius:18px;display:flex;gap:12px;justify-content:space-between;padding:12px 14px}.login-email-summary div{display:grid;grid-gap:4px;gap:4px;min-width:0}.login-email-summary span{color:rgba(79,103,133,.72);font-size:12px;font-weight:800;text-transform:uppercase}.login-email-summary b{color:#102f55;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.login-email-summary button,.login-muted-action{border:0;background:transparent;color:var(--academy-blue-deep);font-weight:700;padding:3px 6px}.login-muted-action{justify-self:center;color:rgba(79,103,133,.72)}.login-email-summary button:hover,.login-muted-action:hover{color:#102f55}.service-link{display:flex;justify-content:center}.service-link button{border:0;background:transparent;color:rgba(79,103,133,.72);font-weight:700;padding:3px 6px}.service-link button:hover{color:var(--academy-blue-deep)}.modal-backdrop{position:fixed;inset:0;background:rgba(19,25,34,.36);display:grid;place-items:center;padding:18px;z-index:50}.modal{width:min(880px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:8px;border:1px solid var(--line);box-shadow:0 24px 70px rgba(19,25,34,.24);padding:18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.form-grid .wide{grid-column:1/-1}.conflict-box{border:1px solid #f7c96f;background:#fff8e6;color:#674300;padding:10px;border-radius:8px;margin:10px 0;display:grid;grid-gap:6px;gap:6px}.catalog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px}.access-grid{display:grid;grid-template-columns:minmax(520px,1.25fr) minmax(320px,.75fr);grid-gap:14px;gap:14px;align-items:start}.access-panel{padding:14px}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.section-head h2{margin:0 0 4px;font-size:16px}.access-create{display:grid;grid-template-columns:minmax(180px,1fr) auto;grid-gap:8px;gap:8px;align-items:center;margin-bottom:12px}.access-create-users{grid-template-columns:minmax(190px,1.2fr) minmax(120px,.8fr) minmax(128px,.6fr) auto}.access-create input,.access-create select,.access-row input,.access-row select{border:1px solid var(--line);border-radius:7px;min-width:0;min-height:34px;padding:6px 8px}.access-list{display:grid;grid-gap:8px;gap:8px}.access-row{display:grid;grid-template-columns:minmax(190px,1.1fr) minmax(120px,.8fr) minmax(128px,.55fr) auto auto;grid-gap:8px;gap:8px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fff}.access-domain-row{grid-template-columns:minmax(180px,1fr) auto auto}.access-identity{display:grid;grid-gap:2px;gap:2px;min-width:0}.access-identity b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.access-row-inactive{background:#f6f7f9;opacity:.65}.access-message{grid-column:1/-1}.catalog-column{padding:14px}.analytics-grid{display:grid;grid-template-columns:minmax(320px,1.1fr) minmax(260px,.9fr) minmax(260px,.9fr);grid-gap:14px;gap:14px;align-items:start}.catalog-create{display:grid;grid-template-columns:minmax(120px,1fr) minmax(96px,.8fr) auto;grid-gap:8px;gap:8px;align-items:center;margin-bottom:12px}.catalog-create input,.catalog-row input{border:1px solid var(--line);border-radius:7px;min-width:0;min-height:34px;padding:6px 8px}.catalog-create input[type=color],.catalog-row input[type=color]{padding:3px}.catalog-list{display:grid;grid-gap:8px;gap:8px;max-height:62vh;overflow:auto}.catalog-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(96px,.8fr) 74px auto auto;grid-gap:8px;gap:8px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fff}.catalog-row-inactive{opacity:.62;background:#f6f7f9}.catalog-active{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}.catalog-active input{min-height:auto}.catalog-empty-extra{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-row-error{grid-column:1/-1;color:var(--red);font-size:12px}.empty-state{padding:36px;color:var(--muted);text-align:center}@media (max-width:980px){.side{grid-template-columns:repeat(2,minmax(0,1fr))}.access-grid,.analytics-grid,.catalog-grid,.form-grid{grid-template-columns:1fr}.catalog-row{grid-template-columns:minmax(140px,1fr) minmax(96px,.8fr) 74px}.access-create,.access-create-users,.access-domain-row,.access-row{grid-template-columns:1fr}.catalog-active,.catalog-row .btn{grid-column:span 1}}@media (max-width:680px){.topbar{padding:10px}.topbar-main{align-items:flex-start;flex-direction:column}.brand{grid-template-columns:1fr;min-width:0;width:100%}.topbar-logo{width:230px}.topbar-main{gap:8px}.top-actions{flex-wrap:nowrap}.top-actions,.topbar-controls{width:100%;overflow-x:auto;padding-bottom:1px}.filter-strip{flex:0 0 auto;overflow:visible}.main{padding:12px}.side{grid-template-columns:1fr}.resource-cell{width:190px}}