:root{--bg:#f6f5f2;--surface:#fff;--ink:#1d2329;--muted:#5d6670;--line:#dcd9d2;--accent:#c2410c;--accent-soft:#fde7da;--marker:#c2410c8c;--warn:#9a5b00;--note-bg:#fff6e0;--note-line:#ecd39a;--drawing-bg:#fff;--header-h:44px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#15181b;--surface:#1d2125;--ink:#e6e3dd;--muted:#9aa3ab;--line:#2f353b;--accent:#f08a4b;--accent-soft:#3b2619;--marker:#f08a4bb3;--warn:#e0b25c;--note-bg:#2a2416;--note-line:#4a3f22;--drawing-bg:#f4f3ef;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:inherit}code{font-size:.9em}.muted{color:var(--muted)}.warn{color:var(--warn)}.site-header{height:var(--header-h);background:var(--ink);color:var(--bg);align-items:center;padding:0 16px;display:flex}.brand{letter-spacing:.08em;font-weight:700;text-decoration:none}.brand span{opacity:.8;font-weight:400}.page{max-width:960px;margin:0 auto;padding:20px 16px 48px}.page h1{margin:0 0 4px;font-size:1.4rem}.plate-group h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:24px 0 6px;font-size:.85rem}.plate-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.plate-link{border-bottom:1px solid var(--line);grid-template-columns:4.5rem 1fr auto;align-items:baseline;gap:12px;padding:9px 4px;text-decoration:none;display:grid}.plate-link:hover,.plate-link:focus-visible{background:var(--surface)}.plate-code{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.plate-meta{color:var(--muted);white-space:nowrap;font-size:.85rem}@media (max-width:560px){.plate-link{grid-template-columns:3.8rem 1fr}.plate-meta{grid-column:2}}.plate-page{flex-direction:column;display:flex}.plate-nav{border-bottom:1px solid var(--line);background:var(--surface);align-items:center;gap:12px;padding:8px 16px;display:flex}.plate-nav h1{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:1.05rem;overflow:hidden}.crumb,.plate-nav-links a{color:var(--muted);white-space:nowrap;font-size:.9rem;text-decoration:none}.crumb:hover,.plate-nav-links a:hover{color:var(--ink)}.plate-nav-links{gap:12px;display:flex}.unverified-note{background:var(--note-bg);border-bottom:1px solid var(--note-line);margin:0;padding:6px 16px;font-size:.85rem}.plate-viewer{flex-direction:column;display:flex}.drawing-panel{background:var(--drawing-bg);border-bottom:1px solid var(--line);position:relative}.drawing-stage{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;height:58dvh;position:relative;overflow:hidden}.drawing-stage:active{cursor:grabbing}.drawing-content{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.drawing-content img{pointer-events:none;display:block}.marker{--size:max(30px, calc(14px * var(--inv)));width:var(--size);height:var(--size);border:calc(1.5px * var(--inv)) solid var(--marker);cursor:pointer;background:0 0;border-radius:50%;padding:0;position:absolute;transform:translate(-50%,-50%)}.marker:after{content:"";width:max(100%, calc(34px * var(--inv)));height:max(100%, calc(34px * var(--inv)));border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.marker:hover{background:#c2410c1f}.marker:focus-visible{outline:calc(2px * var(--inv)) solid var(--ink);outline-offset:calc(2px * var(--inv))}.marker.selected{border:calc(3px * var(--inv)) solid var(--accent);box-shadow:0 0 0 calc(3px * var(--inv)) #ffffffd9;z-index:1;background:#c2410c33}.drawing-controls{gap:4px;display:flex;position:absolute;bottom:10px;right:10px}.drawing-controls button{min-width:40px;height:40px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:0 10px;font-size:1rem;box-shadow:0 1px 2px #00000014}.parts-panel{background:var(--surface)}.parts-summary{color:var(--muted);border-bottom:1px solid var(--line);margin:0;padding:8px 12px;font-size:.85rem}.parts-table{border-collapse:collapse;width:100%;font-size:.9rem}.parts-table th{z-index:1;text-align:left;color:var(--muted);background:var(--surface);border-bottom:1px solid var(--line);padding:6px 8px;font-size:.8rem;font-weight:600;position:sticky;top:0}.parts-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}.parts-table tbody tr{cursor:pointer}.parts-table tbody tr:hover{background:var(--bg)}.parts-table tbody tr:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.parts-table tbody tr.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.col-item{text-align:right;font-variant-numeric:tabular-nums;width:3rem}.col-qty{text-align:center;font-variant-numeric:tabular-nums;width:3rem}.part-number{white-space:nowrap;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.85rem}.item-number{font-weight:600}.item-number.unmarked{color:var(--warn);text-underline-offset:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.row-notes{color:var(--muted);font-size:.82rem;display:block}@media (min-width:900px){.plate-page{height:calc(100dvh - var(--header-h));overflow:hidden}.plate-viewer{flex-direction:row;flex:1;min-height:0}.drawing-panel{border-bottom:0;border-right:1px solid var(--line);flex:1.25}.drawing-stage{height:100%}.parts-panel{flex:1;overflow:auto}.parts-summary{z-index:2;background:var(--surface);position:sticky;top:0}.parts-table th{top:34px}}@media (max-width:560px){.parts-table{font-size:.85rem}.parts-table td,.parts-table th{padding:6px 5px}.part-number{white-space:normal;word-break:break-all}}.row-no-marker{color:var(--warn);font-size:.82rem;display:block}.selected-row-bar{z-index:10;width:100%;padding:10px 12px calc(10px + env(safe-area-inset-bottom));font:inherit;text-align:left;color:var(--ink);background:var(--accent-soft);border:0;border-top:2px solid var(--accent);cursor:pointer;align-items:center;gap:10px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 14px #0000001f}.bar-item{text-align:right;font-variant-numeric:tabular-nums;min-width:2ch;font-size:1.1rem;font-weight:700}.bar-body{flex-direction:column;flex:1;min-width:0;display:flex}.bar-line{justify-content:space-between;gap:10px;display:flex}.bar-qty{color:var(--muted);white-space:nowrap;font-size:.82rem}.bar-description{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.bar-more{color:var(--muted)}.bar-back{color:var(--accent);white-space:nowrap;font-size:.8rem;font-weight:600}.plate-viewer.with-bar{padding-bottom:72px}@media (min-width:900px){.selected-row-bar{display:none}.plate-viewer.with-bar{padding-bottom:0}}.site-header{gap:16px}.header-search{flex:0 280px;margin-left:auto}.search-form{gap:6px;display:flex}.search-form input{min-width:0;font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;flex:1;padding:6px 10px}.header-search input{border-color:#0000;padding:4px 10px}.search-form button{font:inherit;border:1px solid var(--ink);background:var(--ink);color:var(--bg);cursor:pointer;border-radius:6px;padding:6px 14px}.search-form-large{margin:12px 0 4px}.search-form-large input{padding:9px 12px;font-size:1rem}.search-hint{margin:0 0 16px;font-size:.85rem}.search-section h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:20px 0 6px;font-size:.85rem}.search-hits{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.search-hit{border-bottom:1px solid var(--line);padding:10px 4px}.hit-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.hit-match{color:var(--muted);white-space:nowrap;font-size:.75rem}.hit-occurrences{margin:4px 0 0;padding:0;font-size:.88rem;list-style:none}.hit-occurrences li{padding:2px 0}.hit-occurrences a{text-decoration:none}.hit-occurrences a:hover{text-decoration:underline}.login-page{max-width:380px}.login-form{flex-direction:column;gap:14px;margin-top:20px;display:flex}.login-form label{flex-direction:column;gap:4px;font-size:.9rem;font-weight:600;display:flex}.login-form input{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:9px 11px;font-weight:400}.login-form button{font:inherit;background:var(--ink);color:var(--bg);cursor:pointer;border:0;border-radius:6px;padding:10px;font-weight:600}.login-form button:disabled{opacity:.6}.login-error{color:var(--warn);margin:0;font-size:.9rem}.users-table td,.users-table th{white-space:nowrap}@media (max-width:560px){.header-search{flex-basis:140px}}.admin-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:16px 0 24px;padding:14px 16px}.admin-card h2{margin:0 0 10px;font-size:1rem}.add-user-form{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.add-user-form label{flex-direction:column;gap:3px;font-size:.85rem;font-weight:600;display:flex}.add-user-form input,.add-user-form select{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:7px 9px;font-weight:400}.add-user-form button,.small-button{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:6px;padding:7px 12px;font-size:.85rem;text-decoration:none;display:inline-block}.add-user-form button{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:600}.small-button:hover{border-color:var(--ink)}.admin-error{color:var(--warn);margin:8px 0 0;font-size:.9rem}.admin-ok{margin:8px 0 0;font-size:.9rem}.admin-ok p{margin:0 0 6px}.new-password{background:var(--note-bg);border:1px solid var(--note-line);border-radius:6px;padding:10px 12px}.new-password code{letter-spacing:.04em;-webkit-user-select:all;user-select:all;margin-right:10px;font-size:1.15rem}.new-password button{font:inherit;cursor:pointer;padding:4px 10px;font-size:.85rem}.user-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.user-row{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:10px 20px;padding:12px 4px;display:flex}.user-row.disabled .user-info{opacity:.6}.user-info{flex-direction:column;gap:2px;min-width:0;display:flex}.user-email{color:var(--muted);overflow-wrap:anywhere;font-size:.88rem}.user-meta{flex-wrap:wrap;align-items:center;gap:8px;font-size:.8rem;display:flex}.role-badge{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:1px 7px}.role-badge.admin{border-color:var(--accent);color:var(--accent)}.role-badge.off{border-color:var(--warn);color:var(--warn)}.user-actions{flex-wrap:wrap;align-items:flex-start;gap:6px;display:flex}.row-action{max-width:100%}.account-heading{margin:24px 0 0;font-size:1rem}.account-menu{flex:none;position:relative}.account-badge{color:#f6f5f2;width:32px;height:32px;font:inherit;letter-spacing:.02em;cursor:pointer;background:#3a434c;border:2px solid #ffffff59;border-radius:50%;place-items:center;padding:0;font-size:.8rem;font-weight:700;display:grid}.account-badge.admin{border-color:var(--accent)}.account-badge:hover,.account-badge[aria-expanded=true]{border-color:#fff}.account-badge:focus-visible{outline-offset:2px;outline:2px solid #fff}.account-panel{z-index:50;background:var(--surface);width:min(260px,100vw - 24px);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #0000002e}.account-who{border-bottom:1px solid var(--line);flex-direction:column;gap:2px;padding-bottom:10px;display:flex}.account-who span:not(.role-badge){color:var(--muted);overflow-wrap:anywhere;font-size:.82rem}.account-who .role-badge{align-self:flex-start;margin-top:4px;font-size:.75rem}.account-links{border-bottom:1px solid var(--line);flex-direction:column;padding:6px 0;display:flex}.account-links a{border-radius:6px;padding:8px 6px;text-decoration:none}.account-links a:hover,.account-links a:focus-visible{background:var(--bg)}.account-signout{text-align:left;width:100%;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:6px;margin-top:8px;padding:8px 6px}.account-signout:hover{background:var(--bg)}.profile-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;align-items:center;gap:14px;margin:14px 0 8px;padding:14px;display:flex}.profile-card .account-who{border:0;padding:0}.account-badge.large{cursor:default;flex:none;width:56px;height:56px;font-size:1.2rem}.progress{background:var(--line);border-radius:5px;height:10px;margin:14px 0 6px;overflow:hidden}.progress-bar{background:var(--accent);height:100%}.progress-text{margin:0 0 14px}.start-button{background:var(--ink);color:var(--bg);border-radius:6px;margin:4px 0 18px;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-block}.edit-link{font-weight:600;color:var(--accent)!important}.marker-editor{flex-direction:column;display:flex}.marker-side{background:var(--surface);flex-direction:column;min-height:0;display:flex}.marker-status{color:var(--muted);border-bottom:1px solid var(--line);padding:8px 12px;font-size:.85rem}.marker-current{border-bottom:1px solid var(--line);background:var(--bg);padding:12px}.marker-current-head{align-items:flex-start;gap:10px;display:flex}.marker-current-number{text-align:right;font-variant-numeric:tabular-nums;min-width:2ch;font-size:1.6rem;font-weight:700;line-height:1}.marker-current-head>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.marker-current-desc{font-size:.95rem}.marker-hint{margin:10px 0 8px;font-size:.88rem}.marker-finished{color:#1d4d2c;background:#e6f4ea;border:1px solid #9fd3ae;border-radius:6px;margin:8px 0;padding:8px 10px}.marker-buttons{flex-wrap:wrap;gap:6px;display:flex}.marker-buttons button{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:6px;padding:6px 10px;font-size:.85rem}.marker-buttons button:first-child{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:600}.marker-buttons button:disabled{opacity:.5;cursor:wait}.marker-buttons kbd{font:inherit;opacity:.7;margin-left:4px;font-size:.72rem}.marker-items{margin:0;padding:0;list-style:none;position:relative;overflow:auto}.marker-item{width:100%;font:inherit;text-align:left;color:var(--ink);border:0;border-bottom:1px solid var(--line);cursor:pointer;background:0 0;grid-template-columns:2.6rem 1fr auto;align-items:center;gap:8px;padding:6px 12px;font-size:.88rem;display:grid}.marker-item:hover{background:var(--bg)}.marker-item.current{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.marker-item-number{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.marker-item-desc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.state-chip{white-space:nowrap;border:1px solid var(--line);border-radius:10px;padding:1px 7px;font-size:.72rem}.state-missing{color:var(--warn);border-color:var(--warn)}.state-machine{color:var(--muted)}.state-curated{color:#2b6cb0;border-color:#90b4dc}.state-human{color:#1f7a3d;border-color:#8fcaa2}.marker-editor{--edit-blue:#1d6fe0;--edit-blue-dark:#0b4fb3;--edit-unsaved:#e59400;--edit-unsaved-fill:#f59e0b61;--edit-unsaved-fill-light:#f59e0b1a}.marker-editor .marker{--size:max(30px, calc(18px * var(--inv)));border:calc(2.5px * var(--inv)) solid var(--edit-blue);background:#1d6fe024}.marker-editor .marker.source-machine{border-style:dashed}.marker-editor .marker.source-human{border-color:var(--edit-blue-dark)}.marker-editor .marker:hover{background:#1d6fe047}.marker-editor .marker.selected{border-width:calc(3.5px * var(--inv));box-shadow:0 0 0 calc(3px * var(--inv)) #ffffffe6;z-index:1;background:#1d6fe052}.marker-editor .marker.picked{box-shadow:0 0 0 calc(3px * var(--inv)) #fff, 0 0 0 calc(6px * var(--inv)) var(--edit-blue);z-index:2}.marker-editor .marker.ghost{opacity:.4;box-shadow:none;background:0 0;border-style:dotted}.marker-editor .marker.pending{border:calc(3.5px * var(--inv)) solid var(--edit-unsaved);background:var(--edit-unsaved-fill);box-shadow:0 0 0 calc(3px * var(--inv)) #ffffffe6;z-index:3;cursor:grab;animation:1.2s ease-in-out infinite pending-pulse}.marker-editor .marker.pending:after{width:max(100%, calc(34px * var(--inv)));height:max(100%, calc(34px * var(--inv)))}@keyframes pending-pulse{50%{background:var(--edit-unsaved-fill-light)}}.move-line{pointer-events:none;z-index:2;position:absolute;inset:0;overflow:visible}.move-line line{stroke:var(--edit-unsaved);stroke-width:2.5px;stroke-dasharray:6 5}.marker-editor .drawing-stage{cursor:crosshair}.marker-legend{color:var(--muted);flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;padding:0;font-size:.78rem;list-style:none;display:flex}.marker-legend li{align-items:center;gap:6px;display:flex}.legend-dot{background:#1d6fe024;border:2.5px solid #1d6fe0;border-radius:50%;width:14px;height:14px}.legend-dot.dashed{border-style:dashed}.legend-dot.new{background:#f59e0b61;border-color:#e59400}.state-unsaved{color:#8a5a00;background:#fff3d6;border-color:#e59400;font-weight:600}.legend-dot.ghost{opacity:.4;background:0 0;border-style:dotted}@media (min-width:900px){.marker-editor{flex-direction:row;flex:1;min-height:0}.marker-editor .drawing-panel{border-bottom:0;border-right:1px solid var(--line);flex:1.6}.marker-editor .drawing-stage{height:100%}.marker-side{flex:1;max-width:460px}}.marker-editor .marker:after{width:100%;height:100%}.marker-editor .marker{cursor:move}.mode-tag{background:var(--bg);border:1px solid var(--line);border-radius:10px;margin-left:8px;padding:1px 7px;font-size:.72rem}div.marker-finished{flex-wrap:wrap;align-items:center;gap:10px;display:flex}
