@font-face{font-family:Gravity;src:url(/assets/Gravity-UltraLight-DByY91d6.otf)format("opentype");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-UltraLightItalic-BuDkvN13.otf)format("opentype");font-weight:200;font-style:italic;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-Light-DZPijlws.otf)format("opentype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-LightItalic-C-6rOAS8.otf)format("opentype");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-Book-pC1Mza-P.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-BookItalic-BAI35lrT.otf)format("opentype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-Regular-ttnUdLHT.otf)format("opentype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-Italic-BenGYvcJ.otf)format("opentype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-Bold-BnJ6HStd.otf)format("opentype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Gravity;src:url(/assets/Gravity-BoldItalic-B-0McIRx.otf)format("opentype");font-weight:700;font-style:italic;font-display:swap}:root{--font-sans:"Gravity", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display:var(--font-sans);--font-mono:"Gravity", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--bg:#eaeaea;--surface:#fff;--surface-alt:#f8f8f8;--row-hover:#f8f8f8;--border:#dfdfdf;--border-strong:#cacaca;--ink:#282828;--ink-hover:#1a1a1a;--ink-2:#535353;--ink-muted:#7c7c7c;--on-dark:#fff;--accent:#d93b28;--accent-dark:#b3271a;--production:#127a44;--production-dark:#0d6b38;--overlay:#28282873;--focus:#2c4e77;--tone-danger-fg:#b3271a;--tone-danger-bg:#fbe9e6;--tone-danger-bd:#f0c4bc;--tone-warning-fg:#9a6410;--tone-warning-bg:#fbf0dc;--tone-warning-bd:#edd6a8;--tone-success-fg:#2f6b4a;--tone-success-bg:#e6f1e9;--tone-success-bd:#c2ddcb;--tone-info-fg:#2c4e77;--tone-info-bg:#e5edf7;--tone-info-bd:#c3d5ea;--tone-neutral-fg:#626262;--tone-neutral-bg:#ececec;--tone-neutral-bd:#d7d7d7;--tone-priority-urgent-fg:var(--accent);--tone-priority-urgent-bg:#ffdad4;--tone-priority-urgent-bd:#fc9486;--tone-priority-high-fg:#b65c00;--tone-priority-high-bg:#fcddc8;--tone-priority-high-bd:#e9a069;--tone-priority-normal-fg:#008743;--tone-priority-normal-bg:#cfe9d5;--tone-priority-normal-bd:#73c189;--tone-priority-low-fg:#3372d7;--tone-priority-low-bg:#dde1fc;--tone-priority-low-bd:#97aefa;--tone-priority-lowest-fg:#617787;--tone-priority-lowest-bg:#d9e4ed;--tone-priority-lowest-bd:#9db4c5;--tone-status-new-fg:#5c5c5c;--tone-status-new-bg:#e2e2e2;--tone-status-new-bd:#bebebe;--tone-status-planning-fg:#5b5145;--tone-status-planning-bg:#e6e0d6;--tone-status-planning-bd:#c4bbab;--tone-status-cut-fg:#65561b;--tone-status-cut-bg:#eddcaf;--tone-status-cut-bd:#c8b57f;--tone-status-fill-fg:#006262;--tone-status-fill-bg:#a8e9e6;--tone-status-fill-bd:#6ec4c3;--tone-status-bend-fg:#644d80;--tone-status-bend-bg:#e9d5fa;--tone-status-bend-bd:#c5addb;--tone-status-weld-fg:#7f4a27;--tone-status-weld-bg:#ffd4ba;--tone-status-weld-bd:#e1aa89;--tone-status-socket-fg:#834164;--tone-status-socket-bg:#fed0e4;--tone-status-socket-bd:#e2a4c1;--tone-status-pack-fg:#435f27;--tone-status-pack-bg:#d1e3b8;--tone-status-pack-bd:#a7be89;--tone-status-turn-fg:#025f77;--tone-status-turn-bg:#afe5fb;--tone-status-turn-bd:#76c0dc;--tone-status-assembly-fg:#8620b8;--tone-status-assembly-bg:#efd4fa;--tone-status-assembly-bd:#d3a5e9;--tone-status-hp-pack-fg:#ab0b53;--tone-status-hp-pack-bg:#fcd1e5;--tone-status-hp-pack-bd:#ef9ec3;--tone-status-done-fg:#096445;--tone-status-done-bg:#b7e8cd;--tone-status-done-bd:#84c3a3;--tone-status-cancelled-fg:#8a4043;--tone-status-cancelled-bg:#ffd2cf;--tone-status-cancelled-bd:#eba4a2;--radius:2px;--text-xs:.6875rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:.9375rem;--text-lg:1.0625rem;--text-title:2.5rem;--rail-w:4.625rem;--rail-w-open:13.5rem;--brand-icon-size:1.85rem;--page-pad:2rem;--control-h:2.375rem;--badge-w:7.5rem}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink-2);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--font-display);color:var(--ink);font-weight:700;line-height:1.2}a{color:var(--ink);text-underline-offset:2px}a:hover{color:var(--accent-dark)}svg{flex:none;display:block}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}input,select,textarea,button{font:inherit;color:inherit}input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea{width:100%;min-height:var(--control-h);background:var(--surface);color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--radius);padding:.45rem .6rem}textarea{resize:vertical;min-height:4rem}input::placeholder,textarea::placeholder{color:var(--ink-muted)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--ink-muted)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-alt);color:var(--ink-muted)}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%237c8683' stroke-width='1.5'%3E%3Cpath d='M2 4.5 6 8.5 10 4.5'/%3E%3C/svg%3E");background-position:right .6rem center;background-repeat:no-repeat;padding-right:1.9rem}input[type=checkbox],input[type=radio]{width:1rem;height:1rem;accent-color:var(--ink);margin:0}input[type=file]{width:100%;font-size:var(--text-sm);color:var(--ink-2)}input[type=file]::file-selector-button{font:inherit;background:var(--surface-alt);color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;margin-right:.6rem;padding:.3rem .7rem;font-weight:500}input[type=file]::file-selector-button:hover{border-color:var(--ink-muted)}input[type=date]{min-width:0}.form{flex-direction:column;gap:.85rem;display:flex}.form label{font-size:var(--text-sm);color:var(--ink);flex-direction:column;gap:.3rem;font-weight:600;display:flex}.form label.checkbox-label{flex-direction:row;align-items:center;gap:.5rem;font-weight:500}.form small{color:var(--ink-muted);font-weight:400}.form p{font-size:var(--text-sm);color:var(--ink-2)}.form-static{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-sm);margin:0;padding:.6rem .7rem}.field{flex-direction:column;gap:.3rem;display:flex}.field-label{font-size:var(--text-sm);color:var(--ink);font-weight:600}.price-row{align-items:stretch;gap:.5rem;display:flex}.price-row input{flex:1;min-width:0}.currency-toggle{background:var(--surface-alt);border:1px solid var(--border-strong);border-radius:var(--radius);flex:none;padding:2px;display:flex}.currency-option{border-radius:calc(var(--radius) - 1px);color:var(--ink-muted);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;padding:0 .7rem;font-weight:600;line-height:1}.currency-option:hover{color:var(--ink)}.currency-option[aria-pressed=true]{background:var(--surface);border-color:var(--border-strong);color:var(--ink)}.currency-toggle.is-invalid{background:var(--tone-danger-bg);border-color:var(--tone-danger-fg)}.currency-toggle.is-invalid .currency-option{color:var(--tone-danger-fg)}.division-picker{border:1px solid var(--border-strong);border-radius:var(--radius);flex-direction:column;gap:.4rem;margin:0;padding:.7rem .8rem;display:flex}.division-picker legend{font-size:var(--text-sm);color:var(--ink);padding:0 .3rem;font-weight:600}.error{border-left:2px solid var(--tone-danger-bd);color:var(--tone-danger-fg);font-size:var(--text-sm);white-space:pre-line;margin:0;padding-left:.6rem}.form .error{margin-top:-.35rem}.field-hint{color:var(--ink-muted);font-size:var(--text-sm);margin-top:.3rem;font-weight:400;line-height:1.45;display:block}.app-shell{min-height:100vh;display:flex}.rail{--rail-content-w:calc(var(--rail-w-open) - 1.25rem);z-index:5;width:var(--rail-w);background:var(--surface-alt);border-right:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:1.25rem;height:100vh;padding:1.25rem .625rem;transition:width .2s cubic-bezier(.2,0,0,1),box-shadow .2s;display:flex;position:fixed;top:0;left:0;overflow:hidden}.rail:is(:hover,:focus-within){width:var(--rail-w-open);box-shadow:6px 0 16px #1e2b2914}.rail-brand{width:var(--rail-content-w);justify-content:center;align-items:center;min-height:2.25rem;display:flex;position:relative}.rail-brand-icon{opacity:1;transition:opacity .12s;position:absolute;left:.75rem}.rail .rail-brand-full{opacity:0;transition:opacity .14s}.rail:is(:hover,:focus-within) .rail-brand-icon{opacity:0}.rail:is(:hover,:focus-within) .rail .rail-brand-full,.rail:is(:hover,:focus-within) .rail-brand-full{opacity:1;transition-delay:60ms}.rail-nav{width:var(--rail-content-w);flex-direction:column;gap:.4rem;margin-block:auto;display:flex}.rail-btn{width:100%;height:2.75rem;color:var(--ink-muted);cursor:pointer;background:0 0;border:none;justify-content:flex-start;align-items:center;gap:.65rem;padding:0 1rem;display:flex;position:relative}.rail-btn:before{content:"";border-radius:var(--radius);border:1px solid #0000;width:2.75rem;transition:width .2s cubic-bezier(.2,0,0,1);position:absolute;top:0;bottom:0;left:.3125rem}.rail:is(:hover,:focus-within) .rail-btn:before{width:calc(100% - .3125rem)}.rail-btn svg,.rail-label{position:relative}.rail-btn:hover{color:var(--ink)}.rail-btn:hover:before{background:var(--surface)}.rail-btn[aria-current=page]{color:var(--accent)}.rail-btn[aria-current=page]:before{background:var(--surface);border-color:var(--accent)}.rail-label{font-size:var(--text-sm);white-space:nowrap;opacity:0;font-weight:600;transition:opacity .12s}.rail:is(:hover,:focus-within) .rail-label{opacity:1;transition-delay:60ms}.rail-user{width:var(--rail-content-w);color:var(--ink);align-items:center;gap:.6rem;padding-left:.4375rem;display:flex}@media (prefers-reduced-motion:reduce){.rail,.rail-btn:before,.rail-label,.rail-brand-icon,.rail .rail-brand-full{transition:none}}.app-main{margin-left:var(--rail-w);flex-direction:column;flex:1;min-width:0;display:flex}.app-header{padding:1.75rem var(--page-pad) 1.25rem;justify-content:space-between;align-items:flex-start;gap:2rem;display:flex}.eyebrow{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);font-weight:600}.app-title-row{align-items:center;gap:.9rem;display:flex}.app-title{font-size:var(--text-title);letter-spacing:-.02em;margin-top:.4rem}.back-btn{color:var(--ink-2);margin-top:.4rem}.back-btn:hover:not(:disabled){color:var(--ink)}.header-actions{align-items:center;gap:.75rem;padding-top:.35rem;display:flex}.user-block{text-align:right;line-height:1.25}.user-block-btn{appearance:none;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.user-block-btn:hover .user-name{text-decoration:underline}.user-name{color:var(--ink);font-weight:700;font-size:var(--text-md)}.user-role{font-size:var(--text-sm);color:var(--ink-muted)}.page{padding:0 var(--page-pad) 2.5rem;flex-direction:column;gap:1rem;min-width:0;display:flex}.toolbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.8rem;display:flex}.toolbar select{width:auto;min-width:9.5rem}.toolbar-end{align-items:center;gap:.6rem;margin-left:auto;display:flex}.toolbar-meta{font-size:var(--text-sm);color:var(--ink-muted);white-space:nowrap}.search{flex:12rem;align-items:center;min-width:10rem;display:flex;position:relative}.search-icon{color:var(--ink-muted);pointer-events:none;position:absolute;left:.65rem}.toolbar .search input[type=search]{padding-left:2.2rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.card-head{justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.05rem 1.1rem;display:flex}.card-title{font-size:var(--text-lg)}.card-sub{font-size:var(--text-sm);color:var(--ink-muted);margin-top:.2rem}.card-meta{font-size:var(--text-sm);color:var(--ink-2);white-space:nowrap;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem 1.1rem;font-weight:600;display:flex}.card-head-end{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.35rem 1.1rem;display:flex}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-base)}.data-table th{background:var(--surface-alt);border-top:1px solid var(--border);border-bottom:1px solid var(--border);color:var(--ink-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;text-align:left;white-space:nowrap;padding:.6rem .7rem;font-weight:600}.data-table th.th-sortable{padding:0}.th-sort{width:100%;font:inherit;color:inherit;text-align:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:.35rem;padding:.6rem .7rem;display:flex}.th-sort:hover{background:var(--row-hover);color:var(--ink)}.th-sort-icon{opacity:0;flex:none;transition:opacity .12s}.th-sort:hover .th-sort-icon,.th-sort:focus-visible .th-sort-icon{opacity:.55}.data-table th[aria-sort=ascending] .th-sort,.data-table th[aria-sort=descending] .th-sort{color:var(--ink)}.data-table th[aria-sort=ascending] .th-sort-icon,.data-table th[aria-sort=descending] .th-sort-icon{opacity:1}.data-table td{border-bottom:1px solid var(--border);vertical-align:middle;color:var(--ink-2);padding:.85rem .7rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--row-hover)}.data-table tbody tr.row-clickable{cursor:pointer}.table-orders td:first-child,.table-orders th:first-child .th-sort{padding-right:1.25rem}.cell-strong{color:var(--ink);font-weight:600}.cell-sub{font-size:var(--text-sm);color:var(--ink-muted);margin-top:.1rem}.cell-muted{color:var(--ink-muted)}.nowrap{white-space:nowrap}.cell-code{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.03em}.num{white-space:nowrap;font-variant-numeric:tabular-nums}.cell-ref{color:var(--ink);letter-spacing:.01em;white-space:nowrap;font-weight:700}.cell-with-avatar{align-items:center;gap:.6rem;display:flex}.empty{text-align:center;color:var(--ink-muted);padding:2.5rem 1rem}.drawing-file-cell{white-space:nowrap;align-items:center;gap:.35rem;display:flex}.detail-table{border-collapse:collapse;width:100%;font-size:var(--text-base)}.detail-table th{border-bottom:1px solid var(--border);width:40%;color:var(--ink-muted);text-align:left;vertical-align:top;padding:.5rem .6rem .5rem 0;font-weight:600}.detail-table td{border-bottom:1px solid var(--border);color:var(--ink);vertical-align:top;padding:.5rem 0}.detail-table tr:last-child th,.detail-table tr:last-child td{border-bottom:none}.detail-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.1rem;padding-top:1.1rem;display:flex}.detail-actions-end{margin-left:auto}.badge{border-radius:var(--radius);font-size:var(--text-sm);white-space:nowrap;border:1px solid #0000;align-items:center;gap:.4rem;padding:.22rem .5rem;font-weight:600;line-height:1.3;display:inline-flex}.badge[data-tone=danger]{--t-fg:var(--tone-danger-fg);--t-bg:var(--tone-danger-bg);--t-bd:var(--tone-danger-bd)}.badge[data-tone=warning]{--t-fg:var(--tone-warning-fg);--t-bg:var(--tone-warning-bg);--t-bd:var(--tone-warning-bd)}.badge[data-tone=success]{--t-fg:var(--tone-success-fg);--t-bg:var(--tone-success-bg);--t-bd:var(--tone-success-bd)}.badge[data-tone=info]{--t-fg:var(--tone-info-fg);--t-bg:var(--tone-info-bg);--t-bd:var(--tone-info-bd)}.badge[data-tone=neutral]{--t-fg:var(--tone-neutral-fg);--t-bg:var(--tone-neutral-bg);--t-bd:var(--tone-neutral-bd)}.badge[data-tone=priority-urgent]{--t-fg:var(--tone-priority-urgent-fg);--t-bg:var(--tone-priority-urgent-bg);--t-bd:var(--tone-priority-urgent-bd)}.badge[data-tone=priority-high]{--t-fg:var(--tone-priority-high-fg);--t-bg:var(--tone-priority-high-bg);--t-bd:var(--tone-priority-high-bd)}.badge[data-tone=priority-normal]{--t-fg:var(--tone-priority-normal-fg);--t-bg:var(--tone-priority-normal-bg);--t-bd:var(--tone-priority-normal-bd)}.badge[data-tone=priority-low]{--t-fg:var(--tone-priority-low-fg);--t-bg:var(--tone-priority-low-bg);--t-bd:var(--tone-priority-low-bd)}.badge[data-tone=priority-lowest]{--t-fg:var(--tone-priority-lowest-fg);--t-bg:var(--tone-priority-lowest-bg);--t-bd:var(--tone-priority-lowest-bd)}.badge[data-tone=status-new]{--t-fg:var(--tone-status-new-fg);--t-bg:var(--tone-status-new-bg);--t-bd:var(--tone-status-new-bd)}.badge[data-tone=status-planning]{--t-fg:var(--tone-status-planning-fg);--t-bg:var(--tone-status-planning-bg);--t-bd:var(--tone-status-planning-bd)}.badge[data-tone=status-cut]{--t-fg:var(--tone-status-cut-fg);--t-bg:var(--tone-status-cut-bg);--t-bd:var(--tone-status-cut-bd)}.badge[data-tone=status-fill]{--t-fg:var(--tone-status-fill-fg);--t-bg:var(--tone-status-fill-bg);--t-bd:var(--tone-status-fill-bd)}.badge[data-tone=status-bend]{--t-fg:var(--tone-status-bend-fg);--t-bg:var(--tone-status-bend-bg);--t-bd:var(--tone-status-bend-bd)}.badge[data-tone=status-weld]{--t-fg:var(--tone-status-weld-fg);--t-bg:var(--tone-status-weld-bg);--t-bd:var(--tone-status-weld-bd)}.badge[data-tone=status-socket]{--t-fg:var(--tone-status-socket-fg);--t-bg:var(--tone-status-socket-bg);--t-bd:var(--tone-status-socket-bd)}.badge[data-tone=status-pack]{--t-fg:var(--tone-status-pack-fg);--t-bg:var(--tone-status-pack-bg);--t-bd:var(--tone-status-pack-bd)}.badge[data-tone=status-turn]{--t-fg:var(--tone-status-turn-fg);--t-bg:var(--tone-status-turn-bg);--t-bd:var(--tone-status-turn-bd)}.badge[data-tone=status-assembly]{--t-fg:var(--tone-status-assembly-fg);--t-bg:var(--tone-status-assembly-bg);--t-bd:var(--tone-status-assembly-bd)}.badge[data-tone=status-hp-pack]{--t-fg:var(--tone-status-hp-pack-fg);--t-bg:var(--tone-status-hp-pack-bg);--t-bd:var(--tone-status-hp-pack-bd)}.badge[data-tone=status-done]{--t-fg:var(--tone-status-done-fg);--t-bg:var(--tone-status-done-bg);--t-bd:var(--tone-status-done-bd)}.badge[data-tone=status-cancelled]{--t-fg:var(--tone-status-cancelled-fg);--t-bg:var(--tone-status-cancelled-bg);--t-bd:var(--tone-status-cancelled-bd)}.badge-outline{background:var(--surface);border-color:var(--t-bd);color:var(--t-fg)}.badge-solid{background:var(--t-bg);border-color:var(--t-bd);color:var(--t-fg)}.badge-plain{color:var(--t-fg);font-size:var(--text-base);background:0 0;border:none;gap:.45rem;padding:0}.badge-plain .badge-dot{width:.75rem;height:.75rem}.badge-block{min-width:var(--badge-w);justify-content:center;display:inline-flex}.badge-count{font-variant-numeric:tabular-nums}.badge-dot{background:currentColor;width:.5rem;height:.5rem}.status-cell{align-items:center;gap:.5rem;display:inline-flex}.stage-progress{font-size:var(--text-xs);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.brand-icon{width:var(--brand-icon-size);height:var(--brand-icon-size);object-fit:contain;transform:translate(-10.7%)}.brand-logo{width:100%;height:auto;display:block}.rail .brand-logo{width:calc(var(--brand-icon-size) * 221 / 300 * 1560 / 252)}.login-card .brand-logo{width:11.5rem}.avatar{background:var(--tone-neutral-bg);border:1px solid var(--border);border-radius:var(--radius);width:2rem;height:2rem;color:var(--ink);font-size:var(--text-xs);flex:none;place-items:center;font-weight:700;display:grid}.avatar-dark{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.avatar-lg{width:2.5rem;height:2.5rem;font-size:var(--text-sm)}.btn{min-height:var(--control-h);background:var(--surface);color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--radius);font-size:var(--text-base);white-space:nowrap;cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.4rem .8rem;font-weight:600;line-height:1.2;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--ink-muted)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.btn-primary:hover:not(:disabled){background:var(--ink-hover);border-color:var(--ink-hover)}.btn-ghost{min-height:2rem;color:var(--ink-2);font-size:var(--text-sm);background:0 0;border-color:#0000;padding:.25rem .5rem;font-weight:500}.btn-ghost:hover:not(:disabled){background:var(--tone-neutral-bg);color:var(--ink);border-color:#0000}.card-refresh{border-color:var(--border-strong)}.card-refresh:hover:not(:disabled){border-color:var(--ink-muted)}.btn-production{background:var(--production);border-color:var(--production);color:var(--on-dark)}.btn-production:hover:not(:disabled){background:var(--production-dark);border-color:var(--production-dark)}.btn-production-cell{min-width:var(--badge-w);border:1px solid var(--production);border-radius:var(--radius);min-height:0;font-size:var(--text-sm);white-space:nowrap;cursor:pointer;justify-content:center;align-items:center;gap:.35rem;padding:.3rem .6rem;font-weight:700;line-height:1.3;display:inline-flex}.btn-production-cell:hover{background:var(--production-dark);border-color:var(--production-dark)}.btn-danger{color:var(--tone-danger-fg)}.btn-danger:hover:not(:disabled){background:var(--tone-danger-bg);color:var(--tone-danger-fg)}.btn-icon{width:var(--control-h);padding:0}.btn-link{min-height:auto;color:var(--ink-muted);font-size:var(--text-sm);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:.25rem .35rem;font-weight:500;text-decoration:underline}.btn-link:hover{color:var(--ink)}.btn-sm{min-height:2rem;font-size:var(--text-sm);padding:.25rem .55rem}.link-inline{color:var(--ink-2);font-size:var(--text-sm);text-align:left;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.link-inline:hover{color:var(--accent-dark)}.modal-overlay{z-index:25;background:var(--overlay);justify-content:center;align-items:flex-start;padding:3rem 1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-width:22rem;max-width:34rem;max-height:calc(100vh - 6rem);overflow-y:auto}.modal-header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex;position:sticky;top:0}.modal-title{font-family:var(--font-display);font-size:var(--text-md);color:var(--ink);font-weight:700}.modal-body{padding:1.1rem}.login-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:22rem;padding:1.75rem}.login-card-wide{max-width:30rem}.setup-key{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-alt);margin-bottom:1.1rem;padding:.8rem}.setup-key code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--text-md);letter-spacing:.06em;word-break:break-all;margin-top:.4rem;display:block}.backup-codes{border:1px solid var(--tone-warning-bd);border-radius:var(--radius);margin-bottom:1.2rem;padding:.8rem}.backup-codes ul{letter-spacing:.08em;grid-template-columns:repeat(2,1fr);gap:.3rem 1rem;margin:.6rem 0 0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;list-style:none;display:grid}.login-actions{justify-content:flex-end;margin-top:1.1rem;display:flex}.login-title{margin-bottom:.1rem}.login-sub{font-size:var(--text-sm);color:var(--ink-muted);margin:.25rem 0 1.4rem}.loading{padding:2rem var(--page-pad);color:var(--ink-muted)}.bell-wrap{position:relative}.bell{position:relative;overflow:visible}.bell-count{background:var(--accent);min-width:1.05rem;height:1.05rem;color:var(--on-dark);border-radius:var(--radius);font-size:var(--text-xs);justify-content:center;align-items:center;padding:0 .2rem;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-.3rem;right:-.3rem}.notification-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.notification-item{width:100%;color:inherit;border:none;border-bottom:1px solid var(--border);font:inherit;text-align:left;cursor:pointer;background:0 0;border-left:3px solid #0000;padding:.9rem 1.1rem;display:block}.notification-list li:last-child .notification-item{border-bottom:none}.notification-item:hover{background:var(--row-hover)}.notification-item[data-unread=true]{border-left-color:var(--accent);background:var(--surface-alt)}.notification-item[data-unread=true]:hover{background:var(--row-hover)}.notification-head{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.notification-order{color:var(--accent);letter-spacing:.04em;font-weight:700}.notification-time{font-size:var(--text-sm);color:var(--ink-muted);white-space:nowrap;margin-left:auto}.notification-message{color:var(--ink);font-size:var(--text-base);white-space:pre-line;margin:.5rem 0 0;line-height:1.45;display:block}.notification-meta{font-size:var(--text-sm);color:var(--ink-muted);flex-wrap:wrap;gap:.2rem .65rem;margin-top:.45rem;display:flex}.notification-meta span+span:before{content:"·";margin-right:.65rem}.notification-message-cell{white-space:pre-line}.detail-section{font-size:var(--text-md);color:var(--ink-2);margin:1.4rem 0 .6rem}.notification-menu-backdrop{z-index:19;position:fixed;inset:0}.notification-menu{z-index:20;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);flex-direction:column;width:22rem;max-height:70vh;display:flex;position:absolute;top:calc(100% + .5rem);right:0}.notification-menu-head{border-bottom:1px solid var(--border);align-items:center;gap:.5rem;padding:.55rem .6rem .55rem .85rem;display:flex}.notification-menu-title{color:var(--ink);font-weight:700}.notification-menu-count{font-size:var(--text-sm);color:var(--accent);font-weight:600}.notification-menu-all{margin-left:auto}.notification-menu-empty{text-align:center;color:var(--ink-muted);padding:1.5rem .85rem}.notification-menu-list{margin:0;padding:0;list-style:none;overflow-y:auto}.notification-menu-item{width:100%;color:inherit;border:none;border-bottom:1px solid var(--border);font:inherit;text-align:left;cursor:pointer;background:0 0;border-left:3px solid #0000;padding:.6rem .85rem;display:block}.notification-menu-list li:last-child .notification-menu-item{border-bottom:none}.notification-menu-item:hover{background:var(--row-hover)}.notification-menu-item[data-unread=true]{border-left-color:var(--accent);background:var(--surface-alt)}.notification-menu-item[data-unread=true]:hover{background:var(--row-hover)}.notification-menu-item-head{align-items:center;gap:.5rem;display:flex}.notification-menu-excerpt{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--text-sm);color:var(--ink-2);margin-top:.3rem;display:block;overflow:hidden}.notification-menu-meta{font-size:var(--text-xs);color:var(--ink-muted);flex-wrap:wrap;gap:0 .5rem;margin-top:.3rem;display:flex}.notification-menu-meta span+span:before{content:"·";margin-right:.5rem}@keyframes icon-spin{to{transform:rotate(360deg)}}.icon-spin{transform-origin:50%;animation:.9s linear infinite icon-spin}@media (prefers-reduced-motion:reduce){.icon-spin{animation:none}}.history-list{margin:0;padding:0;list-style:none}.history-item{border-left:1px solid var(--border-strong);padding:0 0 1.1rem 1.1rem;position:relative}.history-item:last-child{border-left-color:#0000;padding-bottom:0}.history-item:before{content:"";background:var(--ink);width:7px;height:7px;position:absolute;top:.35rem;left:-4px}.history-title{color:var(--ink);font-weight:600}.history-quantities{color:var(--ink-2);margin-top:.15rem}.history-target,.history-meta{font-size:var(--text-sm);color:var(--ink-muted);margin-top:.15rem}.history-note{border-left:2px solid var(--border);color:var(--ink-2);font-size:var(--text-sm);white-space:pre-line;margin-top:.35rem;padding:.3rem 0 .3rem .6rem}.login-note{border-left:2px solid var(--border);font-size:var(--text-sm);color:var(--ink-muted);margin:-.9rem 0 1.4rem;padding-left:.6rem}.drawing-viewer-overlay{--viewer-bg:#1c1c1c;--viewer-bar:#2b2b2b;--viewer-ink:#fff;z-index:20;background:var(--viewer-bg);overscroll-behavior:contain;flex-direction:column;display:flex;position:fixed;inset:0}.drawing-viewer-bar{background:var(--viewer-bar);color:var(--viewer-ink);flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.5rem .75rem;display:flex}.drawing-viewer-title{margin-right:auto;font-weight:600}.drawing-viewer-group{align-items:center;gap:.4rem;display:flex}.drawing-viewer-bar button{min-width:2.75rem;min-height:2.75rem;color:var(--viewer-ink);border-radius:var(--radius);cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #ffffff59;padding:0 .9rem;font-size:1rem;font-weight:600}.drawing-viewer-bar button:hover:not(:disabled){background:#ffffff1f}.drawing-viewer-bar button:disabled{opacity:.45;cursor:not-allowed}.drawing-viewer-close{border-color:#ffffff8c!important}.drawing-viewer-pageno{text-align:center;font-variant-numeric:tabular-nums;min-width:4rem}.drawing-viewer-stage{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.drawing-viewer-pan{cursor:grab;width:100%!important;height:100%!important}.drawing-viewer-content{line-height:0}.drawing-viewer-message{color:var(--viewer-ink);text-align:center;padding:2rem 1rem}.drawing-viewer-page-box{background:#fff;position:relative}.drawing-viewer-base{width:100%;height:100%;position:absolute;inset:0}.drawing-viewer-detail{position:absolute;top:0;left:0}.drawing-viewer-page-loading{color:#333;text-align:center;justify-content:center;align-items:center;margin:0;font-size:1rem;line-height:1.4;display:flex;position:absolute;inset:0}.drawing-viewer-refining{z-index:1;border-radius:var(--radius);background:var(--viewer-bar);color:var(--viewer-ink);opacity:.9;white-space:nowrap;pointer-events:none;padding:.25rem .6rem;font-size:.85rem;position:absolute;top:.5rem;right:.75rem}
