:root{--surface-page: #f6f7f9;--surface-card: #ffffff;--surface-sunken: #eef0f4;--surface-hover: #f0f3f8;--surface-nav: #1b2434;--surface-nav-hover: #26324a;--surface-nav-active: #2f3f5e;--border: #dfe3ea;--border-strong: #c3cad6;--border-focus: #2f6feb;--text: #1a2233;--text-muted: #5b6678;--text-subtle: #808c9f;--text-inverse: #f4f6fa;--text-nav: #b8c3d6;--text-nav-active: #ffffff;--accent: #2f6feb;--accent-hover: #2559c4;--accent-soft: #e8f0fe;--accent-text: #1c4ba8;--success: #1f7a44;--success-soft: #e3f4ea;--danger: #b3261e;--danger-hover: #8f1e18;--danger-soft: #fdecea;--warning: #8a5a00;--warning-soft: #fdf3e0;--font-sans: "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif;--font-mono: "Cascadia Mono", "SF Mono", Consolas, "Liberation Mono", monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 4px;--radius: 6px;--radius-lg: 10px;--shadow-sm: 0 1px 2px rgb(16 24 40 / .06);--shadow: 0 2px 8px rgb(16 24 40 / .08);--shadow-lg: -8px 0 32px rgb(16 24 40 / .14);--nav-width: 248px;--drawer-width: 520px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--surface-page: #11151c;--surface-card: #181d26;--surface-sunken: #1f2632;--surface-hover: #222a37;--surface-nav: #0d1118;--surface-nav-hover: #1a2130;--surface-nav-active: #24304a;--border: #2a323f;--border-strong: #3a4454;--border-focus: #5b93ff;--text: #e6eaf2;--text-muted: #9aa5b8;--text-subtle: #7a8598;--text-inverse: #11151c;--text-nav: #98a4ba;--text-nav-active: #ffffff;--accent: #5b93ff;--accent-hover: #7aa8ff;--accent-soft: #1b2942;--accent-text: #9dbeff;--success: #4ec27e;--success-soft: #16301f;--danger: #f2837c;--danger-hover: #ff9c96;--danger-soft: #331816;--warning: #e0ac4e;--warning-soft: #2e2413;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow: 0 2px 8px rgb(0 0 0 / .45);--shadow-lg: -8px 0 32px rgb(0 0 0 / .5)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--surface-page);color:var(--text);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.3}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.shell{display:grid;grid-template-columns:var(--nav-width) 1fr;min-height:100vh}.sidebar{display:flex;flex-direction:column;background:var(--surface-nav);color:var(--text-nav);padding:var(--space-4) 0;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar__brand{padding:0 var(--space-4) var(--space-4);border-bottom:1px solid rgb(255 255 255 / .08);margin-bottom:var(--space-3)}.sidebar__brand-title{color:#fff;font-size:var(--text-md);font-weight:600;letter-spacing:-.01em}.sidebar__brand-sub{font-size:var(--text-xs);color:var(--text-nav);margin-top:2px}.sidebar__group{padding:var(--space-3) var(--space-4) var(--space-1);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle)}.sidebar__link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-4);color:var(--text-nav);font-size:var(--text-base);border-left:3px solid transparent}.sidebar__link:hover{background:var(--surface-nav-hover);color:#fff;text-decoration:none}.sidebar__link.is-active{background:var(--surface-nav-active);color:var(--text-nav-active);border-left-color:var(--accent);font-weight:500}.sidebar__footer{margin-top:auto;padding:var(--space-4) var(--space-4) 0;border-top:1px solid rgb(255 255 255 / .08);font-size:var(--text-xs);color:var(--text-subtle)}.region-switch{margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid rgb(255 255 255 / .08)}.region-switch__label{display:block;margin-bottom:var(--space-1);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle)}.region-switch .select{width:100%}.sidebar__user{color:var(--text-nav);font-size:var(--text-sm);margin-bottom:var(--space-1);word-break:break-word}.main{display:flex;flex-direction:column;min-width:0}.page{padding:var(--space-5) var(--space-6) var(--space-7);max-width:1400px;width:100%}.page__header{margin-bottom:var(--space-5)}.page__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page__title{font-size:var(--text-xl);letter-spacing:-.015em}.page__description{margin:var(--space-2) 0 0;color:var(--text-muted);max-width:76ch}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-card);color:var(--text);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease}.btn:hover:not(:disabled){background:var(--surface-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn--danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn--danger:hover:not(:disabled){background:var(--danger-soft)}.btn--ghost{background:transparent;border-color:transparent;color:var(--text-muted);padding:var(--space-1) var(--space-2)}.btn--ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.btn--sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--surface-card)}.toolbar--bare{padding:var(--space-2) var(--space-4)}.toolbar__spacer{margin-left:auto}.toolbar__count{color:var(--text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.input,.select,.textarea{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-card);color:var(--text);font:inherit}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--border-focus) 22%,transparent)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-sunken);color:var(--text-muted);cursor:not-allowed}.input--error,.select--error{border-color:var(--danger)}.input--search{min-width:260px;width:auto}.input--time{width:7.5rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.textarea{min-height:5.5rem;resize:vertical}.select--filter{width:auto;min-width:9rem}.field{margin-bottom:var(--space-4)}.field__label{display:block;font-weight:500;margin-bottom:var(--space-1)}.field__required{color:var(--danger);margin-left:2px}.field__help{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-muted)}.field__error{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--danger);font-weight:500}.field--inline{display:flex;align-items:flex-start;gap:var(--space-3)}.checkbox{display:flex;align-items:flex-start;gap:var(--space-3);cursor:pointer}.checkbox input[type=checkbox]{width:1.05rem;height:1.05rem;margin:2px 0 0;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.checkbox input:disabled{cursor:not-allowed}.checkbox__text{font-weight:500}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.table th{text-align:left;font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--surface-sunken);white-space:nowrap;position:sticky;top:0;z-index:1}.table th button{background:none;border:0;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;display:inline-flex;gap:var(--space-1);align-items:center}.table th button:hover{color:var(--text)}.table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);vertical-align:top}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--surface-hover)}.table tbody tr.is-selected{background:var(--accent-soft)}.table__cell--key{font-family:var(--font-mono);font-size:var(--text-sm);white-space:nowrap}.table__cell--muted{color:var(--text-muted);font-size:var(--text-sm);white-space:nowrap}.table__cell--num{font-variant-numeric:tabular-nums;font-family:var(--font-mono);font-size:var(--text-sm);white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:1px var(--space-2);border-radius:999px;font-size:var(--text-xs);font-weight:600;white-space:nowrap}.badge--on{background:var(--success-soft);color:var(--success)}.badge--off{background:var(--surface-sunken);color:var(--text-subtle)}.badge--warn{background:var(--warning-soft);color:var(--warning)}.badge--info{background:var(--accent-soft);color:var(--accent-text)}.badge--danger{background:var(--danger-soft);color:var(--danger)}.drawer-backdrop{position:fixed;inset:0;background:#0b101861;z-index:40;animation:fade-in .12s ease}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(var(--drawer-width),100vw);background:var(--surface-card);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:50;display:flex;flex-direction:column;animation:slide-in .16s ease}.drawer__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.drawer__title{font-size:var(--text-lg)}.drawer__subtitle{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);margin-top:2px;word-break:break-all}.drawer__body{flex:1;overflow-y:auto;padding:var(--space-5)}.drawer__footer{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border);background:var(--surface-sunken)}.drawer__close{background:none;border:0;font-size:var(--text-lg);line-height:1;color:var(--text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm)}.drawer__close:hover{background:var(--surface-hover);color:var(--text)}.section{border-top:1px solid var(--border);margin-top:var(--space-5);padding-top:var(--space-4)}.section__title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:var(--space-3)}.stamp{display:flex;gap:var(--space-4);flex-wrap:wrap;font-size:var(--text-sm);color:var(--text-muted)}.history{list-style:none;margin:0;padding:0}.history__item{padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.history__item:last-child{border-bottom:0}.history__meta{display:flex;gap:var(--space-2);align-items:baseline;flex-wrap:wrap;font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-2)}.history__who{font-weight:600;color:var(--text)}.diff{margin:0;display:grid;grid-template-columns:minmax(8rem,auto) 1fr;gap:var(--space-1) var(--space-3);font-size:var(--text-sm)}.diff__field{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-xs);padding-top:2px}.diff__values{margin:0;display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap}.diff__old{text-decoration:line-through;color:var(--text-subtle)}.diff__new{font-weight:500}.diff__arrow{color:var(--text-subtle)}.banner{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid transparent;margin-bottom:var(--space-4)}.banner--error{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 35%,transparent);color:var(--danger)}.banner--info{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent-text)}.banner--warn{background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 35%,transparent);color:var(--warning)}.banner__title{font-weight:600}.banner__body{margin:var(--space-1) 0 0;font-size:var(--text-sm)}.empty{padding:var(--space-7) var(--space-4);text-align:center;color:var(--text-muted)}.empty__title{font-weight:600;color:var(--text);margin-bottom:var(--space-1)}.spinner{width:1rem;height:1rem;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.loading-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-6);justify-content:center;color:var(--text-muted)}.toasts{position:fixed;right:var(--space-5);bottom:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);z-index:60}.toast{min-width:18rem;max-width:26rem;padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-card);border:1px solid var(--border-strong);box-shadow:var(--shadow);animation:slide-up .16s ease}.toast--success{border-left:3px solid var(--success)}.toast--error{border-left:3px solid var(--danger)}.toast__title{font-weight:600}.toast__body{font-size:var(--text-sm);color:var(--text-muted);margin-top:2px}.toast__note{font-size:var(--text-sm);margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border)}.signin{min-height:100vh;display:grid;place-items:center;padding:var(--space-5)}.signin__card{max-width:26rem;width:100%;padding:var(--space-6);text-align:center}.signin__title{font-size:var(--text-xl);margin-bottom:var(--space-2)}.signin__body{color:var(--text-muted);margin-bottom:var(--space-5)}.perm-table th.perm-table__type{text-align:center;min-width:7.5rem}.perm-table td.perm-cell{text-align:center;white-space:nowrap}.perm-cell--all{color:var(--text-muted);font-style:italic}.perm-badge{margin-left:var(--space-2)}.perm-level{min-width:7rem}.perm-level--view{background:var(--accent-soft)}.perm-level--edit{background:var(--success-soft)}.region-picker{border:0;margin:0 0 var(--space-3);padding:0;display:grid;gap:var(--space-2)}.region-picker__option{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.region-picker__option:hover{background:var(--surface-hover)}.region-picker__option input{accent-color:var(--accent)}.region-picker__actions{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.status-note{display:grid;gap:var(--space-2)}.status-note__count{font-size:var(--text-xs);color:var(--text-subtle);text-align:right}.status-note__count--over{color:var(--danger)}.suggest{position:relative}.suggest__list{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:10;margin:0;padding:var(--space-1);list-style:none;background:var(--surface-card);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);max-height:16rem;overflow-y:auto}.suggest__item{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);cursor:pointer}.suggest__item.is-active{background:var(--surface-hover)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(16px);opacity:0}to{transform:none;opacity:1}}@keyframes slide-up{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:var(--space-3)}.sidebar__brand{border:0;margin:0;padding:0 var(--space-3) 0 0}.sidebar__group{display:none}.sidebar__link{border-left:0;border-radius:var(--radius);padding:var(--space-2) var(--space-3)}.sidebar__link.is-active{border-left:0}.sidebar__footer{margin:0 0 0 auto;border:0;padding:0}.page{padding:var(--space-4) var(--space-4) var(--space-6)}.field-row{grid-template-columns:1fr}}
