:root{--brand-blue:#78c6f0;--brand-blue-soft:#9fc5f8;--chrome-from:#166a94;--chrome-to:#0a4159;--text:#1c1c1b;--text-strong:#333;--text-muted:#666;--text-on-dark:#fff;--surface:#fff;--border:#ddd;--action:#2b78e4;--action-hover:#0071bc;--danger:#cf2a27;--danger-hover:#900;--warn-bg:#fef3c7;--warn-border:#d97706;--warn-text:#92400e;--ok-bg:#b6d7a8;--ok-border:#6aa84f;--ok-text:#38761d;--bad-bg:#ea9999;--bad-border:#e06666;--bad-text:#900;--status-online:#2e7d32;--status-redirect:#ff6f00;--status-offline:#c62828;--status-blocked:#475569;--page-gutter:clamp(20px, 5vw, 64px);--page-max:1200px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius-sm:4px;--radius-md:8px;--radius-lg:16px;--radius-tile:20px;--shadow-card:0 20px 40px #00000026;--shadow-tile:0 4px 10px #0000001a;--shadow-tile-hover:0 12px 24px #0000002e;--shadow-modal:0 24px 60px #0000004d;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:"Poppins", var(--font);--text-sm:13px;--text-base:14px;--text-lg:18px;--text-xl:24px;--text-2xl:36px;--transition:.16s ease}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);font-size:var(--text-base);color:var(--text)}:focus-visible{outline:2px solid var(--action);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.btn{justify-content:center;align-items:center;gap:var(--space-2);font:inherit;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition), border-color var(--transition);border:1px solid #0000;display:inline-flex}.btn--full{width:100%}.btn--primary{background-color:var(--action);color:var(--text-on-dark)}.btn--primary:hover{background-color:var(--action-hover)}.btn--secondary{background-color:var(--surface);color:var(--action);border-color:var(--action)}.btn--secondary:hover{background-color:var(--brand-blue-soft)}.btn--danger{background-color:var(--danger);color:var(--text-on-dark)}.btn--danger:hover{background-color:var(--danger-hover)}.btn--warning{background-color:var(--surface);color:var(--warn-text);border-color:var(--warn-border)}.btn--warning:hover:not(:disabled){background-color:var(--warn-bg)}.btn--ghost{color:var(--text-muted);border-color:var(--border);background-color:#0000}.btn--ghost:hover{color:var(--text);border-color:var(--text-muted)}.btn:disabled{opacity:.6;cursor:not-allowed}.dashboard-actions>.btn,.account-heading__actions>.btn{padding:var(--space-4) var(--space-5);font-size:var(--text-lg);font-weight:600}.btn--icon{border-radius:var(--radius-md);justify-content:center;width:36px;height:36px;padding:0}.btn--icon-danger{color:var(--danger);border-color:var(--danger)}.btn--icon-danger:not(:disabled):hover{background-color:var(--danger);border-color:var(--danger);color:var(--text-on-dark)}.alert{gap:var(--space-3);width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);margin:0 auto var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid;display:flex}.alert__icon{flex-shrink:0;margin-top:2px}.alert__body{flex:1}.alert--ok{background-color:var(--ok-bg);border-color:var(--ok-border);color:var(--ok-text)}.alert--bad{background-color:var(--bad-bg);border-color:var(--bad-border);color:var(--bad-text)}.alert__title{font-weight:700}.alert__list{margin:var(--space-2) 0 0 var(--space-5);font-size:var(--text-sm)}.alert__dismiss{margin-top:var(--space-2);color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}.modal__backdrop{padding:var(--space-4);z-index:100;background-color:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background-color:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:var(--space-6);width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.modal__title{font-size:var(--text-xl);color:var(--text-strong)}.modal__close{padding:var(--space-1);cursor:pointer;color:var(--text-muted);transition:color var(--transition);background:0 0;border:none;display:flex}.modal__close:hover{color:var(--text)}.modal__body{gap:var(--space-3);flex-direction:column;display:flex}.modal__body label{font-size:var(--text-sm);color:var(--text-strong);font-weight:600}.modal__body input{padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface)}.modal__body input[type=color]{padding:var(--space-1);cursor:pointer;height:40px}.modal__footer{justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);display:flex}.logo{width:auto;height:clamp(56px,16vw,130px)}.login-page,.signup-page{background:linear-gradient(135deg, var(--brand-blue-soft), var(--brand-blue));min-height:100vh;padding:var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.login-card,.signup-card{background-color:var(--surface);padding:var(--space-7);gap:var(--space-5);border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:relative}.login-back-button{top:var(--space-4);left:var(--space-4);width:40px;height:40px;color:var(--text-strong);cursor:pointer;transition:background-color var(--transition), color var(--transition), transform var(--transition);background-color:#f2f4f6;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.login-back-button:hover{background-color:var(--action);color:var(--text-on-dark);transform:translate(-2px)}.login-back-button:active{transform:translate(-2px)scale(.94)}.login-card input,.signup-card input{padding:var(--space-2);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm)}.login-options{font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.signup-agree{font-size:var(--text-sm)}.settings-tabs{gap:var(--space-1);border-bottom:1px solid var(--border);display:flex}.settings-tab{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--text-muted);font-size:var(--text-base);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-weight:600}.settings-tab:hover{color:var(--text-strong);background-color:#00000008}.settings-tab--active{color:var(--action);border-bottom-color:var(--action)}.settings-panel{gap:var(--space-5);flex-direction:column;display:flex}.settings-panel--forward{animation:.22s ease-out settings-slide-from-right}.settings-panel--back{animation:.22s ease-out settings-slide-from-left}@keyframes settings-slide-from-right{0%{opacity:0;transform:translate(24px)}}@keyframes settings-slide-from-left{0%{opacity:0;transform:translate(-24px)}}@media (prefers-reduced-motion:reduce){.settings-panel--forward,.settings-panel--back{animation:none}}.login-step-title{font-size:var(--text-lg);text-align:center;margin:0}.mfa-qr-block{gap:var(--space-3);flex-direction:column;display:flex}.mfa-qr{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2);background-color:#fff;align-self:center}.mfa-secret{margin-top:var(--space-1);letter-spacing:.08em;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:inline-block}.mfa-backup-codes{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface-muted,transparent);text-align:center;grid-template-columns:repeat(2,1fr);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;list-style:none;display:grid}.mfa-status{align-items:center;gap:var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.mfa-status-line{color:var(--text-muted,inherit)}.mfa-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);color:#fff;font-weight:600}.mfa-badge--on{background-color:var(--status-online)}.mfa-badge--off{background-color:var(--status-offline)}.settings-card-wrap{padding:0 var(--page-gutter) var(--space-6);justify-content:center;display:flex}.dashboard-page{padding-bottom:var(--space-6)}.dashboard-actions{justify-content:flex-end;gap:var(--space-3);width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);padding-bottom:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.dashboard-actions--centered{justify-content:center;width:auto;max-width:none;margin:0;padding:0}.section-heading{align-items:center;gap:var(--space-3);width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);margin:var(--space-7) auto var(--space-5);color:var(--text-strong);font-size:var(--text-lg);display:flex}.section-heading:first-child{margin-top:0}.dashboard-actions+.section-heading{margin-top:var(--space-4)}.section-heading h2{font-size:clamp(var(--text-xl), 4.5vw, var(--text-2xl));font-weight:700;line-height:1.2}.section-heading__edit{background-color:var(--surface);width:32px;height:32px;color:var(--action);box-shadow:var(--shadow-tile);cursor:pointer;transition:background-color var(--transition), color var(--transition), box-shadow var(--transition);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;transform:translateY(-3px)}.section-heading__edit:hover{background-color:var(--action);color:var(--text-on-dark);box-shadow:var(--shadow-tile-hover)}.section-heading__edit:disabled{opacity:.6;cursor:not-allowed}.tile-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));align-items:stretch;display:grid}.empty-services{justify-content:center;align-items:center;gap:var(--space-2);min-height:170px;padding:var(--space-6) var(--space-5);text-align:center;border:2px dashed var(--border);border-radius:var(--radius-tile);background-color:var(--surface);color:var(--text-muted);flex-direction:column;grid-column:1/-1;display:flex}.empty-services__icon{width:44px;height:44px;margin-bottom:var(--space-1);color:var(--action);background-color:#2b78e41a;border-radius:50%;place-items:center;display:grid}.empty-services__title{font-size:var(--text-lg);color:var(--text-strong);font-weight:600}.empty-services__hint{font-size:var(--text-sm);max-width:46ch}.announcement{align-items:flex-start;gap:var(--space-4);width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);margin:0 auto var(--space-5);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background-color:var(--surface);box-shadow:var(--shadow-tile);display:flex}.announcement__icon{width:44px;height:44px;color:var(--action);background-color:#2b78e41a;border-radius:50%;flex-shrink:0;place-items:center;display:grid}.announcement__content{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.announcement__title{font-size:var(--text-lg);color:var(--text-strong);font-weight:700}.announcement__body{font-size:var(--text-base);color:var(--text);white-space:pre-line;max-width:70ch;line-height:1.5}.announcement__date{font-size:var(--text-sm);color:var(--text-muted)}@media (width<=600px){.announcement{gap:var(--space-3);flex-direction:column}}.service-tile{border:7px solid var(--tile-colour,var(--border));border-radius:var(--radius-tile);padding:var(--space-5);justify-content:center;align-items:center;gap:var(--space-2);text-align:center;min-height:170px;color:var(--text);background-color:var(--surface);background-color:color-mix(in srgb, var(--tile-colour,var(--surface)) 15%, var(--surface));--tile-ring:var(--text);box-shadow:inset 0 0 0 1px var(--tile-ring), 0 0 0 1px var(--tile-ring), var(--shadow-tile);cursor:pointer;transition:transform var(--transition), box-shadow var(--transition);flex-direction:column;text-decoration:none;display:flex;position:relative}.service-tile:hover{box-shadow:inset 0 0 0 1px var(--tile-ring), 0 0 0 1px var(--tile-ring), var(--shadow-tile-hover);transform:translateY(-4px)}.service-tile--expanded{z-index:50}.service-tile:active{box-shadow:inset 0 0 0 1px var(--tile-ring), 0 0 0 1px var(--tile-ring), var(--shadow-tile);transform:translateY(-1px)}.service-tile:focus-visible{outline:3px solid var(--action);outline-offset:3px}.tile__open-icon{vertical-align:-.08em;opacity:.65;width:.8em;height:.8em;transition:opacity var(--transition), transform var(--transition);margin-left:.3em}.service-tile:hover .tile__open-icon,.service-tile:focus-visible .tile__open-icon{opacity:1;transform:translate(1px,-1px)}.service-tile--unlinked{cursor:default;opacity:.7;border:1px dashed var(--border);box-shadow:none}.service-tile--editing{cursor:default}.service-tile--unlinked:hover{border-color:var(--border);box-shadow:none;transform:none}.tile__name{color:inherit;text-wrap:balance;font-size:22px;font-weight:700;line-height:1.25}.tile__desc{font-size:var(--text-sm);color:inherit;opacity:.85;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tile__expand{width:24px;height:24px;margin-top:var(--space-1);color:var(--text);cursor:pointer;transition:background-color var(--transition);background-color:#0000000f;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.tile__expand:hover{background-color:#0000001f}.tile__expand svg{transition:transform var(--transition)}.tile__expand[aria-expanded=true] svg{transform:rotate(180deg)}.tile-preview{top:calc(100% + var(--space-2));z-index:60;width:max(100%,260px);max-width:min(320px, calc(100vw - 2 * var(--space-4)));max-height:60vh;padding:var(--space-4);text-align:left;border:1px solid var(--border);border-radius:var(--radius-md);background-color:var(--surface);box-shadow:var(--shadow-card);cursor:default;transform-origin:top;animation:.18s ease-out tile-preview-in;position:absolute;left:50%;overflow-y:auto;transform:translate(-50%)}@keyframes tile-preview-in{0%{opacity:0;transform:translate(-50%)translateY(-6px)scale(.97)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes tile-preview-up{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@media (prefers-reduced-motion:reduce){.tile-preview{animation:none}}.tile-preview__name{font-size:var(--text-base);color:var(--text-strong);margin-bottom:var(--space-2);font-weight:700}.tile-preview__status{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-2);display:flex}.tile-preview__status .service-status{position:static}.tile-preview__desc{font-size:var(--text-sm);color:var(--text);margin-bottom:var(--space-2);line-height:1.45}.tile-preview__url{font-size:var(--text-sm);color:var(--text-muted);word-break:break-all}.tile__pin{top:var(--space-2);left:var(--space-2);padding:var(--space-1);cursor:pointer;color:inherit;opacity:.4;transition:opacity var(--transition), color var(--transition);background:0 0;border:none;display:flex;position:absolute}.tile__pin:hover{opacity:1}.tile__pin.is-pinned{opacity:1;color:var(--action)}.tile__controls{top:var(--space-2);right:var(--space-2);gap:var(--space-2);display:flex;position:absolute}.tile__action{background-color:var(--surface);width:32px;height:32px;box-shadow:var(--shadow-tile);cursor:pointer;transition:background-color var(--transition), color var(--transition), box-shadow var(--transition);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.tile__action--edit{color:var(--action)}.tile__action--edit:hover{background-color:var(--action);color:var(--text-on-dark);box-shadow:var(--shadow-tile-hover)}.tile__action--delete{color:var(--danger)}.tile__action--delete:hover{background-color:var(--danger);color:var(--text-on-dark);box-shadow:var(--shadow-tile-hover)}.service-tile--pending-delete{border:2px dashed var(--danger);background-color:var(--surface);--tile-ring:transparent}.service-tile--pending-delete .tile__name,.service-tile--pending-delete .tile__desc,.service-tile--pending-delete .service-status{opacity:.55;filter:grayscale(.7)}.service-tile--pending-delete .tile__name,.service-tile--pending-delete .tile__desc{text-decoration:line-through}.tile__pending-flag{top:var(--space-2);left:var(--space-2);padding:2px var(--space-2);border-radius:var(--radius-sm);background-color:var(--danger);color:var(--text-on-dark);font-size:var(--text-sm);font-weight:600;position:absolute}.service-tile--pending-delete .tile__controls{top:auto;left:auto;right:var(--space-2);bottom:var(--space-2);justify-content:flex-end}.tile__action--undo{gap:var(--space-1);width:auto;padding-inline:var(--space-3);color:var(--action);font:inherit;border-radius:999px;font-weight:600}.tile__action--undo:hover{background-color:var(--action);color:var(--text-on-dark);box-shadow:var(--shadow-tile-hover)}.tile__action-label{font-size:var(--text-sm)}.service-tile--add{--tile-ring:transparent;border-style:dashed;border-color:var(--border);background-color:var(--surface);color:var(--text-muted);font-size:var(--text-base)}.service-tile--add:hover{border-color:var(--action);color:var(--action)}.service-tile--add h3{font-size:var(--text-base);font-weight:500}.form-error{padding:var(--space-3);border:1px solid var(--bad-border);border-radius:var(--radius-sm);background-color:var(--bad-bg);color:var(--bad-text);font-size:var(--text-sm)}.field{gap:var(--space-1);flex-direction:column;display:flex}.field-hint{font-size:var(--text-sm);color:var(--text-muted)}.required-mark{color:var(--danger)}.form-note{padding:var(--space-3);border:1px solid var(--ok-border);border-radius:var(--radius-sm);background-color:var(--ok-bg);color:var(--ok-text);font-size:var(--text-sm)}.form-info{padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-sm);background-color:#f6f7f8}input[aria-invalid=true]{border-color:var(--danger)}.signup-title{font-size:var(--text-xl);color:var(--text-strong);text-align:center}.tile-card{gap:var(--space-4);width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);margin:0 auto var(--space-6);flex-direction:column;display:flex}.empty-state{width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);margin:0 auto var(--space-6);padding:var(--space-5);border:1px dashed var(--border);border-radius:var(--radius-md);background-color:var(--surface);color:var(--text-muted);text-align:center}.btn--small{padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.profile-area{align-items:center;gap:var(--space-3);display:flex;position:relative}.profile-trigger{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-1) var(--space-1);color:var(--text-strong);font:inherit;cursor:pointer;transition:background-color var(--transition);background-color:#fff6;border:none;border-radius:999px;display:flex}.profile-trigger:hover{background-color:#ffffffa6}.profile-name{font-size:var(--text-sm);font-weight:600}.profile-avatar{background-color:var(--action);width:46px;height:46px;color:var(--text-on-dark);font-weight:700;font-size:var(--text-lg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.profile-menu{top:calc(100% + var(--space-1));z-index:50;border:1px solid var(--border);border-radius:var(--radius-md);background-color:var(--surface);min-width:260px;box-shadow:var(--shadow-card);position:absolute;right:0;overflow:hidden}.profile-menu__org{padding:var(--space-2) var(--space-3);color:var(--text-muted);font-size:var(--text-sm);background-color:#0000000a;font-weight:600}.profile-menu__identity{align-items:center;gap:var(--space-3);padding:var(--space-3);display:flex}.profile-menu__avatar{background-color:var(--action);width:56px;height:56px;color:var(--text-on-dark);font-weight:700;font-size:var(--text-lg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.profile-menu__name{color:var(--text-strong);font-weight:700}.profile-menu__divider{background-color:var(--border);border:none;height:1px;margin:0}.profile-menu__items{padding:var(--space-1);flex-direction:column;display:flex}.profile-menu__item{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;background:0 0;border:none}.profile-menu__item:hover{background-color:var(--brand-blue-soft)}.profile-menu__item--danger{color:var(--danger)}.password-input{width:100%;position:relative}.password-input input{box-sizing:border-box;width:100%;padding:var(--space-2);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm);padding-right:45px}.password-input button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.loader{justify-content:center;align-items:center;gap:var(--space-3);background-color:var(--brand-blue);min-height:100vh;color:var(--text-on-dark);flex-direction:column;display:flex}.loader__spinner{border:4px solid #ffffff59;border-top-color:var(--text-on-dark);border-radius:50%;width:42px;height:42px;animation:.8s linear infinite loader-spin}.loader__message{font-size:var(--text-base);margin:0}@keyframes loader-spin{to{transform:rotate(360deg)}}.service-status{top:var(--space-2);right:var(--space-2);box-sizing:content-box;border:2px solid var(--text);z-index:10;border-radius:50%;width:13px;height:13px;display:block;position:absolute}.service-tile--editing .service-status{top:auto;right:auto;left:var(--space-2);bottom:var(--space-2)}.service-status--online{background-color:var(--status-online)}.service-status--redirect{background-color:var(--surface);background-image:linear-gradient(90deg, var(--status-redirect) 0 50%, transparent 50% 100%);box-shadow:inset 0 0 0 2px var(--status-redirect)}.service-status--offline{background-color:var(--surface);box-shadow:inset 0 0 0 4.5px var(--status-offline)}.service-status--blocked{background-color:var(--status-blocked);border-radius:3px}.account-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-end}.account-heading__title{min-width:0}.account-heading__actions{align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.account-toolbar{width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);box-sizing:border-box;gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-lg);background-color:var(--surface);box-shadow:var(--shadow-tile);flex-direction:column;display:flex}.account-controls{align-items:flex-end;gap:var(--space-5);box-sizing:border-box;width:100%;margin:0;display:flex}.account-admin-note{color:var(--text-muted);font-size:var(--text-sm);margin:0}.account-search{flex:auto;min-width:0}.account-filter{flex:0 0 220px}.account-search label,.account-filter label{margin-bottom:var(--space-2);color:var(--text-strong);font-weight:600;font-size:var(--text-sm);display:block}.account-search input,.account-filter select{box-sizing:border-box;width:100%;height:44px;padding:0 var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);font:inherit;font-size:var(--text-base);transition:border-color var(--transition), box-shadow var(--transition);outline:none}.account-search input:focus,.account-filter select:focus{border-color:var(--action);box-shadow:0 0 0 3px #2b78e426}.account-table-card{width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);box-sizing:border-box;border-radius:var(--radius-lg);background-color:var(--surface);box-shadow:var(--shadow-tile);overflow:hidden}.accounts-table-wrapper{width:100%}.accounts-table{border-collapse:collapse;table-layout:fixed;width:100%}.accounts-table th,.accounts-table td{vertical-align:middle}.accounts-table thead th{text-align:left;color:#fff;background:#222;border-bottom:2px solid #111;padding:14px 12px;font-size:.95rem;font-weight:600}.accounts-table thead th:first-child{width:6%}.accounts-table thead th:nth-child(2){width:19%}.accounts-table thead th:nth-child(3){width:10%}.accounts-table thead th:nth-child(4){width:16%}.accounts-table thead th:nth-child(5),.accounts-table thead th:nth-child(6),.accounts-table thead th:nth-child(7){width:12%}.accounts-table thead th:nth-child(8){width:13%}.accounts-table tbody td{vertical-align:middle;overflow-wrap:anywhere;border-bottom:1px solid #ddd;padding:14px 12px}.accounts-table tbody tr:nth-child(odd){background:#fff}.accounts-table tbody tr:nth-child(2n){background:#f1f1f1}.accounts-table tbody tr:hover{background:#e7e7e7}.account-table-cell--truncate{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.account-role{border-radius:999px;align-items:center;padding:5px 10px;font-size:.85rem;font-weight:600;display:inline-flex}.account-role--admin{color:#1e40af;background:#dbeafe}.account-role--staff{color:#065f46;background:#d1fae5}.account-role--parent{color:#334155;background:#f1f5f9}.account-mfa-none{color:var(--text-muted)}.account-chip{margin-left:var(--space-2);padding:2px var(--space-2);background-color:var(--brand-blue-soft);color:var(--text-strong);letter-spacing:.03em;text-transform:uppercase;border-radius:999px;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.account-table-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.account-pagination{justify-content:center;align-items:center;gap:16px;width:100%;padding-top:4px;display:flex}.account-pagination-info{color:var(--text-muted);font-size:var(--text-sm);white-space:nowrap}.account-modal-backdrop{z-index:1000;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.account-modal{box-sizing:border-box;background:#fff;border:1px solid #ddd;border-radius:12px;width:100%;max-width:700px;max-height:calc(100vh - 48px);overflow:hidden;box-shadow:0 20px 50px #0003}.account-modal-header{border-bottom:1px solid #ddd;justify-content:space-between;align-items:flex-start;gap:24px;padding:28px 30px 24px;display:flex}.account-modal-header h2{color:#222;margin:0;font-size:1.4rem;font-weight:700;line-height:1.3}.account-modal-header p{color:#777;margin:8px 0 0;font-size:.95rem;line-height:1.5}.account-modal-close{color:#666;width:38px;height:38px;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:none;justify-content:center;align-items:center;margin:-4px -4px 0 0;padding:0;font-size:28px;font-weight:400;line-height:1;transition:background-color .15s,color .15s;display:flex}.account-modal-close:hover{color:#222;background-color:#f1f1f1}.account-modal-close:disabled{opacity:.5;cursor:not-allowed}.account-modal form{width:100%}.account-modal-body{box-sizing:border-box;flex-direction:column;gap:26px;width:100%;padding:28px 30px 0;display:flex}.account-modal-row{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:28px;width:100%;display:grid}.account-modal-row .account-modal-field{min-width:0}.account-modal-body>.account-modal-row:last-child{border-top:1px solid #ddd;padding-top:26px}.account-modal-field{flex-direction:column;gap:12px;width:100%;display:flex}.account-modal-field label{box-sizing:border-box;color:#333;min-height:20px;margin:0;font-size:.95rem;font-weight:600;line-height:1.4;display:block}.account-modal-field input,.account-modal-field select{box-sizing:border-box;color:#222;width:100%;height:48px;min-height:48px;font:inherit;background:#fff;border:1px solid #cfcfcf;border-radius:7px;outline:none;padding:0 14px;font-size:1rem;transition:border-color .15s,box-shadow .15s;display:block}.account-modal-field input:focus,.account-modal-field select:focus{border-color:#555;box-shadow:0 0 0 3px #00000014}.account-modal-field input:hover,.account-modal-field select:hover{border-color:#aaa}.account-modal-field input::placeholder{color:#888}.account-modal-field input[aria-invalid=true],.account-modal-field select[aria-invalid=true]{background-color:#ffebee;border-color:#d32f2f}.account-modal-field input[aria-invalid=true]:focus,.account-modal-field select[aria-invalid=true]:focus{border-color:#d32f2f;box-shadow:0 0 0 3px #d32f2f1a}.account-role-warning{background-color:var(--warn-bg);border-left:3px solid var(--warn-border);color:var(--warn-text);border-radius:4px;margin-top:6px;padding:10px 12px;font-size:.9rem;display:block}.account-role-error{margin-top:6px}.account-role-error,.account-password-error,.account-email-error{color:#c62828;background-color:#ffebee;border-left:3px solid #d32f2f;border-radius:4px;margin-top:-6px;padding:10px 12px;font-size:.9rem;display:block}.delete-confirmation-backdrop{z-index:1000;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.delete-confirmation-modal{box-sizing:border-box;background:#fff;border:1px solid #ddd;border-radius:12px;width:100%;max-width:500px;box-shadow:0 20px 50px #0003}.delete-confirmation-header{border-bottom:1px solid #ddd;justify-content:space-between;align-items:flex-start;gap:24px;padding:28px 30px 24px;display:flex}.delete-confirmation-header h2{color:#d32f2f;margin:0;font-size:1.4rem;font-weight:700;line-height:1.3}.delete-confirmation-close{color:#666;width:38px;height:38px;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:none;justify-content:center;align-items:center;margin:-4px -4px 0 0;padding:0;font-size:28px;font-weight:400;line-height:1;transition:background-color .15s,color .15s;display:flex}.delete-confirmation-close:hover{color:#222;background-color:#f1f1f1}.delete-confirmation-close:disabled{opacity:.5;cursor:not-allowed}.delete-confirmation-body{box-sizing:border-box;flex-direction:column;gap:16px;padding:28px 30px;display:flex}.delete-confirmation-message{color:#555;margin:0;font-size:1rem;line-height:1.5}.delete-confirmation-item{background-color:#f5f5f5;border-left:3px solid #d32f2f;border-radius:4px;padding:12px}.delete-confirmation-item-name{color:#222;margin:0 0 4px;font-size:1rem;font-weight:600}.delete-confirmation-item-details{color:#777;margin:0;font-size:.9rem}.delete-confirmation-warning{color:#856404;background-color:#fff3cd;border-left:3px solid #ff9800;border-radius:4px;margin:8px 0 0;padding:12px;font-size:.9rem;font-weight:600}.delete-confirmation-footer{border-top:1px solid #ddd;justify-content:flex-end;align-items:center;gap:14px;padding:24px 30px;display:flex}.delete-confirmation-footer button{min-width:130px;min-height:46px}.account-modal-footer{border-top:1px solid #ddd;justify-content:center;align-items:center;gap:14px;margin-top:50px;padding:24px 30px 30px;display:flex}.account-modal-footer button{min-width:130px;min-height:46px}@media (width<=800px){.account-controls{flex-direction:column;align-items:stretch}.account-search,.account-filter{flex:none;width:100%}.accounts-table{min-width:1100px}}@media (width<=600px){.account-toolbar,.account-table-card{width:calc(100% - 2 * var(--page-gutter))}.account-modal-backdrop{align-items:center;padding:16px}.account-modal{border-radius:10px;max-height:calc(100vh - 32px)}.account-modal-header{padding:22px 22px 20px}.account-modal-body{gap:22px;padding:22px 22px 0}.account-modal-row{grid-template-columns:1fr;gap:22px}.account-modal-field{gap:10px}.account-modal-field input,.account-modal-field select{height:48px;min-height:48px}.account-modal-footer{flex-direction:column-reverse;align-items:stretch;gap:10px;padding:20px 22px 22px}.account-modal-footer button{width:100%}.account-pagination{flex-wrap:wrap}}.app-shell{background-color:var(--brand-blue);flex-direction:column;min-height:100vh;display:flex}.app-topbar{width:100%;padding:var(--space-3) var(--space-5);background-color:#0000;justify-content:space-between;align-items:center;display:flex}.app-body{flex:auto;display:flex}.app-sidebar{padding:var(--space-4) var(--space-3);background-color:#0000;flex-direction:column;flex:0 0 240px;display:flex}.dashboard-sidebar{gap:var(--space-2);flex-direction:column;flex:auto;display:flex}.dashboard-sidebar__link{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--text-strong);font-family:var(--font-display);font-size:var(--text-base);letter-spacing:.01em;transition:background-color var(--transition), color var(--transition), box-shadow var(--transition), transform var(--transition);font-weight:500;text-decoration:none;display:flex;position:relative}.dashboard-sidebar__link svg{transition:color var(--transition);flex-shrink:0}.dashboard-sidebar__link:hover{background-color:#ffffff73;transform:translate(2px)}.dashboard-sidebar__link.active{background-color:var(--surface);color:var(--action-hover);box-shadow:var(--shadow-tile);font-weight:600;transform:none}.app-content{min-width:0;padding-top:var(--space-5);padding-bottom:var(--space-6);background-color:#f2f4f6;flex:auto;box-shadow:inset 8px 8px 16px -10px #00000040}.app-content:has(>.loader){box-shadow:none;background-color:#0000;flex-direction:column;padding-top:0;padding-bottom:0;display:flex}.app-content>.loader{background:0 0;flex:auto;min-height:0}.contact-layout{align-items:flex-start;gap:var(--space-7);width:calc(100% - 2 * var(--page-gutter));max-width:var(--page-max);margin:0 auto;display:flex}.contact-form-panel,.contact-info-panel{min-width:0;padding:var(--space-5);border-radius:var(--radius-lg);background-color:var(--surface);box-shadow:var(--shadow-tile);flex:1 1 0}.contact-form-panel h3,.contact-info-panel h3{font-size:var(--text-lg);color:var(--text-strong);margin-bottom:var(--space-4);font-weight:700}.contact-form{gap:var(--space-1);flex-direction:column;display:flex}.contact-form label{font-size:var(--text-sm);color:var(--text-strong);margin-top:var(--space-2);font-weight:600}.contact-form input,.contact-form textarea{padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface);resize:vertical}.contact-form textarea{min-height:120px}.contact-form .btn{margin-top:var(--space-3);align-self:flex-start}.contact-form__notice{margin-top:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface);color:var(--text-muted);font-size:var(--text-sm)}.contact-detail{margin-bottom:var(--space-4)}.contact-detail__label{font-size:var(--text-sm);color:var(--text-strong);margin-bottom:2px;font-weight:700;display:block}.contact-detail__value{font-size:var(--text-base);color:var(--text);white-space:pre-line}.contact-info-panel__heading{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.contact-info-panel__heading h3{margin-bottom:0}.contact-detail__input{width:100%;padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface);resize:vertical;display:block}textarea.contact-detail__input{min-height:72px}.contact-detail__input:disabled{opacity:.6}.contact-info-panel .dashboard-actions{margin-top:var(--space-4)}.toast-viewport{right:var(--space-5);bottom:var(--space-5);z-index:1100;align-items:flex-end;gap:var(--space-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{min-width:300px;max-width:400px;padding:var(--space-4) var(--space-5);border:1px solid var(--action);border-radius:var(--radius-lg);background-color:color-mix(in srgb, var(--ok-bg) 18%, var(--surface));box-shadow:0 0 0 4px color-mix(in srgb, var(--action) 55%, transparent), 0 2px 6px #2b78e424, 0 12px 32px #2b78e438;cursor:pointer;pointer-events:auto;transition:box-shadow var(--transition);align-items:center;animation:.3s cubic-bezier(.22,1,.36,1) both toast-in;display:flex}.toast:hover{box-shadow:0 0 0 4px color-mix(in srgb, var(--action) 70%, transparent), 0 4px 10px #2b78e42e, 0 16px 40px #2b78e447}.toast__message{font-size:var(--text-base);color:var(--text-strong);letter-spacing:.01em;font-weight:600;line-height:1.4}.toast--leaving{pointer-events:none;animation:.4s ease-in both toast-out}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.96)}}@media (prefers-reduced-motion:reduce){.toast{animation:.15s linear both toast-fade-in}.toast--leaving{animation:.4s linear both toast-fade-out}@keyframes toast-fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-fade-out{0%{opacity:1}to{opacity:0}}}@media (width<=768px){.toast-viewport{left:var(--space-4);right:var(--space-4);bottom:var(--space-4);align-items:stretch}.toast{min-width:0;max-width:none}}.profile-role{color:var(--text-muted);font-weight:400}@media (width<=768px){.app-sidebar{z-index:80;background-color:var(--brand-blue);padding:var(--space-1) var(--space-2);padding-bottom:calc(var(--space-1) + env(safe-area-inset-bottom,0px));flex-direction:row;flex:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 12px #00000014}.dashboard-sidebar{gap:var(--space-1);flex-direction:row;width:100%}.dashboard-sidebar__link{padding:var(--space-2) var(--space-1);text-align:center;flex-direction:column;flex:1 1 0;justify-content:center;gap:2px;font-size:11px}.dashboard-sidebar__link:hover{transform:none}.dashboard-sidebar__link svg{width:20px;height:20px}.app-content{padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}:root:has(.app-sidebar) .toast-viewport{bottom:calc(80px + var(--space-4) + env(safe-area-inset-bottom,0px))}.service-tile{min-height:130px;padding:var(--space-4)}.tile__name{font-size:var(--text-lg)}.tile__expand{border-radius:999px;width:72px;height:32px;position:relative}.tile__expand:after{content:"";position:absolute;inset:-6px 0}.tile__controls{left:var(--space-2);justify-content:space-between}.tile-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(min(140px,100%),1fr))}.tile-preview{top:auto;bottom:var(--space-4);z-index:90;width:min(420px, calc(100vw - 2 * var(--space-4)));border-radius:var(--radius-lg);max-width:none;box-shadow:var(--shadow-modal);animation-name:tile-preview-up;position:fixed}:root:has(.app-sidebar) .tile-preview{bottom:calc(80px + var(--space-4) + env(safe-area-inset-bottom,0px))}.modal{padding:var(--space-4)}.contact-layout{flex-direction:column}}
