:root{--bg:#f4efe8;--panel:#fffaf2;--ink:#1b2430;--accent:#db5d2e;--accent-deep:#b9441b;--accent-soft:#ffe3cc;--line:#e0d1c0;--ok:#1f7a4f;--warn:#9f3f14;--soft-shadow:0 18px 32px rgba(42,28,15,.08)}*{box-sizing:border-box}body{margin:0;font-family:Avenir Next,Nunito,Trebuchet MS,sans-serif;background:radial-gradient(circle at 7% 8%,rgba(219,93,46,.18),transparent 36%),radial-gradient(circle at 92% 88%,rgba(39,108,78,.14),transparent 28%),linear-gradient(145deg,#f7f1e7,var(--bg));background-attachment:fixed;color:var(--ink);min-height:100vh;overscroll-behavior-y:contain}a{color:inherit;text-decoration:none}.admin-shell{min-height:100vh;display:grid;grid-template-columns:280px 1fr}.drawer-backdrop,.mobile-topbar{display:none}.sidebar{border-right:1px solid var(--line);padding:2rem 1.25rem;background:linear-gradient(175deg,#fff8ef,#f6ede1);position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:.35rem;overflow:hidden;box-shadow:8px 0 24px rgba(37,23,11,.08);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.sidebar h1{margin:0;font-size:1.5rem;letter-spacing:.02em}.sidebar p{color:#5e5e5e;margin:.25rem 0 1.5rem}.sidebar nav{display:grid;grid-gap:.4rem;gap:.4rem;overflow-y:auto;padding-right:.25rem}.sidebar nav a{padding:.65rem .85rem;border-radius:.5rem;font-weight:600;border:1px solid transparent;transition:all .2s ease}.sidebar nav a.active,.sidebar nav a:hover{border-color:var(--line);background:var(--accent-soft)}.logout-btn{margin-top:0;width:100%;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:.5rem;padding:.65rem;cursor:pointer}.sidebar-actions{margin-top:auto;padding-top:.85rem;border-top:1px solid var(--line);display:grid;grid-gap:.5rem;gap:.5rem}.nav-action-btn{width:100%;text-align:center;border-radius:.5rem;padding:.65rem}.content-area{padding:1.75rem;animation:fade-rise .45s ease-out}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.grid-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:.75rem;gap:.75rem;margin-bottom:1rem}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:.75rem;padding:.9rem;box-shadow:var(--soft-shadow);transition:transform .2s ease,box-shadow .2s ease}.metric-card:hover{transform:translateY(-2px);box-shadow:0 20px 38px rgba(42,28,15,.12)}.metric-card-expandable{cursor:pointer}.metric-details{margin-top:.6rem;border-top:1px solid var(--line);padding-top:.45rem}.metric-detail-item{margin:.2rem 0;color:#445564;font-size:.88rem}.metric-label{margin:0;color:#536170;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}.metric-value{margin:.35rem 0;font-size:1.8rem}.metric-helper{margin:0;color:#5f6f7e}.panel-form{background:var(--panel);border:1px solid var(--line);border-radius:.75rem;padding:.9rem;margin-bottom:1rem;box-shadow:var(--soft-shadow)}.panel-form h3{margin-top:0}.form-grid{display:grid;grid-gap:.65rem;gap:.65rem;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin-bottom:.75rem}.form-grid--create-user{grid-template-columns:minmax(180px,1.5fr) minmax(180px,1.5fr) minmax(180px,1.5fr)}@media (max-width:600px){.form-grid--create-user{grid-template-columns:1fr}}.form-field-with-label{display:flex;flex-direction:column;gap:.2rem}.form-field-with-label>span{font-size:.75rem;font-weight:700;color:#536170;text-transform:uppercase;letter-spacing:.06em}button,input,select,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);border-radius:.5rem;padding:.62rem;background:#fff;transition:border-color .18s ease,box-shadow .18s ease}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(219,93,46,.16);outline:none}button{border:1px solid var(--accent-deep);background:linear-gradient(140deg,var(--accent),var(--accent-deep));color:#fff;border-radius:.5rem;padding:.6rem .8rem;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,filter .2s ease}button:hover{transform:translateY(-1px);box-shadow:0 12px 22px rgba(177,66,26,.22)}button:active{transform:translateY(0);filter:brightness(.98)}.secondary-btn{background:#fff;color:var(--ink);border-color:var(--line)}.danger-btn{background:#a52f2f;border-color:#a52f2f}.action-row{display:flex;gap:.5rem;flex-wrap:wrap}.offline-wrap{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.offline-card{max-width:560px;width:100%;background:var(--panel);border:1px solid var(--line);border-radius:.9rem;padding:1.25rem;box-shadow:var(--soft-shadow)}.offline-card h1{margin-top:0}.pwa-install-banner{position:fixed;left:1rem;right:1rem;bottom:max(1rem,env(safe-area-inset-bottom));z-index:20;background:#1b2430;color:#fff;border-radius:.85rem;padding:.75rem .85rem;box-shadow:0 16px 34px rgba(0,0,0,.35);border:1px solid hsla(0,0%,100%,.14);max-width:380px}.pwa-install-title{margin:0;font-weight:700}.pwa-install-copy{margin:.3rem 0 0;color:hsla(0,0%,100%,.88);font-size:.92rem}.pwa-install-actions{margin-top:.75rem;display:flex;gap:.5rem;flex-wrap:wrap}.pwa-install-btn{background:linear-gradient(140deg,var(--accent),var(--accent-deep));border:1px solid var(--accent-deep);color:#fff}.pwa-dismiss-btn{background:transparent;border:1px solid hsla(0,0%,100%,.32);color:#fff}@media (min-width:900px){.pwa-install-banner{left:auto;right:1rem;width:380px}}.checkbox-row{display:flex;align-items:flex-start;gap:.55rem;margin-bottom:.45rem;line-height:1.35}.checkbox-row input[type=checkbox]{margin-top:.2rem;flex-shrink:0}.matrix-block{border:1px solid var(--line);border-radius:.5rem;padding:.8rem .9rem;margin-bottom:.8rem}.matrix-block h4{margin:0 0 .5rem}.matrix-grid{display:grid;grid-gap:.6rem 1rem;gap:.6rem 1rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:.4rem}.ok-text{color:var(--ok)}.note-card{border:1px dashed var(--line);border-radius:.5rem;padding:.6rem;background:#fff}.data-table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:.75rem;overflow:hidden;box-shadow:var(--soft-shadow)}.data-table td,.data-table th{padding:.7rem;border-bottom:1px solid var(--line);text-align:left;font-size:.93rem}.data-table th{background:#f6ebdf;font-weight:700}.data-table tbody tr:hover{background:#fff4e9}.landing-wrap{min-height:100dvh;background:radial-gradient(circle at 5% 15%,rgba(190,77,37,.22),transparent 35%),radial-gradient(circle at 95% 90%,rgba(57,111,82,.18),transparent 32%),linear-gradient(140deg,#f4e5d3,#f0ede6);display:grid;place-items:center;padding:calc(env(safe-area-inset-top, 0px) + 1rem) 1rem calc(env(safe-area-inset-bottom, 0px) + 1rem);overflow-x:hidden}.landing-panel{width:min(980px,100%);background:rgba(255,248,239,.92);border:1px solid var(--line);border-radius:1.2rem;padding:1.5rem;box-shadow:0 28px 58px rgba(50,44,34,.14);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fade-rise .5s ease-out}.landing-title{margin:0;color:#2a3a46;font-size:clamp(1.5rem,3.4vw,2.2rem);font-weight:800;text-align:center;letter-spacing:.01em}.landing-auth-grid{margin-top:1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.9rem;gap:.9rem;align-items:stretch}.landing-auth-card{background:linear-gradient(145deg,#fffaf3,#fff3e4);min-height:420px;display:flex;flex-direction:column}.landing-auth-form{margin-top:0;display:flex;flex-direction:column;gap:.5rem;flex:1 1}.landing-auth-form label{font-size:.82rem;font-weight:700;color:#445563}.landing-auth-form button,.landing-auth-form input,.landing-auth-form select{width:100%;border:1px solid var(--line);border-radius:.5rem;padding:.7rem .74rem}.landing-auth-form button{margin-top:auto;background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700;cursor:pointer}.landing-card{border:1px solid var(--line);border-radius:.75rem;padding:.8rem;background:linear-gradient(145deg,#fffaf3,#fff5ea);transition:transform .2s ease,box-shadow .2s ease}.landing-card:hover{transform:translateY(-2px);box-shadow:var(--soft-shadow)}.landing-card h3{margin:0 0 .4rem}.landing-card p{margin:0;color:#50616f}.landing-signup-card.is-expanded{min-height:560px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 12% 5%,rgba(190,77,37,.22),transparent 34%),radial-gradient(circle at 92% 90%,rgba(39,90,63,.18),transparent 30%),linear-gradient(140deg,#f6e6d6,#f0ede6);padding:1rem}.login-layout{width:min(980px,100%);display:grid;grid-template-columns:1.05fr 1fr;grid-gap:1rem;gap:1rem;align-items:stretch}.login-intro{background:rgba(255,247,236,.92);border:1px solid var(--line);border-radius:1rem;padding:1.2rem;box-shadow:0 24px 42px rgba(40,32,24,.13);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade-rise .45s ease-out}.login-intro h1{margin:.45rem 0 .65rem;line-height:1.2}.login-intro p{margin:0;color:#475766}.login-intro ul{margin:.8rem 0 1rem 1rem;padding:0;display:grid;grid-gap:.45rem;gap:.45rem;color:#394b58}.login-highlight-row{display:flex;flex-wrap:wrap;gap:.45rem}.login-highlight-row span{border:1px solid #d9c8b4;border-radius:999px;padding:.3rem .65rem;font-size:.74rem;font-weight:700;letter-spacing:.02em;background:#fff6eb;color:#4a3829}.login-kicker{margin:0;color:var(--accent);text-transform:uppercase;letter-spacing:.07em;font-size:.76rem;font-weight:700}.login-card{width:100%;background:rgba(255,249,241,.95);border:1px solid var(--line);border-radius:1rem;padding:1.2rem;box-shadow:0 24px 42px rgba(40,32,24,.13);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade-rise .55s ease-out}.login-card h2{margin:0}.login-card button,.login-card input,.login-card select{width:100%;margin-top:.75rem;border-radius:.5rem;border:1px solid var(--line);padding:.7rem}.login-card button{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700;cursor:pointer}.auth-toggle-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem;margin:.9rem 0}.auth-toggle-btn{margin-top:0;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600}.auth-toggle-btn.active{border-color:var(--accent);background:linear-gradient(140deg,var(--accent),var(--accent-deep));color:#fff}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);display:grid;place-items:center;z-index:120;padding:1rem}.modal-card{width:min(560px,100%);background:#fff8ef;border:1px solid var(--line);border-radius:1rem;padding:1rem;box-shadow:0 20px 40px rgba(0,0,0,.22)}.modal-card--wide{width:min(720px,100%);max-height:92vh;overflow-y:auto}.checkout-bucket{border:1px solid var(--line);border-radius:.7rem;padding:.85rem .9rem;margin-top:.7rem;background:#fff}.checkout-bucket__head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.25rem}.checkout-bucket__head h4{margin:0;display:flex;align-items:center;gap:.45rem}.bucket-list{list-style:none;padding-left:0;margin:.4rem 0 .6rem;display:flex;flex-direction:column;gap:.45rem}.bucket-list li{padding:.5rem .6rem;border:1px solid var(--line);border-radius:.5rem;background:#fffaf2;font-size:.9rem}.travel-form{margin-top:.4rem;padding:.65rem;border:1px dashed var(--line);border-radius:.5rem;background:#fdf6e8}.error-text{color:#9c2f1a;margin-top:.5rem}.kv-grid{display:grid;grid-template-columns:max-content 1fr;grid-gap:.35rem .8rem;gap:.35rem .8rem;margin:0}.kv-grid dt{font-size:.78rem;font-weight:700;color:#536170;text-transform:uppercase;letter-spacing:.06em;align-self:center}.kv-grid dd{margin:0;color:var(--ink);align-self:center}.chip-row{flex-wrap:wrap;gap:.3rem;white-space:normal}.chip,.chip-row{display:inline-flex}.chip{align-items:center;background:#fff;border:1px solid var(--line);border-radius:999px;padding:.18rem .55rem;font-size:.78rem;font-weight:600;color:var(--ink);white-space:nowrap}.chip-muted{color:#5e5e5e;background:#f6ebdf}.status-pill{display:inline-block;border-radius:999px;padding:.18rem .55rem;font-size:.78rem;font-weight:700;border:1px solid var(--line);background:#fff;white-space:nowrap}.status-pill.tone-success{background:#e8f6ee;border-color:#6fbe91;color:#1a5f3d}.status-pill.tone-warning{background:#fff4dd;border-color:#e2c77a;color:#8a5a10}.status-pill.tone-danger{background:#fdebec;border-color:#d37676;color:#962222}.status-pill.tone-info{background:#ecf3ff;border-color:#93b3e0;color:#2a3f5f}.status-pill.tone-muted{background:#f0eee9;border-color:var(--line);color:#5e5e5e}.status-pending,.status-pending-admin,.status-pending-super-admin{background:#fff4dd;border-color:#e2c77a}.status-approved{background:#e8f6ee;border-color:#6fbe91}.status-rejected{background:#fdebec;border-color:#d37676}.action-stack{display:grid;grid-gap:.45rem;gap:.45rem}.note-muted{color:#6d6d6d}.attendance-calendar-panel{display:grid;grid-gap:.7rem;gap:.7rem}.attendance-calendar-head{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem}.attendance-calendar-head h3,.attendance-calendar-head p{margin:0}.attendance-calendar-legend{display:flex;flex-wrap:wrap;gap:.45rem}.attendance-legend-item{display:inline-flex;align-items:center;border-radius:999px;padding:.24rem .6rem;font-size:.76rem;font-weight:700;border:1px solid var(--line)}.attendance-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:.35rem;gap:.35rem}.attendance-calendar-weekday{font-size:.74rem;font-weight:700;color:#5f5f5f;text-align:center;padding:.2rem 0}.attendance-calendar-cell{min-height:62px;border-radius:.55rem;border:1px solid var(--line);background:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:.35rem}button.attendance-calendar-cell{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer}.attendance-calendar-cell.is-selected{outline:2px solid #5b3b2b;outline-offset:1px}.attendance-calendar-cell strong{font-size:.84rem}.attendance-calendar-cell small{font-size:.68rem;color:#585858}.attendance-calendar-cell.is-filler{border:0;background:transparent;min-height:0;padding:0}.attendance-present,.status-present{background:#e8f6ee;border-color:#6fbe91}.attendance-half-day,.status-half-day{background:#fff4dd;border-color:#e2c77a}.attendance-absent,.status-absent{background:#fdebec;border-color:#d37676}@keyframes fade-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:900px){.admin-shell{grid-template-columns:1fr}.mobile-topbar{display:flex;align-items:center;gap:.6rem;position:-webkit-sticky;position:sticky;top:0;z-index:30;padding:.6rem .8rem;background:linear-gradient(180deg,#fff8ef,#f6ede1);border-bottom:1px solid var(--line);box-shadow:0 2px 8px rgba(37,23,11,.06)}.hamburger-btn{background:transparent;border:1px solid var(--line);border-radius:.5rem;width:2.25rem;height:2.25rem;font-size:1.1rem;line-height:1;cursor:pointer;color:var(--ink)}.mobile-topbar-title{font-weight:700;color:var(--ink);font-size:1rem;flex:1 1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar{position:fixed;top:0;left:0;height:100vh;width:min(82vw,320px);transform:translateX(-100%);transition:transform .22s ease;z-index:50;box-shadow:12px 0 28px rgba(37,23,11,.18)}.sidebar.is-open{transform:translateX(0)}.drawer-backdrop{display:block;position:fixed;inset:0;background:rgba(20,12,4,.45);z-index:40;opacity:0;pointer-events:none;transition:opacity .18s ease}.admin-shell.is-drawer-open .drawer-backdrop{opacity:1;pointer-events:auto}.admin-shell.is-drawer-open{overflow:hidden}.content-area{grid-column:1}.data-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;max-width:100%}.login-layout{grid-template-columns:1fr}.landing-wrap{padding:calc(env(safe-area-inset-top, 0px) + .7rem) .7rem calc(env(safe-area-inset-bottom, 0px) + .7rem)}.landing-panel{padding:1rem;border-radius:1rem}.landing-title{font-size:clamp(1.3rem,5.8vw,1.7rem)}.landing-auth-grid{grid-template-columns:1fr;gap:.7rem}.landing-auth-card,.landing-signup-card.is-expanded{min-height:auto}.landing-auth-form button,.landing-auth-form input,.landing-auth-form select{font-size:16px;padding:.78rem .8rem}.attendance-calendar-head{flex-direction:column;align-items:flex-start}}@media (display-mode:standalone){.landing-wrap{padding-top:calc(env(safe-area-inset-top, 0px) + 1rem);padding-bottom:calc(env(safe-area-inset-bottom, 0px) + 1rem)}.landing-panel{box-shadow:0 18px 34px rgba(50,44,34,.14)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem 1rem;gap:.4rem;color:var(--muted)}.empty-state--compact{padding:1.2rem .75rem;gap:.25rem}.empty-state__icon{font-size:1.4rem;opacity:.8}.empty-state__title{font-weight:600;color:var(--text)}.empty-state__description{font-size:.88rem;max-width:36ch}.empty-state__action{margin-top:.6rem}.dropzone-wrap{display:flex;flex-direction:column;gap:.5rem}.dropzone{border:2px dashed var(--line);border-radius:.7rem;padding:1.3rem 1rem;background:var(--surface-soft,#f8f6f1);text-align:center;cursor:pointer;outline:none;transition:border-color .12s ease,background .12s ease}.dropzone:focus-visible,.dropzone:hover{border-color:var(--brand)}.dropzone.is-dragover{border-color:var(--brand);background:rgba(255,159,28,.07)}.dropzone.is-disabled{opacity:.55;cursor:not-allowed}.dropzone__icon{font-size:1.6rem}.dropzone__primary{font-weight:600;margin-top:.3rem;word-break:break-word}.dropzone__secondary{font-size:.82rem;color:var(--muted);margin-top:.15rem}.dropzone-actions{display:flex;justify-content:flex-end}@keyframes skeleton-shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.skeleton-bar{display:inline-block;min-height:.85rem;width:80%;border-radius:4px;background:linear-gradient(90deg,#eee,#f7f7f7 40%,#eee 80%);background-size:200px 100%;animation:skeleton-shimmer 1.4s linear infinite}.skeleton-row td{padding-top:.55rem;padding-bottom:.55rem}.visually-hidden{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.toast-stack{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:.5rem;z-index:60;max-width:92vw;pointer-events:none}.toast{pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;text-align:left;background:var(--text,#1d1d1d);color:#fff;border-radius:.5rem;padding:.7rem .95rem;font:inherit;display:flex;align-items:center;gap:.6rem;box-shadow:0 10px 24px rgba(0,0,0,.18);cursor:pointer;min-width:220px;max-width:380px;animation:toast-enter .18s ease}@keyframes toast-enter{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.toast__message{flex:1 1;font-size:.9rem;line-height:1.35}.toast__close{font-size:1.1rem;opacity:.65}.toast--success{background:#1f7a4a}.toast--error{background:#b3261e}.toast--info{background:#1d1d1d}