:root{--ink:#1c1a17;--ink-soft:#454039;--red:#a82f25;--red-deep:#7f211b;--red-tint:rgba(168,47,37,.07);--paper:#efebe2;--paper-2:#e7e2d7;--card:#fffefb;--card-2:#faf7f1;--gray:#8a8278;--gray-soft:#aaa295;--line:#e6e0d4;--line-soft:#efeade;--ok:#3f7d52;--shadow:0 1px 2px rgba(28,26,23,.04),0 8px 24px -14px rgba(28,26,23,.16);--shadow-md:0 2px 8px rgba(28,26,23,.06),0 16px 40px -20px rgba(28,26,23,.22);--shadow-lg:0 28px 70px -24px rgba(28,26,23,.38);--r:14px;--r-lg:18px}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:Noto Sans TC,sans-serif;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.55;overflow:hidden}body:before{opacity:.6;background-image:radial-gradient(rgba(28,26,23,.018) 1px,transparent 0);background-size:5px 5px}body:after,body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0}body:after{background:radial-gradient(120% 80% at 100% 0,rgba(168,47,37,.04),transparent 55%)}.serif{font-family:"Noto Serif TC",serif}button{cursor:pointer;border:none;background:none;color:inherit}button,input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}::-moz-selection{background:var(--red);color:#fff}::selection{background:var(--red);color:#fff}.app{height:100vh;z-index:1}.app,.sidebar{display:flex;position:relative}.sidebar{width:252px;flex-shrink:0;background:linear-gradient(180deg,#222019,#1a1814);color:#e9e3d8;flex-direction:column;padding:24px 16px;box-shadow:inset -1px 0 0 rgba(255,255,255,.04)}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 4px}.brand .mark{font-family:"Noto Serif TC",serif;font-weight:900;font-size:30px;letter-spacing:4px;color:#f6f1e7;position:relative;line-height:1}.brand .mark:after{content:"";position:absolute;top:-3px;right:-9px;width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 12px rgba(168,47,37,.7)}.brand-sub{font-size:10.5px;color:#9a9085;letter-spacing:2.5px;margin-top:5px}.brush{height:14px;margin:14px 8px 20px;opacity:.95}.nav-label{font-size:10px;letter-spacing:3px;color:#766d62;padding:0 12px;margin:16px 0 8px;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 13px;border-radius:10px;color:#cfc7ba;font-size:14px;width:100%;text-align:left;transition:.18s;margin-bottom:3px;position:relative}.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}.nav-item.active{background:var(--red);color:#fff;box-shadow:0 6px 18px -8px rgba(168,47,37,.8)}.nav-item.active:before{content:"";position:absolute;left:-16px;top:50%;transform:translateY(-50%);width:4px;height:20px;background:var(--red);border-radius:0 4px 4px 0}.nav-item i{width:18px;height:18px}.nav-item .badge{margin-left:auto;background:rgba(255,255,255,.14);font-size:11px;padding:1px 7px;border-radius:20px;font-weight:500}.nav-item.active .badge{background:rgba(255,255,255,.25)}.nav-item .badge.alert{background:var(--red);color:#fff}.nav-item.active .badge.alert{background:#fff;color:var(--red)}.side-foot{margin-top:auto;padding:14px 12px 0;border-top:1px solid rgba(255,255,255,.08);font-size:11px;color:#7e756a;line-height:1.7}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:68px;flex-shrink:0;background:rgba(255,254,251,.82);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 32px;gap:18px;position:relative;z-index:5}.page-title{font-family:"Noto Serif TC",serif;font-size:22px;font-weight:700;letter-spacing:.5px}.page-crumb{font-size:12px;color:var(--gray);margin-top:2px}.user-switch{margin-left:auto;position:relative}.user-btn{display:flex;align-items:center;gap:11px;padding:6px 12px 6px 6px;border-radius:40px;border:1px solid var(--line);background:var(--card);transition:.18s;box-shadow:var(--shadow)}.user-btn:hover{border-color:var(--gray)}.avatar{width:34px;height:34px;border-radius:50%;background:var(--ink);color:#f3ede2;display:flex;align-items:center;justify-content:center;font-family:"Noto Serif TC",serif;font-weight:700;font-size:15px;flex-shrink:0}.avatar.role-branch{background:linear-gradient(135deg,#b3392e,#8a241c)}.avatar.role-print{background:linear-gradient(135deg,#3a352d,#231f19)}.avatar.role-finance{background:linear-gradient(135deg,#8a8278,#6a6359)}.avatar.role-exec{background:linear-gradient(135deg,var(--ink),var(--red))}.user-meta{text-align:left;line-height:1.2}.user-meta .nm{font-size:13.5px;font-weight:500}.user-meta .rl{font-size:11px;color:var(--gray)}.user-btn .chev{width:16px;height:16px;color:var(--gray)}.user-menu{position:absolute;right:0;top:54px;width:300px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:8px;z-index:50;max-height:78vh;overflow-y:auto}.user-menu .hd{font-size:10.5px;letter-spacing:2px;color:var(--gray);padding:8px 12px 6px}.role-opt{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;width:100%;text-align:left;transition:.15s}.role-opt.cur,.role-opt:hover{background:var(--paper)}.role-opt .ck{margin-left:auto;color:var(--red);width:16px;height:16px;opacity:0;flex-shrink:0}.role-opt.cur .ck{opacity:1}.branch-opt{cursor:pointer}.branch-opt.cur .ck{opacity:1}.role-opt .br-del{margin-left:6px;width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--gray);flex-shrink:0;opacity:0;transition:.14s}.role-opt:hover .br-del{opacity:1}.role-opt .br-del:hover{background:var(--red-tint);color:var(--red)}.role-opt .br-del i{width:14px;height:14px}.br-add{display:flex;gap:6px;padding:6px 8px 2px}.br-add input{flex:1;min-width:0;border:1px solid var(--line);background:var(--card-2);border-radius:8px;padding:7px 10px;font-size:12.5px;color:var(--ink);outline:none}.br-add input:focus{border-color:var(--red);background:var(--card)}.role-opt .rd{line-height:1.25}.role-opt .rd .a{font-size:13.5px;font-weight:500}.role-opt .rd .b{font-size:11px;color:var(--gray)}.content{flex:1;overflow-y:auto;padding:28px 30px 60px}.content::-webkit-scrollbar{width:10px}.content::-webkit-scrollbar-thumb{background:var(--line);border-radius:10px;border:3px solid var(--paper)}.role-note{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-soft);background:linear-gradient(180deg,var(--red-tint),var(--card));border:1px solid var(--line);padding:11px 16px;border-radius:12px;margin-bottom:24px}.role-note i{width:16px;height:16px;color:var(--red);flex-shrink:0}.role-note b{color:var(--ink);font-weight:600}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:28px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;position:relative;overflow:hidden;transition:.22s;box-shadow:var(--shadow)}.kpi:after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent;transition:.2s}.kpi:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--line)}.kpi:hover:after{background:var(--line)}.kpi .lab{font-size:12.5px;color:var(--gray);display:flex;align-items:center;gap:7px;font-weight:500}.kpi .lab i{width:15px;height:15px}.kpi .num{font-family:"Noto Serif TC",serif;font-size:40px;font-weight:700;line-height:1.05;margin-top:10px}.kpi .num small{font-size:15px;font-weight:400;color:var(--gray);margin-left:3px}.kpi .sub{font-size:11.5px;color:var(--gray);margin-top:5px}.kpi.accent{background:linear-gradient(165deg,#252118,#1b1814);color:#f3ede2;border-color:#1b1814}.kpi.accent .lab,.kpi.accent .sub{color:#b3a99b}.kpi.accent .num{color:#f6f1e7}.kpi.alert{border-color:rgba(168,47,37,.4);background:linear-gradient(180deg,var(--red-tint),var(--card))}.kpi.alert .lab i,.kpi.alert .num{color:var(--red)}.kpi.alert:hover:after{background:var(--red)}.section-h{display:flex;align-items:center;gap:12px;margin:32px 0 14px}.section-h .ttl{font-family:"Noto Serif TC",serif;font-size:19px;font-weight:700}.section-h .ln{flex:1;height:1px;background:var(--line)}.section-h .cnt{font-size:12px;color:var(--gray)}.cols{display:grid;grid-template-columns:1.6fr 1fr;gap:18px;align-items:start}@media(max-width:1100px){.cols{grid-template-columns:1fr}}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}.panel-h{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}.panel-h .pt{font-family:"Noto Serif TC",serif;font-size:15px;font-weight:700}.panel-h i{width:16px;height:16px;color:var(--red)}.panel-h .right{margin-left:auto;font-size:12px;color:var(--gray)}.panel-b{padding:6px 0}.feed-item{display:flex;gap:13px;padding:13px 20px;border-bottom:1px solid var(--line);align-items:flex-start}.feed-item:last-child{border-bottom:none}.feed-ic{width:32px;height:32px;border-radius:9px;background:var(--paper);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--ink)}.feed-ic i{width:16px;height:16px}.feed-ic.r{background:rgba(158,43,37,.1);color:var(--red)}.feed-tx{flex:1;font-size:13.5px}.feed-tx .t{font-weight:500}.feed-tx .m{font-size:12px;color:var(--gray);margin-top:2px}.feed-tx .m b{color:var(--ink-soft);font-weight:500}.feed-time{font-size:11px;color:var(--gray);flex-shrink:0;white-space:nowrap}.tbl-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}.tbl-tools{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}.tools-actions{margin-left:auto}.tbl-filters,.tools-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tbl-filters{padding:11px 18px;border-bottom:1px solid var(--line);background:var(--card-2)}.filter-grp-lab{font-size:11.5px;font-weight:700;color:var(--gray);letter-spacing:.5px;flex-shrink:0}.search{display:flex;align-items:center;gap:8px;background:var(--card-2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;flex:1;min-width:180px;max-width:320px;transition:.16s}.search:focus-within{border-color:var(--red);background:var(--card)}.search i{width:15px;height:15px;color:var(--gray)}.search input{border:none;background:none;outline:none;font-size:13px;width:100%;color:var(--ink)}.chip-filter{display:flex;gap:6px;flex-wrap:wrap}.fchip{font-size:12px;padding:6px 13px;border-radius:8px;border:1px solid var(--line);background:var(--card-2);color:var(--gray);transition:.15s}.fchip:hover{border-color:var(--gray);color:var(--ink)}.fchip.on{background:var(--ink);color:#f3ede2;border-color:var(--ink)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{text-align:left;font-size:11px;letter-spacing:.5px;color:var(--gray);font-weight:600;padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--card-2)}tbody td{padding:13px 16px;border-bottom:1px solid var(--line-soft);vertical-align:middle}tbody tr{transition:.12s;cursor:pointer}tbody tr:hover{background:var(--card-2)}tbody tr:last-child td{border-bottom:none}.tid{font-family:"Noto Serif TC",serif;font-weight:600;font-size:13px}.tsub{font-size:11.5px;color:var(--gray)}.qty-cell b{font-family:"Noto Serif TC",serif;font-size:15px}.badge-st{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;padding:4px 10px;border-radius:20px;white-space:nowrap}.badge-st .dot{width:6px;height:6px;border-radius:50%}.st-neutral{background:var(--paper);color:var(--gray);border:1px solid var(--line)}.st-neutral .dot{background:var(--gray)}.st-wait{background:transparent;color:var(--ink-soft);border:1px dashed var(--gray)}.st-wait .dot{background:var(--ink-soft)}.st-progress{background:var(--ink);color:#f3ede2}.st-progress .dot{background:#f3ede2}.st-done{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}.st-done .dot{background:var(--ink)}.st-alert{background:var(--red);color:#fff}.st-alert .dot{background:#fff}.ex-flag{display:inline-flex;align-items:center;gap:4px;color:var(--red);font-size:11.5px;font-weight:500}.ex-flag i{width:13px;height:13px}.btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;padding:9px 16px;border-radius:10px;transition:.16s;border:1px solid transparent}.btn i{width:15px;height:15px}.btn-primary{background:var(--red);color:#fff;box-shadow:0 6px 16px -8px rgba(168,47,37,.7)}.btn-primary:hover{background:var(--red-deep);transform:translateY(-1px)}.btn-ink{background:var(--ink);color:#f3ede2}.btn-ink:hover{background:var(--ink-soft);transform:translateY(-1px)}.btn-ghost{background:var(--card);border-color:var(--line);color:var(--ink)}.btn-ghost:hover{background:var(--card-2);border-color:var(--gray)}.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.import-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}@media(max-width:980px){.import-grid{grid-template-columns:1fr}}.drop{border:2px dashed var(--line);border-radius:16px;padding:34px 24px;text-align:center;background:var(--card);transition:.2s;cursor:pointer}.drop:hover{border-color:var(--red);background:rgba(158,43,37,.02)}.drop .ic{width:54px;height:54px;border-radius:14px;background:var(--paper);display:flex;align-items:center;justify-content:center;margin:0 auto 14px}.drop .ic i{width:26px;height:26px;color:var(--red)}.drop h4{font-family:"Noto Serif TC",serif;font-size:16px;margin-bottom:5px}.drop p{font-size:12.5px;color:var(--gray)}.input-methods{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;justify-content:center}.imchip{display:flex;align-items:center;gap:6px;font-size:12px;padding:7px 12px;border-radius:8px;background:var(--paper);border:1px solid var(--line);color:var(--ink-soft)}.imchip i{width:14px;height:14px;color:var(--gray)}textarea.paste{width:100%;min-height:150px;border:1px solid var(--line);border-radius:12px;padding:14px;font-size:13px;resize:vertical;background:var(--card);outline:none;line-height:1.7}textarea.paste:focus{border-color:var(--red)}.sample-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.parse-card{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-top:20px}.parse-row{display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line);font-size:13px}.parse-row:last-child{border-bottom:none}.parse-row .grow{flex:1}.conf{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500}.conf .bar{width:54px;height:5px;border-radius:3px;background:var(--line);overflow:hidden}.conf .bar i{display:block;height:100%;background:var(--ink)}.conf.low .bar i{background:var(--red)}.ai-tag,.conf.low{color:var(--red)}.ai-tag{font-size:10.5px;background:rgba(158,43,37,.1);padding:2px 7px;border-radius:5px;font-weight:500}.scrim{position:fixed;inset:0;background:rgba(33,30,26,.4);backdrop-filter:blur(2px);z-index:60;transition:.25s}.drawer{position:fixed;top:50%;left:50%;width:600px;max-width:94vw;max-height:88vh;background:var(--paper);z-index:61;box-shadow:var(--shadow-lg);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transform:translate(-50%,-50%);display:flex;flex-direction:column}.drawer-h{padding:20px 24px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:12px;background:var(--card)}.drawer-h .x{margin-left:auto;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--gray);transition:.15s}.drawer-h .x:hover{background:var(--paper);color:var(--ink)}.drawer-b{flex:1;overflow-y:auto;padding:22px 24px}.drawer-b::-webkit-scrollbar{width:8px}.drawer-b::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}.drawer-f{padding:14px 24px;border-top:1px solid var(--line);background:var(--card);display:flex;gap:9px;flex-wrap:wrap}.stepper{margin:6px 0 22px;overflow-x:auto;padding-bottom:4px}.step,.stepper{display:flex;align-items:center}.step{flex-direction:column;gap:6px;flex-shrink:0;min-width:58px}.step .cir{width:30px;height:30px;border-radius:50%;border:2px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;color:var(--gray)}.step .cir i{width:14px;height:14px}.step.done .cir{background:var(--ink);border-color:var(--ink);color:#f3ede2}.step.cur .cir{background:var(--red);border-color:var(--red);color:#fff;box-shadow:0 0 0 4px rgba(158,43,37,.15)}.step .lb{font-size:10px;color:var(--gray);text-align:center}.step.cur .lb,.step.done .lb{color:var(--ink)}.step-line{height:2px;flex:1;min-width:14px;background:var(--line);margin-bottom:18px}.step-line.done{background:var(--ink)}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:20px}.info-cell{background:var(--card);padding:12px 15px}.info-cell .k{font-size:11px;color:var(--gray)}.info-cell .v{font-size:14px;font-weight:500;margin-top:3px}.info-cell .v.serif{font-family:"Noto Serif TC",serif;font-size:18px;font-weight:700;color:var(--ink)}.calc-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:15px 18px;margin-bottom:20px}.calc-line{display:flex;align-items:center;gap:8px;font-size:13px;flex-wrap:wrap}.calc-line .op{color:var(--gray)}.calc-line b.serif{font-family:"Noto Serif TC",serif;font-size:17px}.calc-eq{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);display:flex;align-items:center;gap:8px}.nl-box{background:linear-gradient(180deg,rgba(158,43,37,.04),var(--card));border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:20px}.nl-box .lab{font-size:12px;color:var(--gray);display:flex;align-items:center;gap:6px;margin-bottom:9px}.nl-box .lab i{width:14px;height:14px;color:var(--red)}.nl-input{display:flex;gap:8px}.nl-input input{flex:1;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:13px;outline:none;background:var(--card)}.nl-input input:focus{border-color:var(--red)}.nl-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.nl-chips button{font-size:11.5px;padding:5px 10px;border-radius:7px;background:var(--card);border:1px solid var(--line);color:var(--gray)}.nl-chips button:hover{border-color:var(--red);color:var(--red)}.nl-result{margin-top:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:13px;font-size:13px}.nl-diff{display:flex;align-items:center;gap:14px;margin:8px 0;font-family:"Noto Serif TC",serif}.nl-diff .from{color:var(--gray);text-decoration:line-through}.nl-diff .to{color:var(--red);font-size:22px;font-weight:700}.nl-diff i{width:18px;height:18px;color:var(--gray)}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1}}.audit-item{display:flex;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}.audit-item:last-child{border-bottom:none}.audit-dot{width:9px;height:9px;border-radius:50%;background:var(--ink);margin-top:5px;flex-shrink:0}.audit-dot.ai{background:var(--red)}.audit-tx{font-size:12.5px;flex:1}.audit-tx .h{font-weight:500}.audit-tx .d{color:var(--gray);font-size:11.5px;margin-top:1px}.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#f3ede2;padding:13px 22px;border-radius:12px;font-size:13.5px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-lg);z-index:90;opacity:0;visibility:hidden;transition:.28s}.toast.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}.toast i{width:17px;height:17px;color:#fff}.toast.ok i{color:#cdebcd}.empty{text-align:center;padding:60px 20px;color:var(--gray)}.empty i{width:40px;height:40px;opacity:.4;margin-bottom:12px}.bar-rank{flex-direction:column;padding:18px 20px}.bar-rank,.rank-row{display:flex;gap:12px}.rank-row{align-items:center;font-size:13px}.rank-row .nm{width:80px;flex-shrink:0}.rank-row .track{flex:1;height:9px;background:var(--paper);border-radius:6px;overflow:hidden}.rank-row .track i{display:block;height:100%;background:var(--ink);border-radius:6px}.rank-row.r .track i{background:var(--red)}.rank-row .vl{font-family:"Noto Serif TC",serif;font-weight:600;width:40px;text-align:right}.hide{display:none!important}.dtag{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:20px;border:1px solid var(--line);white-space:nowrap;line-height:1.6}.dtag i{width:12px;height:12px}.dtag.tag-main{color:var(--ink);background:var(--card);border-color:var(--line)}.dtag.tag-temp{color:var(--red-deep);background:rgba(158,43,37,.07);border-color:rgba(158,43,37,.3)}.dtag.tag-own{color:var(--ink-soft);background:rgba(133,125,114,.12);border-color:var(--gray)}.sub-pill{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--red-deep);background:rgba(158,43,37,.07);border:1px solid rgba(158,43,37,.25);padding:1px 7px;border-radius:20px}.sub-pill i{width:11px;height:11px}.en-pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:20px;line-height:1.7;white-space:nowrap}.en-pill i{width:12px;height:12px}.en-pill.en-sync{color:var(--ink);background:var(--card);border:1px solid var(--line)}.en-pill.en-manual{color:var(--ink-soft);background:rgba(133,125,114,.12);border:1px solid var(--gray)}.en-pill.en-pending{color:var(--red-deep);background:rgba(158,43,37,.08);border:1px solid rgba(158,43,37,.3)}.cost-row{display:flex;align-items:center;justify-content:space-between;font-size:13.5px;color:var(--ink-soft);padding:7px 0}.cost-row+.cost-row{border-top:1px dashed var(--line)}.cost-row b{font-size:15px;color:var(--ink)}.cost-row.total{margin-top:2px;padding-top:11px;border-top:1.5px solid var(--line)}.cost-row.total span{font-weight:600;color:var(--ink)}.cost-row.total b{font-size:18px;color:var(--red)}.factor-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media(max-width:640px){.factor-grid{grid-template-columns:repeat(2,1fr)}}.fcell{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:11px 12px;text-align:center}.fcell .fk{display:flex;align-items:center;justify-content:center;gap:4px;font-size:11.5px;color:var(--gray);margin-bottom:6px;font-weight:600}.fcell .fk i{width:13px;height:13px}.fcell .fv{font-size:20px;font-weight:700;color:var(--ink)}.fcell .fv.serif{font-family:"Noto Serif TC",serif}.batch-foot{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px 20px 4px;border-top:1px dashed var(--line);margin-top:4px}table tfoot td{padding:11px 14px;background:var(--card-2)}.price-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);margin-bottom:18px}.price-head{gap:13px;padding:16px 20px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--card-2),var(--card))}.price-head,.price-head .ic{display:flex;align-items:center}.price-head .ic{width:40px;height:40px;border-radius:12px;background:linear-gradient(150deg,#2c2820,#191712);justify-content:center;color:#f3ede2;flex-shrink:0;position:relative;box-shadow:0 7px 18px -9px rgba(28,26,23,.55),inset 0 1px 0 rgba(255,255,255,.07)}.price-head .ic:after{content:"";position:absolute;right:-3px;top:-3px;width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2.5px var(--card),0 0 10px rgba(168,47,37,.6)}.price-head .ic i{width:18px;height:18px}.price-head .ti{font-family:"Noto Serif TC",serif;font-weight:700;font-size:15px}.price-head .de{font-size:11.5px;color:var(--gray);margin-top:1px}.price-head .right{margin-left:auto}.edit-tbl{width:100%;border-collapse:collapse;font-size:13px}.edit-tbl thead th{text-align:left;font-size:11px;letter-spacing:.4px;color:var(--gray);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--card-2);white-space:nowrap}.edit-tbl tbody td{padding:7px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.edit-tbl tbody tr:last-child td{border-bottom:none}.cell-in{width:100%;border:1px solid transparent;background:transparent;border-radius:7px;padding:7px 9px;font-size:13px;color:var(--ink);outline:none;transition:.14s;font-family:inherit}.cell-in:hover{border-color:var(--line);background:var(--card-2)}.cell-in:focus{border-color:var(--red);background:var(--card);box-shadow:0 0 0 3px var(--red-tint)}.cell-in.num{font-family:"Noto Serif TC",serif;font-weight:600}.cell-in.w-sm{max-width:80px}.cell-in.w-md{max-width:120px}select.cell-in{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238a8278' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px}.icon-btn{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--gray);transition:.14s;border:1px solid transparent}.icon-btn:hover{background:var(--red-tint);color:var(--red);border-color:rgba(168,47,37,.2)}.icon-btn i{width:15px;height:15px}.add-row{display:flex;align-items:center;gap:8px;padding:11px 16px;border-top:1px dashed var(--line);background:var(--card-2)}.spec-badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--red-tint);color:var(--red);border:1px solid rgba(168,47,37,.25)}.spec-badge i{width:11px;height:11px}.readonly-note{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--gray);padding:10px 16px;background:var(--card-2);border-top:1px solid var(--line)}.readonly-note i{width:14px;height:14px;color:var(--gray)}.estimator{background:linear-gradient(165deg,#252118,#1a1814);color:#e9e3d8;border-radius:var(--r-lg);padding:20px 22px;box-shadow:var(--shadow-md)}.estimator .et{font-family:"Noto Serif TC",serif;font-weight:700;font-size:15px;color:#f6f1e7;display:flex;align-items:center;gap:8px;margin-bottom:14px}.estimator .et i{width:16px;height:16px;color:var(--red)}.est-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:14px}.est-field label{display:block;font-size:11px;color:#a59c8f;margin-bottom:5px}.est-field input,.est-field select{width:100%;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#f3ede2;border-radius:8px;padding:8px 10px;font-size:12.5px;outline:none;font-family:inherit}.est-field select option{color:#1c1a17}.est-field input:focus,.est-field select:focus{border-color:var(--red)}.est-out{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px;border-top:1px solid rgba(255,255,255,.12);padding-top:14px}.est-out .br{font-size:12px;color:#a59c8f}.est-out .br b{color:#f3ede2}.est-out .big,.est-out .br b{font-family:"Noto Serif TC",serif}.est-out .big{font-size:30px;font-weight:700;color:#fff}.est-out .big small{font-size:14px;color:#a59c8f;font-weight:400;margin-left:3px}.mform{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media(max-width:640px){.mform{grid-template-columns:repeat(2,1fr)}}@media(max-width:440px){.mform{grid-template-columns:1fr}}.mfield label{display:block;font-size:11.5px;color:var(--gray);margin-bottom:5px;font-weight:600}.mfield input,.mfield select{width:100%;border:1px solid var(--line);background:var(--card-2);border-radius:9px;padding:9px 11px;font-size:13.5px;color:var(--ink);outline:none;font-family:inherit}.mfield input:focus,.mfield select:focus{border-color:var(--red);background:var(--card);box-shadow:0 0 0 3px var(--red-tint)}.spec-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media(max-width:520px){.spec-row{grid-template-columns:1fr}}.spec-cell{background:var(--card-2);border:1px solid var(--line);border-radius:10px;padding:9px 11px}.spec-cell label{display:block;font-size:11px;color:var(--gray);margin-bottom:5px;font-weight:600}.spec-cell input,.spec-cell select{width:100%;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 10px;font-size:13px;color:var(--ink);outline:none;font-family:inherit}.spec-cell input:focus,.spec-cell select:focus{border-color:var(--red);box-shadow:0 0 0 3px var(--red-tint)}.mfield select,.spec-cell select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238a8278' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.page-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:22px;overflow-x:auto}.ptab{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:600;color:var(--gray);padding:12px 18px;border-bottom:2px solid transparent;transition:.15s;white-space:nowrap;margin-bottom:-1px}.ptab i{width:15px;height:15px}.ptab.on,.ptab:hover{color:var(--ink)}.ptab.on{border-bottom-color:var(--red)}.ptab.on i{color:var(--red)}.ptab-badge{background:var(--card-2);border:1px solid var(--line);font-size:11px;padding:1px 8px;border-radius:20px;color:var(--gray);line-height:1.5}.ptab.on .ptab-badge{background:var(--red);color:#fff;border-color:var(--red)}.drawer-tabs{display:flex;gap:4px;background:var(--card-2);border:1px solid var(--line);border-radius:12px;padding:4px;margin:6px 0 18px;overflow-x:auto}.dtab{flex:1;min-width:74px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--gray);padding:9px 8px;border-radius:9px;transition:.15s;white-space:nowrap}.dtab i{width:14px;height:14px}.dtab.on,.dtab:hover{color:var(--ink)}.dtab.on{background:var(--card);box-shadow:var(--shadow)}.dtab.on i{color:var(--red)}.logi-flow{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.logi-chip{font-size:12.5px;font-weight:600;color:var(--gray);background:var(--card);border:1px solid var(--line);border-radius:20px;padding:5px 13px}.logi-chip.on{color:var(--ink);border-color:var(--ink-soft)}.logi-chip.cur{color:#fff;background:var(--ink);border-color:var(--ink)}@media (max-width:760px){body{overflow:auto}.app{min-height:100vh;height:auto;flex-direction:column}.sidebar{width:100%;padding:16px}.sidebar nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.topbar{height:auto;align-items:flex-start;flex-direction:column;padding:16px}.content{padding:18px 16px 36px}}