.layout{min-height:100vh;display:flex;flex-direction:column}.layout__header{background:var(--color-surface);border-bottom:1px solid var(--color-border)}.layout__bar{max-width:1120px;margin:0 auto;padding:var(--space-3) var(--space-5);display:flex;align-items:center;gap:var(--space-6);flex-wrap:wrap}.layout__brand{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-family-heading);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--color-brand-primary);text-decoration:none}.layout__logo{width:28px;height:28px;display:block}.layout__session{margin-left:auto;display:flex;align-items:center;gap:var(--space-3)}.layout__user{display:flex;flex-direction:column;line-height:1.2;font-size:var(--font-size-sm)}.layout__role{color:var(--color-text-muted);font-size:12px}.layout__logout{background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer}.layout__logout:hover{border-color:var(--color-brand-primary);color:var(--color-brand-primary)}.layout__nav{display:flex;gap:var(--space-4);flex-wrap:wrap}.layout__link{padding:var(--space-2) 0;color:var(--color-text-muted);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-bottom:2px solid transparent}.layout__link:hover{color:var(--color-text)}.layout__link--active{color:var(--color-brand-primary);border-bottom-color:var(--color-brand-primary)}.layout__main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:var(--space-6) var(--space-5);display:flex;flex-direction:column;gap:var(--space-5)}.pageHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.pageHeader__subtitle{margin:var(--space-1) 0 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.filters{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:flex-end}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.pagination__info{font-size:var(--font-size-sm);color:var(--color-text-muted)}.pagination__controls{display:flex;gap:var(--space-2)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4)}.definition{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin:0}.definition dt{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.definition dd{margin:var(--space-1) 0 0;font-size:var(--font-size-base)}.linkButton{background:none;border:none;padding:0;color:var(--color-brand-primary);font:inherit;cursor:pointer;text-decoration:underline}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid transparent;border-radius:var(--radius-sm);font-family:var(--font-family-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:1.4;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.button:disabled{cursor:not-allowed;opacity:.6}.button--primary{background:var(--color-brand-primary);color:var(--grayscale-0)}.button--primary:hover:not(:disabled){background:var(--color-brand-primary-hover)}.button--secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.button--secondary:hover:not(:disabled){background:var(--color-bg)}.button--danger{background:var(--color-danger);color:var(--grayscale-0)}.button--danger:hover:not(:disabled){filter:brightness(.92)}.button--block{width:100%;justify-content:center}.card{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.card__title{font-size:var(--font-size-lg)}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.field__control{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font-family-body);font-size:var(--font-size-base)}.field__control::placeholder{color:var(--color-text-disabled)}.field__control:disabled{background:var(--color-bg);color:var(--color-text-disabled)}.field--invalid .field__control{border-color:var(--color-danger)}.field__hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.field__error{font-size:var(--font-size-xs);color:var(--color-danger)}.state{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6);border-radius:var(--radius-md);background:var(--color-surface);text-align:center;align-items:center}.state--loading{padding:var(--space-4);gap:var(--space-2);align-items:stretch}.state__skeletonRow{height:var(--space-6);border-radius:var(--radius-sm);background:var(--color-bg);animation:state-pulse 1.4s ease-in-out infinite}@keyframes state-pulse{0%,to{opacity:1}50%{opacity:.55}}.state__title{margin:0;font-family:var(--font-family-heading);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium)}.state__description{margin:0;max-width:46ch;color:var(--color-text-muted)}.state--error .state__title{color:var(--color-danger)}.state--error{background:var(--color-danger-surface)}.state__trace{margin:0;font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-muted)}.state__srOnly{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.table__scroll{overflow-x:auto;border-radius:var(--radius-md);background:var(--color-surface)}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.table__caption{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border)}.table th{font-weight:var(--font-weight-medium);color:var(--color-text-muted);white-space:nowrap}.table tbody tr:last-child td{border-bottom:none}.table__row--clickable{cursor:pointer}.table__row--clickable:hover{background:var(--color-brand-surface)}.users__form{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:var(--space-4)}.users__roles{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-4);display:grid;gap:var(--space-3)}.users__roles legend{color:var(--color-text-muted);font-size:var(--font-size-sm);padding:0 var(--space-2)}.users__roles-hint{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.users__role{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3);font-size:var(--font-size-sm)}.users__role--checked{border-color:var(--color-brand-primary);background:var(--color-brand-surface)}.users__role-header{display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;cursor:pointer}.users__role-name{font-weight:600}.users__role-summary{color:var(--color-text-muted)}.users__role-detail{margin-top:var(--space-2);padding-left:calc(var(--space-3) + var(--space-2))}.users__role-audience{margin:0 0 var(--space-2)}.users__role-grants-label{margin:0 0 var(--space-1);color:var(--color-text-muted)}.users__role-grants{margin:0;padding-left:var(--space-4);display:grid;gap:2px}.users__notice{background:var(--color-brand-surface);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.users__role-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.login{min-height:100vh;display:grid;place-items:center;padding:var(--space-5);background:var(--color-background)}.login__card{width:100%;max-width:380px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6)}.login__brand{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-5)}.login__logo{width:32px;height:32px;display:block}.login__wordmark{font-family:var(--font-family-heading);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--color-brand-primary)}.login__subtitle{color:var(--color-text-muted);margin:0 0 var(--space-5);font-size:var(--font-size-sm)}.login__error{background:var(--color-danger-surface);color:var(--color-danger);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.login__actions{margin-top:var(--space-5)}.login__hint{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-sm);line-height:1.5}.login__back{display:block;width:100%;margin-top:var(--space-3);background:none;border:none;padding:var(--space-2);font:inherit;font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;text-decoration:underline}.login__back:hover{color:var(--color-brand-primary)}.statusBadge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:1.4;white-space:nowrap}.filePicker{display:grid;gap:var(--space-1)}.filePicker__control{display:inline-flex;align-items:center;gap:var(--space-2);padding:10px var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;width:fit-content}.filePicker__control:hover{border-color:var(--color-brand-primary);color:var(--color-brand-primary)}.filePicker__control:focus-within{outline:2px solid var(--color-brand-primary);outline-offset:2px}.filePicker__control--busy{opacity:.6;cursor:progress}.filePicker__control input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.filePicker__hint{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.phraseSearch>:first-child{flex:1 1 320px}.phraseSearch__note{flex-basis:100%;margin:0;min-height:1.5em;font-size:var(--font-size-sm);color:var(--color-text-muted)}.dialog{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:#16181e73;z-index:10}.dialog__panel{width:min(440px,100%);display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-md)}.dialog__hint{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.dialog__error{margin:0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-danger-surface);color:var(--color-danger);font-size:var(--font-size-sm)}.dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.diagram{display:flex;flex-direction:column;gap:var(--space-4)}.diagram__empty{margin:0;color:var(--color-text-muted)}.diagram__axle{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md)}.diagram__axleHeader{display:flex;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap}.diagram__axleName{font-family:var(--font-family-heading);font-weight:var(--font-weight-medium)}.diagram__axleMeta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.diagram__positions{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}.slot{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);font-family:var(--font-family-body);font-size:var(--font-size-sm);text-align:left;color:var(--color-text)}button.slot{cursor:pointer}button.slot:hover:not(:disabled){border-color:var(--color-brand-primary)}button.slot:disabled{cursor:progress;opacity:.6}.slot--free{border-style:dashed;background:var(--color-bg)}.slot__code{font-size:var(--font-size-xs);color:var(--color-text-muted)}.slot__fire{font-weight:var(--font-weight-medium)}.slot__brand,.slot__pressure{font-size:var(--font-size-xs);color:var(--color-text-muted)}.slot__freeLabel{color:var(--color-text-muted);font-style:italic}.photos{list-style:none;margin:0 0 var(--space-4);padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-3)}.photos__item img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius-sm);background:var(--color-surface-muted, #f1f2f3)}.photos__caption{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-muted)}.photos__upload{display:grid;gap:var(--space-3);max-width:420px}.photos__file input{display:block;margin-top:var(--space-1)}@font-face{font-family:Figtree;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/figtree-latin-f96cbb-CEHu_veL.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/figtree-latin-ext-7471c0-C5tEHAKb.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/figtree-latin-f96cbb-CEHu_veL.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/figtree-latin-ext-7471c0-C5tEHAKb.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Prompt;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/prompt-latin-e3f287-KUqslaQe.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Prompt;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/prompt-latin-ext-1c7f70-BbYeOWIz.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Prompt;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/prompt-latin-4a7e39-BpwL5-uY.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Prompt;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/prompt-latin-ext-a869f4-Bwcq9sdc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--brand-0: #fafbff;--brand-100: #f7f9fe;--brand-200: #e7ecfb;--brand-300: #bfcdf4;--brand-400: #7694e6;--brand-500: #043ad1;--brand-600: #0330ad;--brand-700: #032688;--brand-800: #021b64;--brand-900: #01113f;--cyan-0: #f0feff;--cyan-100: #e8feff;--cyan-200: #c5fbff;--cyan-300: #b7faff;--cyan-400: #70f5ff;--cyan-500: #00eeff;--cyan-600: #00c4d3;--cyan-700: #009ba6;--cyan-800: #00717a;--cyan-900: #00474d;--orange-0: #fff9f5;--orange-100: #fff3eb;--orange-200: #feede2;--orange-300: #fdd4ba;--orange-400: #faa672;--orange-500: #f55e00;--orange-600: #cb4e00;--orange-700: #a13e00;--orange-800: #772d00;--orange-900: #4d1d00;--grayscale-0: #ffffff;--grayscale-100: #fdfdfd;--grayscale-200: #f1f2f3;--grayscale-300: #d4d5da;--grayscale-400: #9ea1ab;--grayscale-500: #4a5063;--grayscale-600: #3d4252;--grayscale-700: #16181e;--grayscale-800: #23262f;--grayscale-900: #16181e;--green-100: #e8f5ec;--green-700: #1f7a3d;--red-100: #fcebea;--red-700: #b3261e;--color-brand-primary: var(--brand-500);--color-brand-primary-hover: var(--brand-600);--color-brand-surface: var(--brand-200);--color-brand-accent: var(--cyan-700);--color-bg: var(--grayscale-200);--color-surface: var(--grayscale-0);--color-border: var(--grayscale-300);--color-text: var(--grayscale-900);--color-text-muted: var(--grayscale-500);--color-text-disabled: var(--grayscale-400);--color-status-in-use: var(--brand-500);--color-status-in-use-surface: var(--brand-200);--color-status-available: var(--green-700);--color-status-available-surface: var(--green-100);--color-status-under-analysis: var(--orange-700);--color-status-under-analysis-surface: var(--orange-100);--color-status-discarded: var(--grayscale-500);--color-status-discarded-surface: var(--grayscale-200);--color-status-open: var(--orange-700);--color-status-open-surface: var(--orange-100);--color-status-closed: var(--green-700);--color-status-closed-surface: var(--green-100);--color-status-pending: var(--orange-700);--color-status-pending-surface: var(--orange-100);--color-status-resolved: var(--green-700);--color-status-resolved-surface: var(--green-100);--color-priority-low: var(--grayscale-500);--color-priority-low-surface: var(--grayscale-200);--color-priority-medium: var(--cyan-700);--color-priority-medium-surface: var(--cyan-100);--color-priority-high: var(--orange-700);--color-priority-high-surface: var(--orange-100);--color-priority-critical: var(--red-700);--color-priority-critical-surface: var(--red-100);--color-success: var(--green-700);--color-success-surface: var(--green-100);--color-warning: var(--orange-700);--color-warning-surface: var(--orange-100);--color-danger: var(--red-700);--color-danger-surface: var(--red-100);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-8: 48px;--font-family-heading: "Prompt", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-body: "Figtree", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 20px;--font-size-xl: 28px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-bold: 700;--radius-sm: 4px;--radius-md: 8px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgb(22 24 30 / 8%), 0 1px 3px rgb(22 24 30 / 6%);--shadow-md: 0 4px 12px rgb(22 24 30 / 10%), 0 2px 4px rgb(22 24 30 / 6%)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-family-body);font-size:var(--font-size-base);font-weight:var(--font-weight-regular);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-family:var(--font-family-heading);font-weight:var(--font-weight-medium);line-height:1.25}h1{font-size:var(--font-size-xl)}h2{font-size:var(--font-size-lg)}h3{font-size:var(--font-size-base)}.identifier{font-family:var(--font-family-mono)}:focus-visible{outline:2px solid var(--color-brand-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
