:root{--brand-warm: #9a5b23;--brand-warm-hi: #7e4917;--brand-cool: #2f8fa0;--bg: #f4f1ec;--surface: #ffffff;--surface-soft: #faf8f5;--line: rgba(40, 30, 20, .12);--line-strong: rgba(40, 30, 20, .22);--text: #1d1915;--text-mid: #4f4840;--text-dim: #6e665c;--warn: #a2410a;--radius-sm: 8px;--radius: 14px;--shadow-card: 0 1px 2px rgba(40, 30, 20, .05), 0 12px 28px -14px rgba(40, 30, 20, .18);--fs-xs: 13px;--fs-sm: 14.5px;--fs-md: 15.5px;--fs-base: 17px;--fs-lg: 19px;--fs-xl: 23px;--font-sans: "Noto Sans TC", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.55;background:var(--bg);color:var(--text)}header{position:relative;display:flex;align-items:center;gap:1.2rem;height:96px;padding:14px 28px;overflow:hidden;background:linear-gradient(90deg,#f4f1ecf5,#f4f1ecd9 38%,#f4f1ec00 70%),url(/hero.jpg) right 30% / 62% auto no-repeat,#efe9e0;border-bottom:1px solid var(--line)}header h1{margin:0;font-size:var(--fs-xl);font-weight:700;letter-spacing:.04em}header h1{color:var(--text)}header .subtitle{font-size:var(--fs-sm);color:var(--text-mid)}#status{margin-left:auto;margin-right:4px;padding:6px 14px;border-radius:999px;background:#fffffff0;color:var(--text);font-size:var(--fs-md);font-weight:600;box-shadow:var(--shadow-card)}main{display:grid;grid-template-columns:minmax(380px,420px) 1fr minmax(340px,25vw);gap:16px;padding:16px;height:calc(100vh - 96px)}form,.viewer-panel,.tables{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:16px 18px;overflow:auto}fieldset{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-soft);padding:10px 14px 6px;margin:0 0 14px}legend{padding:0 6px;font-size:var(--fs-md);font-weight:700;color:var(--brand-warm);letter-spacing:.06em}label{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:8px 0;font-size:var(--fs-md);color:var(--text-mid)}form label:not(:has(input[type=checkbox])){display:grid;grid-template-columns:7.4em minmax(0,1fr)}form label input[type=number],form label select{width:100%}label:has(input[type=checkbox]){justify-content:flex-start;cursor:pointer}input[type=number],input[type=text],select{width:11.5rem;min-height:40px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-base)}input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand-warm)}input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid color-mix(in srgb,var(--brand-cool) 45%,transparent);outline-offset:1px;border-color:var(--brand-cool)}input:invalid{border-color:var(--warn)}.tentative{color:var(--warn);font-weight:400;font-size:var(--fs-xs);cursor:help}button{min-height:42px;padding:8px 14px;border:1px solid var(--brand-warm);border-radius:var(--radius-sm);background:var(--brand-warm);color:#fff;font:inherit;font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:background .15s,box-shadow .15s,transform .05s}button:hover{background:var(--brand-warm-hi);box-shadow:0 4px 12px -4px #9a5b2380}button:active{transform:translateY(1px)}button.secondary{background:var(--surface);color:var(--brand-warm)}button.secondary:hover{background:#f6ede4}.exports{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:6px;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--line)}.exports button{padding:8px 2px;white-space:nowrap;font-size:var(--fs-sm)}header #open-library{box-shadow:var(--shadow-card)}.viewer-panel{display:flex;flex-direction:column;padding:12px}#viewer{flex:1;min-height:320px;border-radius:var(--radius-sm);overflow:hidden}.viewer-tools{display:grid;gap:10px;margin-top:10px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--surface-soft);border:1px solid var(--line)}.tool-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.tool-label{font-size:var(--fs-sm);font-weight:700;color:var(--text-dim);margin-right:4px}.viewer-tools label{margin:0}.segmented label{display:inline-flex;padding:3px;gap:2px;border-radius:999px;cursor:pointer;background:var(--surface);border:1px solid var(--line-strong)}.segmented span{padding:6px 16px;border-radius:999px;font-size:var(--fs-md);font-weight:600;color:var(--text-mid);transition:background .15s,color .15s}.segmented label:has(input:checked) span[data-mode=real],.segmented label:has(input:not(:checked)) span[data-mode=wire]{background:var(--brand-warm);color:#fff}.chip{display:inline-flex!important;align-items:center;gap:6px;padding:6px 14px 6px 10px;cursor:pointer;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);font-size:var(--fs-md);color:var(--text-mid);-webkit-user-select:none;user-select:none;transition:all .15s}.chip input{width:18px;height:18px;margin:0}.chip:has(input:checked){border-color:var(--brand-warm);background:#f8ede2;color:var(--brand-warm-hi);font-weight:600}.icon-button{margin-left:auto;min-height:38px;padding:6px 14px;border-radius:999px}.swatches{display:flex;flex-wrap:wrap;gap:6px}.swatch{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:4px 12px 4px 5px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text-mid);font-size:var(--fs-sm);font-weight:500}.swatch:hover{background:var(--surface);border-color:var(--brand-warm);box-shadow:none}.swatch i{width:30px;height:30px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 1px #00000026;background:linear-gradient(135deg,var(--body) 0 50%,var(--front) 50% 100%)}.swatch[aria-checked=true]{border-color:var(--brand-warm);background:#f8ede2;color:var(--brand-warm-hi);font-weight:700;box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-warm) 35%,transparent)}#warnings{color:var(--warn);margin:8px 0 0;padding-left:1.4rem;font-size:var(--fs-md)}#warnings:empty{display:none}nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}nav button{background:transparent;color:var(--brand-warm);border-color:var(--line-strong)}nav button:hover{background:#f6ede4;box-shadow:none}nav button[aria-selected=true]{background:var(--brand-warm);border-color:var(--brand-warm);color:#fff}table{border-collapse:collapse;width:100%;font-size:var(--fs-md)}th,td{border-bottom:1px solid var(--line);padding:8px;text-align:right}th{color:var(--text-dim);font-weight:600;background:var(--surface-soft);position:sticky;top:-16px}tbody tr:hover{background:#faf4ee}th:first-child,td:first-child{text-align:left}tfoot td{font-weight:700;font-size:var(--fs-base)}.dialog-actions{display:flex;gap:10px;margin-top:14px}.message{color:var(--brand-warm);min-height:1.4em}.drawing-view img{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.drawing-view .pager{display:flex;gap:10px;align-items:center;margin-bottom:8px}@media (max-width: 1500px){main{grid-template-columns:minmax(360px,400px) 1fr;height:auto;align-items:start}form{max-height:calc(100vh - 128px)}.tables{grid-column:1 / -1}#viewer{flex:none;height:min(62vh,600px)}}@media (max-width: 820px){main{grid-template-columns:1fr}#viewer{height:380px}header{padding:12px 16px;background-size:auto 100%}header .subtitle{display:none}}:root{--scroll-track: rgba(40, 30, 20, .06);--scroll-thumb: #b98a5e;--scroll-thumb-hi: #9a5b23}@supports (scrollbar-width: none) and (not selector(::-webkit-scrollbar)){*{scrollbar-width:none}}*::-webkit-scrollbar{width:0;height:10px}*::-webkit-scrollbar-track{background:var(--scroll-track);border-radius:999px}*::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);border-radius:999px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background-color:var(--scroll-thumb-hi)}*::-webkit-scrollbar-corner{background:transparent}.scroll-hint{position:sticky;z-index:5;display:block;width:100%;height:0;min-height:0;margin:0;padding:0;border:0;background:none;box-shadow:none;opacity:0;pointer-events:none;transition:opacity .2s}.scroll-hint:hover{background:none;box-shadow:none}.scroll-hint.is-visible{opacity:1;pointer-events:auto}.scroll-hint--up{top:0}.scroll-hint--down{bottom:0}.scroll-hint span{position:absolute;left:50%;transform:translate(-50%);padding:6px 16px;border-radius:999px;white-space:nowrap;background:var(--brand-warm);color:#fff;font-size:var(--fs-sm);font-weight:600;box-shadow:0 6px 16px -6px #281e1473}.scroll-hint--up span{top:6px}.scroll-hint--down span{bottom:6px}.scroll-hint:before{content:"";position:absolute;left:-18px;right:-18px;height:56px;pointer-events:none}.scroll-hint--up:before{top:-16px;background:linear-gradient(var(--surface),transparent)}.scroll-hint--down:before{bottom:-16px;background:linear-gradient(transparent,var(--surface))}.scroll-hint span:hover{background:var(--brand-warm-hi)}.scroll-hint--page{position:fixed;left:0;right:0;width:auto}.scroll-hint--page.scroll-hint--up{top:0}.scroll-hint--page.scroll-hint--down{bottom:0;top:auto}.scroll-hint--page:before{left:0;right:0}.scroll-hint--page.scroll-hint--up:before{top:0;background:linear-gradient(var(--bg),transparent)}.scroll-hint--page.scroll-hint--down:before{bottom:0;background:linear-gradient(transparent,var(--bg))}.quote-modes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.quote-mode{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px;background:var(--surface);color:var(--text-mid);border:1px solid var(--line-strong)}.quote-mode:hover{background:#f6ede4;box-shadow:none}.quote-mode strong{font-size:var(--fs-lg);color:var(--text)}.quote-mode-label{font-size:var(--fs-sm);font-weight:600}.quote-mode[aria-checked=true]{background:#f8ede2;border-color:var(--brand-warm);color:var(--brand-warm-hi);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-warm) 30%,transparent)}.quote-mode[aria-checked=true] strong{color:var(--brand-warm-hi)}.quote-table td{vertical-align:top}.quote-item{font-weight:600;color:var(--text)}.quote-formula{font-size:var(--fs-xs);color:var(--text-dim);line-height:1.45;margin-top:2px}.quote-table tfoot td{font-weight:600;font-size:var(--fs-md)}.quote-table tr.grand-total td{font-size:var(--fs-xl);font-weight:700;color:var(--brand-warm-hi);border-top:2px solid var(--brand-warm)}.erp-note{margin:12px 0 0;padding:10px 14px;border-radius:var(--radius-sm);border-left:4px solid #c98a3a;background:#fbf3e6;color:#6b4415;font-size:var(--fs-sm);line-height:1.5}.warn-text{color:var(--warn);font-size:var(--fs-sm)}.nesting-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-bottom:12px}.nesting-card{display:flex;flex-direction:column;padding:10px 12px;border-radius:var(--radius-sm);background:var(--surface-soft);border:1px solid var(--line)}.nesting-card b{font-size:var(--fs-xl);color:var(--brand-warm-hi)}.nesting-card span{font-size:var(--fs-sm);color:var(--text-mid)}.nesting-view figure{margin:0 0 14px}.nesting-view figcaption{font-size:var(--fs-sm);font-weight:600;color:var(--text-mid);margin-bottom:4px}.sheet-svg{width:100%;height:auto;display:block}.sheet-board{fill:#f3efe8;stroke:#8b7a66;stroke-width:6}.sheet-piece{stroke:#7e4917;stroke-width:4}.sheet-label{fill:#3b2a1a;font-weight:700;text-anchor:middle;dominant-baseline:middle}.sheet-dims{fill:#6e5a44;text-anchor:middle;dominant-baseline:middle}
