:root{--bg: #ECE8DE;--surface: #F8F6F0;--surface-2: #F1EDE2;--ink: #211E1A;--ink-soft: #6E6659;--ink-faint: #9C9484;--accent: #A2372A;--accent-soft: rgba(162, 55, 42, .1);--accent-ink: #FBF7EE;--line: #DBD5C7;--line-strong: #C7BFAC;--ok: #4B7A5E;--ok-bg: rgba(75, 122, 94, .13);--danger: #A2372A;--status-stock: #4B7A5E;--status-stock-bg: rgba(75, 122, 94, .13);--status-display: #B8863B;--status-display-bg: rgba(184, 134, 59, .15);--status-loan: #3E6E8E;--status-loan-bg: rgba(62, 110, 142, .13);--status-off: #A2372A;--status-off-bg: rgba(162, 55, 42, .13);--rail-bg: #221E19;--rail-ink: #EFE9DB;--rail-ink-soft: #A79C89;--rail-active-bg: rgba(226, 116, 92, .16);--rail-active-ink: #E2745C;--rail-line: rgba(255, 255, 255, .08);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang TC", "Microsoft JhengHei", "Noto Sans TC", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, "Cascadia Mono", monospace;--fs-h1: 24px;--fs-h2: 18px;--fs-h3: 16px;--fs-body: 14px;--fs-small: 12px;--fs-button: 14px}@media (prefers-color-scheme: dark){:root{--bg: #17140F;--surface: #201C16;--surface-2: #262119;--ink: #EDE7D9;--ink-soft: #B3A891;--ink-faint: #7C7461;--accent: #E2745C;--accent-soft: rgba(226, 116, 92, .14);--accent-ink: #1A1310;--line: #332C22;--line-strong: #443A2C;--ok: #7FB08F;--ok-bg: rgba(127, 176, 143, .14);--danger: #E2745C;--status-stock: #7FB08F;--status-stock-bg: rgba(127, 176, 143, .15);--status-display: #D6A85A;--status-display-bg: rgba(214, 168, 90, .16);--status-loan: #6FA2C4;--status-loan-bg: rgba(111, 162, 196, .15);--status-off: #E2745C;--status-off-bg: rgba(226, 116, 92, .15)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--fs-body)}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.boot{display:flex;align-items:center;justify-content:center;height:100%;color:var(--ink-soft)}.btn{font-size:var(--fs-button);font-weight:500;line-height:1;border-radius:6px;padding:10px 18px;border:1px solid transparent;cursor:pointer;transition:filter .12s ease,background .12s ease}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(1.07)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:var(--fs-small);color:var(--ink-soft)}.field>input{font-size:var(--fs-body);padding:10px 12px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}.field>input:focus{border-color:var(--accent);outline:none}.form-error{font-size:var(--fs-small);color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:8px 12px}.form-ok{font-size:var(--fs-small);color:var(--ok);background:var(--ok-bg);border-radius:6px;padding:8px 12px}.form-actions{display:flex;justify-content:flex-end}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:340px;max-width:100%;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:32px 28px;display:flex;flex-direction:column;gap:18px;box-shadow:0 16px 48px #0000001a}.login-brand{text-align:center;margin-bottom:4px}.login-title{font-size:20px;font-weight:700}.login-sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--ink-faint);margin-top:6px}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100%}.rail{background:var(--rail-bg);color:var(--rail-ink);display:flex;flex-direction:column;padding:20px 12px;gap:2px;min-height:100vh}.brand{padding:4px 10px 18px}.brand .name{font-size:16px;font-weight:700}.brand .sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--rail-ink-soft);margin-top:4px}.rail-group-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.09em;color:var(--rail-ink-soft);padding:16px 10px 6px;text-transform:uppercase}.rail-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;font-size:13.5px;color:var(--rail-ink);cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:var(--font);transition:background .12s ease}.rail-item:hover{background:#ffffff0f}.rail-item.active{background:var(--rail-active-bg);color:var(--rail-active-ink);font-weight:600}.rail-item .dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.55;flex:none}.rail-footer{margin-top:auto;padding-top:14px;border-top:1px solid var(--rail-line);display:flex;align-items:center;gap:10px}.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;flex:none}.rail-footer .who{font-size:12.5px;line-height:1.3}.rail-footer .role{font-size:11px;color:var(--rail-ink-soft)}.main{padding:26px clamp(18px,4vw,40px) 70px;min-width:0}.topbar{margin-bottom:22px}.topbar h1{font-size:var(--fs-h1);font-weight:700;margin:0;line-height:1.3}.topbar .sub{font-size:12.5px;color:var(--ink-soft);margin-top:4px}.placeholder-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:24px;max-width:560px}.placeholder-card .welcome{font-size:var(--fs-h2);font-weight:600;margin:0 0 10px}.placeholder-card .muted{color:var(--ink-soft);line-height:1.7;margin:0}.settings-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:24px;display:flex;flex-direction:column;gap:16px}.settings-card.narrow{max-width:380px}.topbar.between{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.muted{color:var(--ink-soft)}.small{font-size:var(--fs-small)}.pad{padding:24px 0}.center{text-align:center}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.link{color:var(--accent);cursor:pointer}.link:hover{text-decoration:underline}.search{font-size:13px;padding:8px 12px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);min-width:190px}.btn-ghost{background:transparent;border-color:var(--line-strong);color:var(--ink)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-sm{padding:6px 12px;font-size:12.5px}.btn-text{background:transparent;border:none;padding:6px 8px}.btn-text:hover:not(:disabled){text-decoration:underline}.btn-text.danger,.danger{color:var(--danger)}.empty-card,.placeholder-card .empty{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:28px;color:var(--ink-soft)}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.tab{font-size:13px;padding:7px 14px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-soft);cursor:pointer}.tab.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);font-weight:600}.status{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}.status .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.status.stock{color:var(--status-stock);background:var(--status-stock-bg)}.status.display{color:var(--status-display);background:var(--status-display-bg)}.status.loan{color:var(--status-loan);background:var(--status-loan-bg)}.status.off{color:var(--status-off);background:var(--status-off-bg)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:box-shadow .15s ease,transform .15s ease}.card:hover{box-shadow:0 8px 22px #00000017;transform:translateY(-2px)}.card .thumb{aspect-ratio:4 / 3;background:linear-gradient(135deg,var(--surface-2),var(--line));position:relative;display:flex;align-items:center;justify-content:center}.card .thumb-char{font-family:var(--font-label, serif);font-size:40px;color:var(--ink-faint);opacity:.5}.card .thumb .status{position:absolute;top:8px;right:8px}.card-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px}.card-body .code{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.card-body h3{font-size:var(--fs-h3);font-weight:600;margin:0}.card-body .meta{font-size:12px;color:var(--ink-soft)}.crumb{font-size:12.5px;color:var(--ink-soft);margin-bottom:14px}.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}.detail-head .code{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint)}.detail-head h1{font-size:var(--fs-h1);font-weight:700;margin:4px 0 8px}.detail-grid{display:grid;grid-template-columns:300px 1fr;gap:30px;align-items:start}.gallery-main{aspect-ratio:4 / 3;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--ink-faint);font-size:13px;text-align:center;padding:12px;overflow:hidden}.gallery-main img{width:100%;height:100%;object-fit:cover;display:block}.gallery-thumbs{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.gallery-thumbs .thumb-img{width:54px;height:54px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden;cursor:pointer}.gallery-thumbs .thumb-img.active{border-color:var(--accent);border-width:2px}.gallery-thumbs .thumb-img img{width:100%;height:100%;object-fit:cover;display:block}.field-section{margin-bottom:26px}.field-section h2{font-size:var(--fs-h2);font-weight:600;margin:0 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line)}.field-list{display:grid;grid-template-columns:110px 1fr;row-gap:12px;column-gap:16px}.field-list .k{font-size:12.5px;color:var(--ink-faint)}.field-list .v{font-size:var(--fs-body)}.notes-text{font-size:var(--fs-body);line-height:1.8;color:var(--ink);margin:0;white-space:pre-wrap}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:620px}thead th{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-strong);font-weight:600}tbody td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-2)}.row-actions{display:flex;gap:4px;justify-content:flex-end;white-space:nowrap}.photo-grid{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:6px}.photo-thumb{position:relative;width:96px;height:96px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--surface-2)}.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.photo-thumb .photo-del{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;border:none;background:#0000008c;color:#fff;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.photo-add{width:96px;height:96px;border-radius:8px;border:1px dashed var(--line-strong);display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;color:var(--ink-soft);cursor:pointer;padding:6px}.photo-add:hover{background:var(--surface-2)}.photo-add input{display:none}.fs-row{display:grid;grid-template-columns:190px 110px 1fr;gap:18px;align-items:center;padding:20px 0;border-top:1px solid var(--line)}.fs-row:last-of-type{border-bottom:1px solid var(--line)}.fs-meta .tag{display:inline-block;font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:3px;padding:2px 7px;margin-bottom:6px}.fs-meta .usage{display:block;font-size:12.5px;color:var(--ink-soft)}.fs-controls{display:flex;flex-direction:column;gap:6px}.fs-controls label{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.fs-controls input{font-family:var(--font-mono);font-size:13px;padding:6px 8px;border-radius:5px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);width:84px}.settings-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.form-panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:24px;display:flex;flex-direction:column;gap:8px;max-width:860px}.form-section{margin-bottom:14px}.form-section h2{font-size:var(--fs-h2);font-weight:600;margin:0 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 18px}.form-grid .field.span2{grid-column:1 / -1}.field select,.field textarea{font-size:var(--fs-body);padding:10px 12px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);width:100%}.field input.readonly,input.readonly{background:var(--surface-2);color:var(--ink-soft);border-style:dashed}.field input.code-field{font-family:var(--font-mono);color:var(--accent);font-weight:600}.textarea{font-family:var(--font);resize:vertical}.form-actions.gap{gap:10px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14110c73;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;width:420px;max-width:100%;max-height:90vh;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:16px;box-shadow:0 24px 64px #00000047}.modal-card.wide{width:560px}.modal-card h2{font-size:var(--fs-h2);font-weight:600;margin:0}.modal-foot{display:flex;justify-content:flex-end;gap:10px}.field-editor{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:10px}.field-editor-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--ink-soft)}.field-editor-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}.check-row{display:flex;flex-wrap:wrap;gap:8px 20px}.field-editor-row input{font-size:13px;padding:8px 10px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}.field-list.wide{grid-template-columns:140px 1fr 140px 1fr}.notes-text.mt{margin-top:12px}.pick-list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:10px}.pick-row{display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:6px}.pick-row.on{background:var(--accent-soft)}.pick-check{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:13.5px}.pick-check input{width:16px;height:16px;accent-color:var(--accent)}.pick-check .code{color:var(--ink-faint)}.pick-name{font-weight:500}.pick-cond{margin-left:26px;font-size:13px;padding:7px 10px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}.pick-count{margin-top:8px}.timeline{display:flex;flex-direction:column;gap:14px}.timeline-row{display:flex;gap:12px;align-items:flex-start}.timeline-row .dot-lg{width:9px;height:9px;border-radius:50%;margin-top:5px;flex:none;background:var(--ink-faint)}.timeline-row .dot-lg.loan{background:var(--status-loan)}.timeline-row .dot-lg.stock{background:var(--status-stock)}.timeline-row .t{font-size:var(--fs-body);display:flex;align-items:center;flex-wrap:wrap}.timeline-row .d{font-size:12px;color:var(--ink-faint);margin-top:3px}@media (max-width: 720px){.shell{grid-template-columns:1fr}.rail{min-height:auto}.detail-grid,.form-grid{grid-template-columns:1fr}.field-list.wide{grid-template-columns:110px 1fr}.fs-row{grid-template-columns:1fr;gap:8px}}
