@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Sans+TC:wght@400;500;700&family=Playfair+Display:ital,wght@0,600;1,600&display=swap');

:root{--ink:#24312c;--green:#17654c;--paper:#f6f5f0;--line:#ced7cd;--orange:#f4a261;--mist:#e8efe9;--white:#fff;--danger:#a54231}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans TC',sans-serif}
button,input,select{font:inherit}
button{border:0;cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #f4a261;outline-offset:2px}
button:disabled{opacity:.55;cursor:wait}
header{display:grid;grid-template-columns:100px 1fr auto;gap:32px;align-items:center;padding:30px max(4vw,28px);border-bottom:1px solid var(--line)}
.mark{width:74px;height:74px;padding:12px 9px;background:var(--green);color:white;line-height:1.45;font-weight:700;letter-spacing:.08em}
h1,h2,h3,p{margin:0}
h1{font-size:clamp(25px,4vw,46px);line-height:1.2;font-weight:500}
h1 em{font-family:'Playfair Display',serif;color:var(--green)}
h2{font-size:22px}
.eyebrow{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.1em;color:#64726b;margin-bottom:6px}
.header-actions{display:flex;gap:8px}
.header-actions button,.add{padding:12px 18px;background:var(--green);color:#fff;font-weight:700;white-space:nowrap}
.header-actions .secondary{background:transparent;color:var(--green);border:1px solid var(--green)}
main{max-width:1500px;margin:auto;padding:28px max(4vw,28px);display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:28px}
.project{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,1fr);gap:12px;padding:18px;background:var(--mist);border-left:5px solid var(--orange)}
.project .address{grid-column:span 2}
label{font-size:12px;color:#526158}
input,select{width:100%;display:block;margin-top:5px;padding:8px;background:#fff;border:1px solid var(--line);color:var(--ink);font-size:14px}
.work{min-width:0}
.material-preview{grid-column:1/-1;min-width:0}
.preview-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:18px}
.preview-note{margin-top:7px;color:#64726b;font-size:13px}
.back-to-quote{padding:10px 14px;background:transparent;color:var(--green);border:1px solid var(--green);font-weight:700;white-space:nowrap}
.material-stats{display:flex;gap:1px;margin-bottom:16px;background:var(--line)}
.material-stats span{flex:1;padding:13px 16px;background:var(--mist);color:#526158;font-size:13px}
.material-stats strong{font:500 23px 'DM Mono',monospace;color:var(--green);margin-right:5px}
.material-table{min-width:650px}
.material-table td:nth-child(3),.material-table td:nth-child(4),.material-table td:nth-child(5),.material-table td:nth-child(6){font-family:'DM Mono',monospace;text-align:right}
main.previewing{display:block;max-width:1500px}
main.previewing>.project,main.previewing>.work,main.previewing>aside{display:none}
.heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:12px}
.tablewrap{overflow:auto;background:#fff;border:1px solid var(--line)}
table{width:100%;border-collapse:collapse;min-width:920px}
th{padding:10px;text-align:left;background:var(--ink);color:#fff;font:500 11px 'DM Mono',monospace;letter-spacing:.05em}
td{padding:5px;border-bottom:1px solid #e6ebe5}
td input,td select{margin:0;border:0;background:transparent;padding:6px;min-width:75px}
.not-applicable{text-align:center;color:#98a49d;background:#f8faf8}
.not-applicable::after{content:'—'}
.not-applicable>input,.not-applicable>select,.not-applicable>button{display:none}
.amount{font-family:'DM Mono',monospace;text-align:right;white-space:nowrap}
.remove,.options{padding:7px;background:var(--mist);color:var(--green)}
.remove{background:transparent;font-size:19px}
.empty{padding:40px;text-align:center;color:#718078;font-size:13px}
aside{align-self:start;background:var(--ink);color:#fff;padding:22px;position:sticky;top:15px}
.total{display:grid;grid-template-columns:1fr auto;gap:17px 5px;align-items:baseline}
.total span{font-size:13px;color:#c7d4cb}
.total strong{font:500 21px 'DM Mono',monospace}
.total strong:last-child{color:#f6c27e;font-size:25px}
.hint,.output-location,.records,.export-history{margin-top:22px;padding-top:16px;border-top:1px solid #526158;font-size:12px;color:#c7d4cb;line-height:1.7}
.output-location label{display:block;color:#c7d4cb;margin-bottom:9px}
.output-location input,.output-location select{background:#34453e;border-color:#53675e;color:#fff}
.records label{color:#c7d4cb}
.records select{background:#34453e;border-color:#53675e;color:#fff;margin-bottom:8px}
.wide{width:100%;padding:9px;background:#fff;color:var(--green);font-weight:700}
.export-history ul{list-style:none;padding:0;margin:8px 0 0}
.export-history li{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid #41534b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.export-history time{color:#91a49a;font-family:'DM Mono',monospace;font-size:10px}
dialog{border:0;box-shadow:0 20px 60px #0005;padding:0;width:min(520px,90vw)}
dialog::backdrop{background:#17201caa;backdrop-filter:blur(2px)}
dialog form{padding:26px;display:grid;grid-template-columns:1fr 1fr;gap:12px}
dialog h3,dialog menu{grid-column:1/-1;margin:0}
dialog menu{padding:12px 0 0;display:flex;justify-content:end;gap:8px}
dialog menu button{padding:9px 14px;background:var(--mist)}
dialog #saveOptions,dialog #savePrices{background:var(--green);color:#fff}
.price-dialog{width:min(650px,94vw)}
.price-dialog form{display:block}
.dialog-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:18px}
.close{font-size:24px;background:transparent;color:#526158}
.price-list{margin-top:12px;max-height:48vh;overflow:auto;border:1px solid var(--line)}
.price-row{display:grid;grid-template-columns:1fr 150px 40px;gap:8px;padding:7px;border-bottom:1px solid #e6ebe5}
.price-row input{margin:0}
.price-row button{background:transparent;color:var(--danger);font-size:18px}
.add-price{margin-top:10px;padding:9px 12px;background:var(--mist);color:var(--green)}
.price-dialog menu{display:flex;margin:18px 0 0;padding:0;justify-content:flex-end;gap:8px}
.toast{position:fixed;right:24px;bottom:24px;z-index:10;padding:13px 18px;background:var(--green);color:#fff;box-shadow:0 10px 30px #0003;transform:translateY(80px);opacity:0;transition:.25s ease}
.toast.show{transform:none;opacity:1}
.toast.error{background:var(--danger)}
@media(max-width:1050px){.project{grid-template-columns:repeat(4,1fr)}.project .address{grid-column:span 1}header{grid-template-columns:80px 1fr}.header-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:760px){header{padding:18px;gap:14px}.mark{width:62px;height:62px;font-size:13px}.header-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.header-actions #export{grid-column:1/-1}.header-actions button{width:100%}main{display:block;padding:18px}.project{grid-template-columns:repeat(2,1fr);margin-bottom:28px}.heading{align-items:center}aside{position:static;margin-top:28px}.toast{left:18px;right:18px;text-align:center}dialog form{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
