@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-latin-400-normal-DQi5PRDE.woff2) format("woff2"),url(/assets/source-sans-3-latin-400-normal-AFMiCETP.woff) format("woff")}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-sans-3-latin-600-normal-DeckBYAU.woff2) format("woff2"),url(/assets/source-sans-3-latin-600-normal-BvDVuF-j.woff) format("woff")}:root{--bg: #eef3f8;--surface: #ffffff;--ink: #12263a;--muted: #5b7086;--line: #d9e3ee;--accent: #2f6fed;--accent-ink: #ffffff;--accent-press: #2457c9;--navy: #102033;--sidebar: rgb(16 32 51 / 78%);--sidebar-ink: #f4f8fc;--sidebar-dim: #9eb0c3;--sidebar-active: #1a3352;--teal: #3ddecf;--danger: #c44747;--danger-ink: #ffffff;--shadow: 0 14px 36px rgb(16 32 51 / 9%);--radius: 22px;--control: 12px;--ease: cubic-bezier(.16, 1, .3, 1);--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-drawer: cubic-bezier(.32, .72, 0, 1);--chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%235b7086' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6.2 8 10.2 12 6.2'/%3E%3C/svg%3E");--chevron-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23d7e4f0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6.2 8 10.2 12 6.2'/%3E%3C/svg%3E");--font: "Source Sans 3", "Segoe UI", sans-serif;color-scheme:light;--blocked: #fde8e6;--blocked-ink: #9a3b32;--reserved: #f8ecc4;--reserved-ink: #8a6410;--requested: #e4eefc;--requested-ink: #2451b8;--approved: #d9f3e3;--approved-ink: #1d7a45;--overlap: #efe4f8;--overlap-ink: #6d3f9a;--callout: #f8ecc4;--callout-ink: #8a4b12;--tone: var(--ink);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}@supports (-webkit-touch-callout: none){@media(display-mode:standalone){html,body,#root{height:100%;min-height:-webkit-fill-available}.app,.boot,.gate{position:fixed;top:0;right:0;bottom:0;left:0;height:auto;min-height:0}}}*{box-sizing:border-box}html,body,#root{height:100%;max-width:100%;overflow:hidden}html,body,#root{background:#e7eef6}body{margin:0;font-family:var(--font);color:var(--ink);background:radial-gradient(900px 420px at 12% -8%,rgb(110 168 255 / 28%),transparent 70%),#e7eef6;font-size:1rem;font-weight:400;line-height:1.5;text-rendering:optimizeLegibility;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}input,textarea,select,.secret{user-select:text;-webkit-user-select:text}::selection{background:#cfe0fb;color:#102033}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}input,select,textarea{font-size:16px;caret-color:var(--accent)}::placeholder{color:var(--muted);opacity:1}*{scrollbar-color:#9eb0c3 transparent}a{color:#2457c9}.skip{position:absolute;left:12px;top:-40px;background:var(--surface);color:var(--ink);padding:8px 12px;z-index:5;border-radius:8px}.skip:focus{top:12px}.app{height:100dvh;overflow:hidden;position:relative;isolation:isolate;background:transparent}.rail{background:var(--sidebar);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15);color:var(--sidebar-ink);padding:22px 14px 18px;display:flex;flex-direction:column;gap:18px;position:fixed;z-index:4;top:14px;left:14px;bottom:14px;width:248px;height:auto;min-height:0;overflow:auto;border-radius:28px;box-shadow:0 18px 44px #08101c38,0 2px 8px #08101c1f}.brand{display:flex;gap:12px;align-items:center;padding:0 8px}.mark{width:44px;height:44px;border-radius:12px;display:block;object-fit:cover}.brand strong{display:block;font-size:15px;letter-spacing:.04em}.brand span{color:var(--sidebar-dim);font-size:11px;letter-spacing:.12em}.rail nav,.drawer nav{display:flex;flex-direction:column;gap:4px}.nav-link,.tabbar a,.drawer a{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:12px;color:var(--sidebar-dim);text-decoration:none;font-weight:600;font-size:.95rem;transition:background-color .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}.nav-mark{width:20px;height:20px;flex:none;color:inherit}.nav-link[aria-current=page]{background:var(--sidebar-active);color:var(--sidebar-ink)}.nav-link[aria-current=page] .nav-mark{color:var(--teal)}.lang-wrap{display:flex;align-items:center;gap:8px;min-width:0}.lang-wrap svg{flex:none}.lang-select{min-height:36px;max-width:100%;border-radius:999px;border:1.5px solid var(--line);background-color:var(--surface);background-image:var(--chevron);background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding:0 2rem 0 12px;color:var(--ink);font-weight:600}.lang-login{justify-content:flex-end}.lang-login .lang-select{min-width:10.5rem}.lang-rail,.lang-drawer{color:var(--sidebar-dim)}.lang-rail{margin:4px 0 8px}.lang-rail .lang-select,.lang-drawer .lang-select{flex:1;min-width:0;background-color:#1a3352;background-image:var(--chevron-light);color:#f4f8fc;border-color:#2a4666}.lang-drawer{padding:10px 0 4px}.lang-header{display:none}.lang-header .lang-select{min-width:9.2rem}.rail-foot{margin-top:auto;display:grid;gap:6px;padding:8px 12px 0}.rail-foot p{margin:0;color:#8ea3b8;font-size:11px;letter-spacing:.08em;text-transform:uppercase}.rail-foot .session-name{text-transform:none;letter-spacing:0;font-size:14px;color:#d7e4f0;font-weight:600}.rail .quiet,.drawer .quiet{background:transparent;color:var(--sidebar-dim);border:0;display:flex;gap:10px;align-items:center;min-height:40px;padding:0;cursor:pointer;font-weight:600;text-decoration:none;transition:color .18s var(--ease)}.workspace{min-width:0;min-height:0;height:100%;max-width:100%;margin-left:276px;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1;background:transparent}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:0 0 auto;min-width:0;max-width:100%;min-height:68px;padding:calc(8px + var(--safe-top)) 12px 8px;position:sticky;top:0;z-index:2;background:#ffffffb8;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.crumb{margin:0;color:var(--muted);font-weight:600;min-width:0;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb strong{color:var(--ink);font-weight:600}.top-actions{display:flex;align-items:center;gap:10px;flex:none;min-width:0}.logout-btn{flex:none;white-space:nowrap}.year-select{min-height:36px;max-width:100%;border-radius:999px;border:1.5px solid var(--line);background-color:var(--surface);background-image:var(--chevron);background-repeat:no-repeat;background-position:right 10px center;background-size:16px;padding:0 1.8rem 0 12px;color:var(--ink);font-weight:600}.role-pill{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.role-pill.admin{background:#e7eefc;color:#2451b8}.role-pill.personal{background:#e5f6ee;color:#1c7a45}.icon-btn{position:relative;width:40px;height:40px;border:0;border-radius:12px;background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:background-color .16s var(--ease),color .16s var(--ease),transform .14s var(--ease)}.bell-icon{transform-origin:50% 2px}.notice-count{display:inline-grid;place-items:center;flex:none;min-width:1.15rem;height:1.15rem;margin-left:auto;padding:0 .3rem;border-radius:999px;background:var(--danger);color:var(--danger-ink);font-size:.68rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.icon-btn .notice-count{position:absolute;top:3px;right:1px;min-width:1rem;height:1rem;margin-left:0;padding:0 .22rem;box-shadow:0 0 0 2px #ffffffe0}.content{flex:1 1 auto;min-height:0;width:100%;margin:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:8px 24px 32px}.page{width:min(1120px,100%);margin:0 auto}.stage{position:relative}.page.is-out{position:absolute;left:0;right:0;top:0;pointer-events:none}@keyframes content-in{0%{opacity:.35}to{opacity:1}}h1{font-size:clamp(1.45rem,1.1rem + 1.4vw,1.75rem);line-height:1.2;letter-spacing:-.02em;margin:0 0 6px;font-weight:600}h2{font-size:1.125rem;line-height:1.3;letter-spacing:-.015em;margin:0 0 12px;font-weight:600}p{margin:0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metrics.three{grid-template-columns:repeat(3,1fr)}.metric{position:relative;background:#ffffffb8;border-radius:22px;box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);padding:16px 18px 18px 20px;text-decoration:none;color:inherit;overflow:hidden;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}.metric span{color:var(--muted);font-size:.92rem}.metric strong{display:block;margin-top:8px;font-size:2rem;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--tone)}.tone-blue{--tone: #2457d6}.tone-amber{--tone: #b8860b}.tone-purple{--tone: #7a45b0}.tone-green{--tone: #1f8a4c}.panel{background:#ffffffb8;border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);padding:18px}.stack{display:grid;gap:16px}.split{display:grid;grid-template-columns:1.45fr .8fr;gap:16px;align-items:start}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row.end{justify-content:flex-end}.between{display:flex;justify-content:space-between;gap:12px;align-items:center}.btn,a.btn,.btn.secondary,.btn.danger,.btn.quiet{min-height:44px;padding:0 18px;border-radius:12px;border:0;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .14s var(--ease),background-color .16s var(--ease)}.btn,a.btn{background:var(--accent);color:var(--accent-ink)}.btn.secondary,a.btn.secondary{background:var(--surface);color:#1d4e9e;box-shadow:inset 0 0 0 1.5px #c5d4e6}.btn.danger{background:var(--danger);color:var(--danger-ink)}.btn.quiet{background:transparent;color:var(--ink);padding:0 10px;box-shadow:none}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn:active,.btn.secondary:active,a.btn:active{transform:scale(.98)}@media(hover:hover)and (pointer:fine){.btn:hover,a.btn:hover{background:var(--accent-press);transform:translateY(-1px)}.btn.secondary:hover,a.btn.secondary:hover{background:#f3f7fc;transform:translateY(-1px)}.btn.danger:hover{background:#a83636;transform:translateY(-1px)}.nav-link:hover{background:#ffffff14;color:var(--sidebar-ink);transform:translate(4px)}.nav-link[aria-current=page]:hover{transform:none}.icon-btn:hover{background:#1020330f}.rail .icon-btn:hover,.drawer .icon-btn:hover{background:#ffffff14;color:var(--sidebar-ink)}.quiet:hover{color:var(--sidebar-ink)}.metric:hover{transform:translateY(-2px)}}.field{display:grid;gap:6px}.field span,.check{font-weight:600}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:12px;border:1.5px solid var(--line);background-color:#fbfcfe;background-image:var(--chevron);background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding:8px 2.2rem 8px 12px;min-height:44px;font-weight:600;cursor:pointer;transition:border-color .16s var(--ease),box-shadow .16s var(--ease),background-color .16s var(--ease)}select:focus{border-color:#8eb0ef;box-shadow:0 0 0 4px #2f6fed24;outline:none}select:disabled{opacity:.45;cursor:not-allowed}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:22px;height:22px;margin:0;flex:none;border-radius:7px;border:1.5px solid #b7c6d6;background:#fff;display:inline-grid;place-items:center;cursor:pointer;vertical-align:middle;transition:background-color .16s var(--ease),border-color .16s var(--ease),transform .14s var(--ease)}input[type=checkbox]:after{content:"";width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg) scale(.4);opacity:0;transition:transform .16s var(--ease),opacity .16s var(--ease)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{opacity:1;transform:translateY(-1px) rotate(45deg) scale(1)}input[type=checkbox]:active{transform:scale(.94)}input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}.check{display:inline-flex;align-items:center;gap:10px;cursor:pointer}.field input:not([type=file]):not([type=checkbox]),.field select,.field textarea{width:100%;min-height:44px;border-radius:12px;border:1.5px solid var(--line);background-color:#fbfcfe;padding:8px 12px;transition:border-color .16s ease,box-shadow .16s ease}.field input:not([type=file]):not([type=checkbox]):focus,.field select:focus,.field textarea:focus{border-color:#8eb0ef;box-shadow:0 0 0 4px #2f6fed24;outline:none}.field textarea{min-height:88px;resize:vertical}.field select{padding-right:2.2rem}.password-field{position:relative}.password-field input{padding-right:48px}.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:transparent;color:var(--muted);display:grid;place-items:center;border-radius:10px}.password-toggle:hover{color:var(--ink);background:#eef3f8}.profile-card{padding:16px;border:1px solid var(--line);border-radius:16px;background:#f7fafc}.period-card{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.month-picks{border:0;margin:0;padding:0;display:grid;gap:8px}.month-picks legend{font-weight:600;padding:0}.month-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.month-chip{min-height:44px;border:1.5px solid var(--line);border-radius:12px;background:#fbfcfe;color:var(--ink);font-weight:600;text-transform:capitalize}.month-chip.on{background:#e8f0fd;border-color:#8eb0ef;color:#1d4e9e}.catalog-row{align-items:flex-start}.catalog-row .row{justify-content:flex-start}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help{color:var(--muted);font-size:.9375rem;line-height:1.45;max-width:68ch}.error{color:var(--danger);font-weight:600}.callout,.attention{background:var(--callout);color:var(--callout-ink);border-radius:20px;padding:14px 16px;box-shadow:0 8px 22px #8a4b1214}.attention strong{display:block;letter-spacing:.04em;font-size:.82rem;margin-bottom:4px}.ok-note,.check-card{background:#ffffffb8;color:var(--ink);border-radius:22px;box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);padding:16px}.check-card{display:grid;gap:10px;align-content:start}.check-row{display:flex;justify-content:space-between;gap:12px}.check-row span{color:var(--muted)}.good{color:var(--approved-ink);font-weight:600}.month-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.month-head h2{margin:0;font-size:1.25rem}.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.dow{text-align:center;color:var(--muted);font-size:.8rem;font-weight:600;padding-bottom:2px}.day{min-width:0;overflow:hidden;min-height:74px;border:0;border-radius:16px;background:#ffffffb8;color:var(--ink);text-align:left;padding:8px;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;box-shadow:inset 0 0 0 1px #e4ebf3}.day[data-state=blocked]{background:#fde8e6c7;color:var(--blocked-ink);box-shadow:none}.day[data-state=reserved]{background:#f8ecc4c7;color:var(--reserved-ink);box-shadow:none}.day[data-state=requested]{background:#e4eefcc7;color:var(--requested-ink);box-shadow:none}.day[data-state=approved]{background:#d9f3e3c7;color:var(--approved-ink);box-shadow:none}.day[data-state=overlap]{background:#efe4f8c7;color:var(--overlap-ink);box-shadow:none}.day[aria-pressed=true]{box-shadow:inset 0 0 0 2px var(--ink)}.day small{font-weight:600;letter-spacing:.02em;font-size:.68rem;line-height:1.1;white-space:nowrap}.day b{font-variant-numeric:tabular-nums}.blank{min-height:74px}.legend{display:flex;flex-wrap:wrap;gap:8px 14px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:24px;font-size:.85rem;color:var(--muted);font-weight:600}.swatch{width:12px;height:12px;border-radius:4px;display:inline-block}.segment{position:relative;display:flex;background:#e7eef6;border-radius:999px;padding:3px}.segment-pill{position:absolute;top:3px;bottom:3px;left:0;border-radius:999px;background:linear-gradient(180deg,#fff,#f4f8fc);box-shadow:inset 0 1px #fff,inset 0 0 0 1px #3ddecf8c,0 6px 14px #1020331a;transform-origin:left center;transition:transform .28s var(--ease-in-out);pointer-events:none;z-index:0}.segment button{position:relative;z-index:1;min-height:34px;border:0;background:transparent;border-radius:999px;padding:0 12px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .18s var(--ease),transform .16s var(--ease-out)}.segment button[aria-pressed=true]{color:var(--ink)}.segment button:active{transform:scale(.97)}.range-list{display:grid;gap:10px}.range{border-radius:14px;padding:12px 14px;display:grid;gap:2px}.range[data-state=blocked]{background:var(--blocked);color:var(--blocked-ink)}.range[data-state=reserved]{background:var(--reserved);color:var(--reserved-ink)}.range[data-state=approved]{background:var(--approved);color:var(--approved-ink)}.range[data-state=overlap],.range[data-state=requested]{background:var(--overlap);color:var(--overlap-ink)}.range[data-state=available]{background:#eef2f6;color:var(--muted)}.band{margin:0;border-radius:12px;padding:10px 14px;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase}.band.blocked{background:var(--blocked);color:var(--blocked-ink)}.band.reserved{background:var(--reserved);color:var(--reserved-ink)}.list{display:grid;gap:0;margin:0;padding:0;list-style:none}.panel.list{padding:8px 20px}.item{display:grid;gap:4px;padding:12px 0;border-bottom:1px solid var(--line)}.item:last-child{border-bottom:0}.activity{display:grid;grid-template-columns:4.5rem minmax(0,1fr);gap:12px;align-items:baseline}.activity time{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600;font-size:.9rem}.priority{border-radius:20px;background:#ffffffb8;padding:14px 16px;box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2)}.period{display:flex;justify-content:space-between;gap:12px;align-items:center;border-radius:20px;padding:16px 18px;box-shadow:0 8px 22px #1020330f}.period.pending,.period.draft{background:#f8ecc4b8;color:var(--reserved-ink)}.period.negotiation{background:#efe4f8b8;color:var(--overlap-ink)}.period.approved{background:#d9f3e3b8;color:var(--approved-ink)}.period.rejected,.period.withdrawn{background:#eef2f6b8;color:var(--muted)}.period-state{font-weight:600;letter-spacing:.05em;font-size:.78rem;text-transform:uppercase}.highlight{border-radius:22px;padding:18px;display:grid;gap:6px;box-shadow:var(--shadow)}.highlight.blue{background:#e7eefcb8;color:#16315f}.highlight.amber{background:#f8ecc4b8;color:var(--reserved-ink)}.highlight.purple{background:#efe4f8b8;color:var(--overlap-ink)}.highlight strong{font-size:1.8rem;letter-spacing:-.03em}.status{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;font-size:.8rem;font-weight:600;background:#eef2f6;width:max-content}.status.pending,.status.draft{background:#f8ecc4;color:#8a6410}.status.negotiation{background:var(--overlap);color:var(--overlap-ink)}.status.approved,.status.active{background:#d9f3e3;color:#1d7a45}.status.on_leave{background:#fdecc8;color:#8a5a12}.status+.status{margin-left:.35rem}.status.rejected,.status.inactive,.status.archived,.status.withdrawn{background:#e7edf3;color:#5b7086}table{width:100%;border-collapse:collapse}.request-inline-panel{background:#f6f9fc;border:1px solid var(--line);border-radius:14px;padding:14px}.request-inline-panel h2{font-size:1.05rem}th{text-align:left;font-size:.75rem;color:var(--muted);font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:10px 12px;background:#f4f7fb}th:first-child{border-radius:12px 0 0 12px}th:last-child{border-radius:0 12px 12px 0}td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:0}.person{display:flex;gap:10px;align-items:center}.avatar{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:#e7eefc;color:#2451b8;font-weight:600;flex:none}.avatar.inactive{background:#e7edf3;color:#5b7086}.track{position:relative;height:36px;border-radius:10px;background:#eef2f6;overflow:hidden}.track i{position:absolute;top:6px;bottom:6px;border-radius:8px;background:#7a45b0}.track i[data-kind=approved]{background:var(--approved)}.track i[data-kind=reserved]{background:var(--reserved)}.ticks{display:flex;justify-content:space-between;color:var(--muted);font-size:.75rem;font-weight:600}.banner{margin:0 16px 4px;padding:12px 14px;border-radius:18px;background:var(--callout);color:var(--callout-ink);display:flex;justify-content:space-between;gap:12px;align-items:center}.dialog{border:0;padding:0;margin:auto;border-radius:20px;background:#fff;color:var(--ink);box-shadow:0 24px 60px #10203338;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px)}.dialog::backdrop{background:#1020338f}.dialog form,.dialog .sheet{padding:20px;display:grid;gap:12px;max-height:calc(100dvh - 24px);overflow:auto;background:#fff;border-radius:inherit}.toast{position:fixed;left:50%;bottom:calc(24px + var(--safe-bottom));transform:translate(-50%);background:var(--navy);color:#fff;padding:12px 16px;border-radius:14px;z-index:50;max-width:min(440px,calc(100vw - 24px));animation:toast-in .32s var(--ease)}.notes{position:absolute;right:16px;top:78px;width:min(360px,calc(100vw - 24px));z-index:3;border-radius:22px;animation:content-in .18s var(--ease) both}.menu{position:relative;z-index:1}.menu[open]{z-index:8}.menu summary{list-style:none;cursor:pointer;min-height:44px;display:grid;place-items:center;font-weight:600;letter-spacing:.12em}.menu summary::-webkit-details-marker{display:none}.menu div{position:absolute;right:0;top:44px;background:var(--surface);box-shadow:var(--shadow);border-radius:12px;min-width:220px;z-index:3;display:grid;padding:6px}.menu button,.menu a{background:transparent;border:0;text-align:left;color:var(--ink);min-height:40px;padding:0 10px;border-radius:8px;text-decoration:none;display:flex;align-items:center;cursor:pointer}.skeleton{height:88px;border-radius:var(--radius);background:linear-gradient(90deg,#e4ebf3,#f7fafc,#e4ebf3);background-size:200% 100%;animation:shimmer 1.1s linear infinite}.boot{height:100dvh;overflow:auto;display:grid;place-items:center;padding:calc(32px + var(--safe-top)) 32px calc(32px + var(--safe-bottom))}.gate{position:relative;isolation:isolate;height:100dvh;overflow:auto;display:grid;place-items:center;padding:calc(24px + var(--safe-top)) 24px calc(24px + var(--safe-bottom));background:transparent}.gate-card{position:relative;z-index:1;width:min(420px,100%);background:#ffffffb8;backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);border-radius:28px;box-shadow:0 22px 56px #1020331f;padding:36px 28px 28px;display:grid;gap:14px}.gate-logo{width:76px;height:76px;margin:4px auto 2px;border-radius:18px;display:block;justify-self:center;object-fit:cover}.gate-card h1{text-align:center;font-size:1.35rem;margin-bottom:4px}.policy-login{text-align:center}.policy{max-width:68ch}.policy ul{margin:0;padding-left:1.15rem;display:grid;gap:8px}.tutorial h2{font-size:1.05rem}.policy-public{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;background:#f6f9fc;padding:calc(20px + var(--safe-top)) 16px calc(28px + var(--safe-bottom))}.policy-sheet{width:min(760px,100%);margin:0 auto;display:grid;gap:16px}.gate-card .btn{width:100%}.orbs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.orb{position:absolute;border-radius:50%;filter:blur(78px);opacity:.7;will-change:transform}.orb-a{width:42vw;height:42vw;min-width:280px;min-height:280px;background:#6aa8ff;left:-10%;top:-14%}.orb-b{width:36vw;height:36vw;min-width:240px;min-height:240px;background:#3ddecf;right:-8%;top:8%}.orb-c{width:34vw;height:34vw;min-width:220px;min-height:220px;background:#f0b45a;left:28%;bottom:-16%}.orb-d{width:28vw;height:28vw;min-width:180px;min-height:180px;background:#c9a0f5;right:12%;bottom:6%}.orb-e{width:24vw;height:24vw;min-width:160px;min-height:160px;background:#f48aa8;left:8%;top:42%}.tabbar,button.btn.menu-button{display:none}.drawer-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#08101c00;transition:background-color .32s var(--ease-drawer)}.drawer-layer.is-open{background:#08101c8a}.drawer{display:flex;flex-direction:column;height:calc(100% - 24px);width:max-content;max-width:min(340px,calc(88vw - 24px));margin:12px;border:0;border-radius:28px;background:var(--sidebar);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15);color:var(--sidebar-ink);padding:calc(22px + var(--safe-top)) 16px calc(18px + var(--safe-bottom));box-shadow:18px 12px 40px #08101c47;transform:translate(calc(-100% - 24px));transition:transform .32s var(--ease-drawer)}.drawer-layer.is-open .drawer{transform:translate(0)}.drawer .nav-link{white-space:nowrap}.material-filters{max-width:100%;overflow-x:auto}.material-filters button{flex:none}.material-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.material-card{display:grid;gap:12px;padding:16px 18px;border-bottom:0;border-radius:22px;background:#ffffffb8;box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);min-width:0}.material-card .between{align-items:flex-start;min-width:0;flex-wrap:wrap}.material-card .between>div{min-width:0;flex:1 1 12rem}.material-card .state-pill{flex:none}.material-card strong,.material-card .help,.material-note{overflow-wrap:anywhere;padding:0}.material-note{color:var(--ink)}.media-gallery,.media-picker{display:grid;gap:10px;min-width:0}.media-previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin:0;padding:0;list-style:none}.media-preview{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;background:#eef3f8}.media-preview img,.media-preview video,.media-open{width:100%;height:100%;object-fit:cover;display:grid;place-items:center;border:0;padding:0;background:#d7e2ee;color:var(--muted)}.media-open{cursor:pointer}.media-badge{position:absolute;left:6px;bottom:6px;background:#102033b8;color:#fff;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:999px}.media-x{position:absolute;top:4px;right:4px;width:28px;height:28px;border:0;border-radius:999px;background:#102033b8;color:#fff;display:grid;place-items:center;cursor:pointer}.media-add{position:relative;min-height:48px;border:1.5px dashed #c5d4e6;border-radius:14px;background:#f7fafc;color:#1d4e9e;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;cursor:pointer;width:fit-content;overflow:hidden;transition:transform .14s var(--ease),background-color .16s ease,border-color .16s ease}.media-add.compact{min-height:40px}.media-add:disabled,.media-add.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.media-add .file-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:pointer;font-size:0}.media-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#08101cb8;display:grid;place-items:center;padding:24px 16px}.media-frame{width:min(920px,100%);display:grid;gap:12px;justify-items:center;animation:dialog-in .28s var(--ease) both}.media-frame img,.media-frame video{max-width:100%;max-height:min(72vh,640px);border-radius:16px;background:#0b1724}.state-pill{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap}.state-ready{background:#d9f3e3;color:#1d7a45}.state-show{background:#f8ecc4;color:#8a6410}.state-repair{background:#efe4f8;color:#6d3f9a}.state-off{background:#fde8e6;color:#9a3b32}.material-card .field{flex:1 1 8rem;min-width:0}.drawer .brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.drawer-close{margin-left:auto;color:var(--sidebar-ink)}.drawer nav{flex:1;min-height:0;overflow:auto}.drawer .quiet{margin-top:0}.drawer-foot{margin-top:auto;display:grid;gap:8px;padding-bottom:var(--safe-bottom)}.secret{font-family:ui-monospace,SFMono-Regular,monospace;font-size:1.05rem;letter-spacing:.02em}@media(max-width:1279px){.rail{width:220px}.workspace{margin-left:248px}.metrics{grid-template-columns:1fr 1fr}.split{grid-template-columns:1fr}.content{padding-left:16px;padding-right:16px}}@media(min-width:840px)and (max-width:1279px){.lang-header{display:flex}.lang-rail,.role-pill,.logout-btn span{display:none}}@media(max-width:839px){.app{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;padding-bottom:calc(10px + var(--safe-bottom))}.workspace{height:auto;min-height:0;margin-left:0}.rail,.crumb-root,.crumb-sep{display:none}.metrics,.metrics.three,.form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.content{padding:20px 14px 28px;touch-action:pan-y}.topbar{flex:0 0 auto;min-height:calc(max(8px,var(--safe-top)) + 60px);padding-top:max(8px,var(--safe-top));padding-bottom:16px;background:#ffffffb8;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.role-pill{display:none}.year-select{width:6.6rem}.top-actions{gap:6px}.topbar,.banner{padding-left:12px;padding-right:12px}.banner{margin-left:16px;margin-right:16px}.tabbar{display:flex;position:relative;left:auto;right:auto;bottom:auto;width:auto;margin:0 12px;background:#ffffffe0;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:20;padding:8px 4px;justify-content:space-around;align-items:stretch;border-radius:24px;box-shadow:0 12px 32px #1020331f}.tabbar a,.tabbar button{position:relative;z-index:1;display:flex;flex:1 1 0;flex-direction:column;align-items:center;gap:4px;font-size:.8rem;color:var(--muted);min-height:64px;min-width:0;padding:0 2px;justify-content:center;background:transparent;border:0;font-weight:600;white-space:nowrap;line-height:1.1;transition:color .18s var(--ease)}.tab-indicator{position:absolute;z-index:0;top:10px;height:64px;left:0;border-radius:16px;background:#d6e4fb;pointer-events:none;transform-origin:left center;transition:transform .28s var(--ease-drawer),opacity .18s linear}.tabbar a[aria-current=page],.tabbar button[aria-current=page]{color:#17345c}button.btn.menu-button{display:inline-flex;min-width:44px;padding:0}.activity{grid-template-columns:4.2rem minmax(0,1fr)}}@media(min-width:840px){.topbar{margin:14px 16px 0;padding-left:18px;padding-right:18px;gap:12px;border-radius:22px;box-shadow:var(--shadow)}.notes{top:92px;right:28px}}@media(max-width:719px){.metrics,.metrics.three,.form-grid{grid-template-columns:1fr}.content{padding-left:10px;padding-right:10px}.between{flex-direction:column;align-items:stretch}.between>.btn,.between>a.btn{width:100%}.period{flex-direction:column;align-items:flex-start}.month{gap:4px}.month-head .row{width:100%}.month-head .year-select{flex:1;min-width:0}.day,.blank{min-height:48px;padding:4px}.day small{font-size:.62rem}.metric strong{font-size:1.7rem}.notes{left:12px;right:12px;width:auto}.gate{padding:16px;align-items:start;padding-top:max(16px,calc(6vh + var(--safe-top)));padding-bottom:calc(16px + var(--safe-bottom))}.gate-card{padding:28px 18px}.panel thead{display:none}.panel tr{display:grid;gap:8px;padding:14px 0;border-bottom:1px solid var(--line)}.panel tr:last-child{border-bottom:0}.panel tr.is-open{border-bottom:0;padding-bottom:8px}.panel tr.request-inline{padding-top:0}.panel td{display:grid;gap:2px;border:0;padding:0}.panel td[data-label]:before{content:attr(data-label);color:var(--muted);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.panel td .row .btn{flex:1 1 8rem}.toast{bottom:calc(96px + var(--safe-bottom))}.topbar .logout-btn{position:relative;width:40px;min-width:40px;padding:0}.topbar .logout-btn span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}}@media(prefers-reduced-motion:no-preference){@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(12px);filter:blur(6px)}to{opacity:1;transform:translate(-50%);filter:none}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(12px) scale(.96);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}@keyframes month-next{0%{opacity:.35;transform:translate(28px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}@keyframes month-prev{0%{opacity:.35;transform:translate(-28px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}.dialog[open]{animation:dialog-in .28s var(--ease)}.month-swap.next{animation:month-next .42s var(--ease)}.month-swap.prev{animation:month-prev .42s var(--ease)}.orb-a{animation:drift-a 26s linear infinite alternate}.orb-b{animation:drift-b 34s linear infinite alternate}.orb-c{animation:drift-c 22s linear infinite alternate}.orb-d{animation:drift-d 31s linear infinite alternate}.orb-e{animation:drift-e 28s linear infinite alternate}.bell-live .bell-icon{animation:bell-ring .64s var(--ease) 1}@keyframes bell-ring{0%{transform:rotate(0)}20%{transform:rotate(14deg)}40%{transform:rotate(-12deg)}60%{transform:rotate(8deg)}80%{transform:rotate(-4deg)}to{transform:rotate(0)}}.gate-card{animation:gate-in .42s var(--ease) both}.gate-card.is-leaving{animation:gate-out .34s var(--ease) forwards}.app.is-arriving{animation:dash-in .4s var(--ease) both}.page.is-in .stack>*,.page.is-in .metrics>*,.page.is-in .split>*,.page.is-in .list>.item,.page.is-in .material-list>*,.page.is-in .form-grid>*{animation:piece-in .26s var(--ease) both}.page.is-out .stack>*,.page.is-out .metrics>*,.page.is-out .split>*,.page.is-out .list>.item,.page.is-out .material-list>*,.page.is-out .form-grid>*{animation:piece-out .18s var(--ease) both}.page.is-in .stack>*:nth-child(2),.page.is-in .metrics>*:nth-child(2),.page.is-in .split>*:nth-child(2){animation-delay:36ms}.page.is-in .stack>*:nth-child(3),.page.is-in .metrics>*:nth-child(3){animation-delay:72ms}.page.is-in .stack>*:nth-child(4),.page.is-in .metrics>*:nth-child(4){animation-delay:108ms}.page.is-in .stack>*:nth-child(5){animation-delay:144ms}.page.is-in .stack>*:nth-child(n+6){animation-delay:.18s}@keyframes piece-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes piece-out{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}@keyframes gate-in{0%{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}@keyframes gate-out{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-14px) scale(.98)}}@keyframes dash-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes drift-a{0%{transform:translateZ(0)}50%{transform:translate3d(16vw,28vh,0)}to{transform:translate3d(4vw,8vh,0)}}@keyframes drift-b{0%{transform:translateZ(0)}50%{transform:translate3d(-18vw,12vh,0)}to{transform:translate3d(-6vw,32vh,0)}}@keyframes drift-c{0%{transform:translateZ(0)}50%{transform:translate3d(-14vw,-16vh,0)}to{transform:translate3d(10vw,-6vh,0)}}@keyframes drift-d{0%{transform:translateZ(0)}50%{transform:translate3d(12vw,-22vh,0)}to{transform:translate3d(-8vw,-10vh,0)}}@keyframes drift-e{0%{transform:translateZ(0)}50%{transform:translate3d(-10vw,18vh,0)}to{transform:translate3d(14vw,-14vh,0)}}}@media(prefers-reduced-motion:reduce){.page,.page.next,.page.prev,.detail-body,.toast,.dialog[open],.gate-card,.app.is-arriving,.metric,.item,.period,.highlight,.notes,.attention,.range-list,.day,.month-swap,.banner,.material-pane,.media-preview,.media-layer,.media-frame{animation:fade .16s ease both}.skeleton,.orb{animation:none}.drawer-layer,.drawer,.bell-icon,.tab-indicator,.segment-pill,.segment button{transition:none}.bell-live .bell-icon{animation:none}@keyframes fade{0%{opacity:0}to{opacity:1}}}@media print{html,body,#root,.app,.workspace,.content,.gate,.boot{height:auto!important;max-height:none!important;overflow:visible!important}.rail,.topbar,.tabbar,.btn,.banner,.segment,.drawer-layer,.orbs{display:none!important}.app{display:block}.workspace{margin-left:0!important}.day{break-inside:avoid;box-shadow:none;animation:none}}
