:root{--bg:#f7f8f5;--card:#fff;--ink:#183a37;--ink-2:#47615d;--ink-3:#71827e;--line:#e7efe9;--brand:#183a37;--brand-soft:#2f6b5f;--tint:#e7efe9;--gold:#b8894a;--danger:#c0392b;--ok:#2e7d5b;--radius:8px;--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%;margin:0;padding:0;font-family:Manrope,Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif;font-size:16px}#root{min-height:100vh}input,select,textarea,button{color:inherit;font-family:inherit;font-size:16px}input:focus,select:focus,textarea:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #1f2a3714}.app{min-height:100vh;padding-bottom:calc(64px + var(--safe-b))}.app-preview{padding-bottom:0}.page{max-width:720px;margin:0 auto;padding:12px 14px 0}.spacer{height:90px}.hdr{justify-content:space-between;align-items:center;gap:10px;padding:10px 2px 14px;display:flex}.hdr h1{letter-spacing:0;margin:2px 0 0;font-family:Sora,Noto Sans TC,sans-serif;font-size:24px}.hdr-sub{color:var(--ink-3);font-size:12px}.hdr-sticky{z-index:20;background:var(--bg);border-bottom:1px solid var(--line);padding:10px 0;position:sticky;top:0}.hdr-title{text-align:center;flex:1;line-height:1.2;overflow:hidden}.hdr-title b{white-space:nowrap;text-overflow:ellipsis;font-size:15px;display:block;overflow:hidden}.hdr-title small{color:var(--ink-3);font-size:11px}.status-sel{border:1px solid var(--line);background:#fff;border-radius:20px;padding:6px 8px;font-size:13px}.btn{cursor:pointer;color:var(--ink);background:#eceef1;border:0;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:10px 14px;font-size:14px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5}.btn-soft{color:var(--brand);background:#e8ecf1}.btn-ghost{color:var(--ink-2);background:0 0}.btn-lg{flex:1;padding:13px 20px;font-size:16px}.btn-danger-o{border:1px solid var(--danger);color:var(--danger);background:0 0;width:100%;margin-top:10px}.btn-row{gap:8px;display:flex}.icon-btn{color:var(--ink-3);cursor:pointer;background:0 0;border:0;padding:6px 8px;font-size:16px}.icon-btn.danger{color:var(--danger)}.stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px;display:grid}.stat{background:var(--card);border-radius:var(--radius);text-align:center;padding:10px}.stat b{font-size:20px;display:block}.stat span{color:var(--ink-3);font-size:11px}.toolbar{margin-bottom:8px}.search{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;padding:11px 12px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.chips-scroll{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:4px;overflow-x:auto}.chips-scroll::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);color:var(--ink-2);white-space:nowrap;cursor:pointer;background:#fff;border-radius:20px;padding:6px 12px;font-size:13px}.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:30px;height:30px}.swatch.on{border-color:var(--gold);box-shadow:inset 0 0 0 2px #fff}.cards{flex-direction:column;gap:10px;display:flex}.card{background:var(--card);border-radius:var(--radius);overflow:hidden}.card-main{cursor:pointer;padding:12px 14px}.card-top{align-items:center;gap:8px;margin-bottom:6px;display:flex}.badge{color:var(--ink-2);background:#eceef1;border-radius:20px;padding:2px 8px;font-size:11px}.badge.b-已送出{color:#2b5f9e;background:#e6f0fb}.badge.b-已簽約{color:var(--ok);background:#e4f3ec}.badge.b-已結案{color:var(--gold);background:#f1ece4}.card-no{color:var(--ink-3);font-size:11px}.card-name{font-size:17px;font-weight:500}.card-type{color:var(--ink-3);border:1px solid var(--line);border-radius:4px;margin-left:6px;padding:1px 5px;font-size:11px}.card-addr{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.card-bot{justify-content:space-between;align-items:baseline;margin-top:8px;display:flex}.card-amt{color:var(--brand);font-size:19px;font-weight:700}.card-meta{color:var(--ink-3);font-size:11px}.card-acts{border-top:1px solid var(--line);display:flex}.card-acts button{color:var(--ink-2);cursor:pointer;border:0;border-right:1px solid var(--line);background:0 0;flex:1;padding:11px 0;font-size:13px}.card-acts button:last-child{border-right:0}.card-acts .danger{color:var(--danger)}.empty{text-align:center;color:var(--ink-3);padding:40px 20px}.empty-i{font-size:42px}.empty-tip{margin-top:16px;font-size:12px}.empty-sm{text-align:center;color:var(--ink-3);padding:20px;font-size:14px}.sec{background:var(--card);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}.sec-hdr{cursor:pointer;text-align:left;background:#fff;border:0;justify-content:space-between;align-items:center;width:100%;padding:14px;font-size:15px;font-weight:500;display:flex}.sec-hdr.static{cursor:default;border-bottom:1px solid var(--line)}.sec-arrow{color:var(--ink-3)}.sec-body{border-top:1px solid var(--line);padding:12px 14px 14px}.fieldset{margin-bottom:12px}.fieldset>label{color:var(--ink-3);margin-bottom:4px;font-size:12px;display:block}.fieldset input,.fieldset textarea,.fieldset select{border:1px solid var(--line);background:#fff;border-radius:9px;width:100%;padding:10px 11px}.fieldset textarea{resize:vertical;line-height:1.6}.input-wrap{align-items:center;display:flex;position:relative}.input-wrap input{border:1px solid var(--line);border-radius:9px;width:100%;padding:10px 11px}.suffix{color:var(--ink-3);pointer-events:none;font-size:12px;position:absolute;right:10px}.hint{color:var(--ink-3);margin:-4px 0 12px;font-size:12px;line-height:1.6}.hint-box{color:#7a6034;background:#fff8ec;border:1px solid #f0e2c8;border-radius:10px;margin:0 0 12px;padding:10px 12px}.tmpl-box p{color:var(--ink-3);margin:0 0 8px;font-size:13px}.area{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}.area-hdr{border-bottom:1px solid var(--line);background:#f7f8fa;align-items:center;gap:8px;padding:8px 8px 8px 12px;display:flex}.area-input{background:0 0;border:0;flex:1;min-width:0;padding:4px 0;font-size:15px;font-weight:500}.area-sum{color:var(--gold);font-size:13px;font-weight:500}.area-acts{gap:8px;padding:10px;display:flex}.area-acts .btn{flex:1;font-size:13px}.add-area{margin:8px 0 10px}.add-area .area-input{border:1px dashed var(--line);border-radius:9px;width:100%;padding:10px 11px;font-weight:400}.item{border-bottom:1px solid var(--line);padding:8px 10px}.item:last-of-type{border-bottom:0}.item.open{background:#fbfcfd}.item-top{align-items:center;gap:4px;display:flex}.item-name{background:0 0;border:0;flex:1;min-width:0;padding:4px 0;font-size:15px}.item-nums{align-items:center;gap:6px;margin-top:4px;display:flex}.numbox{border:1px solid var(--line);background:#fff;border-radius:8px;flex:1;align-items:center;gap:4px;min-width:0;padding:3px 6px;display:flex}.numbox span{color:var(--ink-3);white-space:nowrap;font-size:11px}.numbox input{text-align:right;background:0 0;border:0;width:100%;min-width:0;padding:5px 0}.numbox.wide{flex:1.4}.unit-sel{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 4px;font-size:13px}.item-amt{text-align:right;min-width:78px;font-size:14px;font-weight:600}.item-more{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}.item-tools{flex-wrap:wrap;gap:6px;display:flex}.item-tools button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;padding:7px 10px;font-size:12px}.item-tools .danger{color:var(--danger);border-color:#f0cfca}.fee{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:10px}.fee-hdr{align-items:center;gap:8px;margin-bottom:8px;display:flex}.fee-label{background:0 0;border:0;flex:1;min-width:0;font-size:14px;font-weight:500}.fee-amt{font-size:14px;font-weight:600}.fee-amt.neg{color:var(--danger)}.fee-val{width:120px}.fee-val input{text-align:right;padding:6px 10px}.total-table{border-top:1px solid var(--line);margin-top:12px;padding-top:8px}.tl{color:var(--ink-2);justify-content:space-between;padding:5px 0;font-size:14px;display:flex}.tl.strong{color:var(--ink);border-top:1px solid var(--line);margin-top:4px;padding-top:8px;font-size:17px}.tl.strong b{color:var(--gold)}.pay-row{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:6px 0;display:flex}.pay-idx{color:var(--ink-3);white-space:nowrap;font-size:12px}.pay-name{background:0 0;border:0;border-bottom:1px solid #0000;flex:1;min-width:0;padding:6px 0}.pay-pct{border:1px solid var(--line);text-align:right;border-radius:7px;width:48px;padding:6px 4px}.pay-unit{color:var(--ink-3);font-size:12px}.pay-amt{text-align:right;min-width:74px;font-size:13px;font-weight:500}.pay-foot{color:var(--ink-2);justify-content:space-between;align-items:center;gap:8px;margin-top:10px;font-size:13px;display:flex}.warn{color:var(--danger)}.bottombar{left:0;right:0;bottom:calc(56px + var(--safe-b));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);z-index:30;background:#fffffff5;align-items:center;gap:12px;max-width:720px;margin:0 auto;padding:10px 14px;display:flex;position:fixed}.bb-total{line-height:1.1}.bb-total span{color:var(--ink-3);font-size:11px;display:block}.bb-total b{color:var(--gold);font-size:19px}.tabbar{height:calc(56px + var(--safe-b));padding-bottom:var(--safe-b);border-top:1px solid var(--line);z-index:40;background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--ink-3);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.tab.on{color:var(--brand);font-weight:500}.tab-i{font-size:19px;line-height:1}.sheet-wrap{z-index:60;background:#14192073;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-width:720px;padding:12px 14px calc(12px + var(--safe-b));border-radius:16px 16px 0 0;flex-direction:column;max-height:88vh;margin:0 auto;display:flex}.sheet-hdr{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.sheet-sub{color:var(--ink-3);margin-left:8px;font-size:12px}.sheet>.search,.sheet>.chips,.sheet-hdr{flex:none}.sheet-body{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.pick-row{text-align:left;cursor:pointer;background:#fff;border:0;border-radius:10px;align-items:center;gap:10px;width:100%;margin-bottom:6px;padding:10px 12px;display:flex}.pick-row.picked{background:#eef6f1}.pick-main{flex:1;min-width:0}.pick-name{font-size:15px}.pick-spec{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.pick-cat{color:var(--ink-3);margin-top:2px;font-size:10px}.pick-right{text-align:right;white-space:nowrap}.pick-price{font-size:15px;font-weight:600}.pick-price small{color:var(--ink-3);font-size:11px;font-weight:400}.pick-range{color:var(--ink-3);font-size:10px}.pick-add{color:var(--brand);margin-top:2px;font-size:11px}.book{flex-direction:column;gap:6px;display:flex}.bk{background:#fff;border-radius:10px;overflow:hidden}.bk-row{cursor:pointer;align-items:center;gap:10px;padding:10px 12px;display:flex}.bk-main{flex:1;min-width:0}.bk-name{font-size:15px}.bk-spec{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.bk-cat{color:var(--ink-3);font-size:10px}.bk-price{text-align:right;white-space:nowrap;font-weight:600}.bk-price small{color:var(--ink-3);font-size:11px;font-weight:400}.bk-range{color:var(--ink-3);font-size:10px;font-weight:400}.bk-edit{border-top:1px solid var(--line);padding:0 12px 12px}.bk-edit label{color:var(--ink-3);margin-top:10px;font-size:12px;display:block}.bk-edit input,.bk-edit select{border:1px solid var(--line);border-radius:8px;width:100%;margin-top:3px;padding:9px 10px}.bk-edit-row{grid-template-columns:90px 1fr;gap:10px;display:grid}.page-foot{margin:16px 0}.logo-row{align-items:center;gap:12px;margin-bottom:14px;display:flex}.logo-box{border:1px dashed var(--line);background:#fafbfc;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:84px;height:84px;display:flex;overflow:hidden}.logo-box.small{width:60px;height:60px}.logo-box img{object-fit:contain;max-width:100%;max-height:100%}.logo-box span{color:var(--ink-3);font-size:11px}.logo-acts{flex-wrap:wrap;gap:8px;display:flex}.preview{background:#55606e;min-height:100vh}.pv-bar{z-index:20;border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:8px;padding:8px 10px;display:flex;position:sticky;top:0}.pv-total{color:var(--gold);flex:1;font-size:15px;font-weight:700}.pv-acts{gap:6px;display:flex}.pv-acts .btn{padding:9px 12px;font-size:13px}.pv-scroll{padding:10px;overflow-x:hidden}.pv-stage{position:relative}.pv-scaler{transform-origin:0 0;width:794px}.overlay{z-index:80;background:#1419208c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay-box{text-align:center;background:#fff;border-radius:14px;padding:24px 30px}.overlay-box p{margin:12px 0 0;font-size:14px}.spinner{border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;width:30px;height:30px;margin:0 auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.measure-layer{visibility:hidden;pointer-events:none;position:fixed;top:0;left:-20000px}.pages{flex-direction:column;gap:14px;display:flex}.a4page{background:#fff;width:794px;height:1123px;position:relative;overflow:hidden;box-shadow:0 4px 16px #00000047}.a4inner{position:absolute;inset:40px 44px 70px}.a4footer{color:#98a1ad;border-top:1px solid #e3e6ea;justify-content:space-between;padding-top:6px;font-size:10px;display:flex;position:absolute;bottom:26px;left:44px;right:44px}.doc{color:#22303f;font-size:12px;line-height:1.5}.doc img{display:block}.doc-block{display:flow-root}.run-header{color:#7b8593;box-sizing:content-box;border-bottom:1px solid;justify-content:space-between;height:26px;margin-bottom:12px;padding-bottom:6px;font-size:10px;display:flex}.doc-header{border-bottom:2px solid;justify-content:space-between;align-items:flex-start;margin-bottom:12px;padding-bottom:12px;display:flex}.dh-left{align-items:flex-start;gap:12px;max-width:60%;display:flex}.dh-logo{object-fit:contain;width:56px;height:56px}.dh-logo-fallback{color:#fff;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:18px;font-weight:700;display:flex}.dh-name{margin-bottom:3px;font-size:17px;font-weight:700}.dh-meta{color:#6a7482;font-size:10.5px;line-height:1.6}.dh-right{text-align:right}.dh-title{letter-spacing:6px;margin-bottom:6px;font-size:24px;font-weight:700}.info-box{background:#f6f7f9;border:1px solid #e3e6ea;border-radius:4px;margin-bottom:12px;padding:10px 12px}.info-grid{flex-wrap:wrap;display:flex}.fld{gap:6px;width:25%;padding:3px 0;font-size:11.5px;display:flex}.fld-wide{width:50%}.fld-wide2{width:75%}.fld-l{color:#8b95a3;white-space:nowrap}.fld-v{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.row{border-bottom:1px solid #eaedf0;align-items:stretch;font-size:11.5px;display:flex}.row-head{color:#fff;border-bottom:0;font-size:11.5px;font-weight:500}.row-head>div{padding:7px 6px}.row-item>div{padding:6px}.row-area{background:#f0f2f5;border-bottom:1px solid #dfe3e8}.row-area .area-name{color:#33404f;padding:5px 6px;font-size:11.5px;font-weight:700}.row-sub{background:#fafbfc;border-bottom:1px solid #dfe3e8;font-weight:600}.c-sub-label{text-align:right;color:#55606e;flex:1;padding:5px 6px;font-size:11px}.c-no{text-align:center;color:#98a1ad;white-space:nowrap;flex-shrink:0;width:38px}.row-head .c-no{font-size:10.5px}.c-name{flex:1;min-width:0}.c-unit{text-align:center;flex-shrink:0;width:40px}.c-qty{text-align:right;flex-shrink:0;width:48px}.c-price{text-align:right;flex-shrink:0;width:74px}.c-amt{text-align:right;flex-shrink:0;width:86px;padding:6px}.it-name{font-weight:500}.it-spec{color:#7b8593;margin-top:1px;font-size:10px}.totals{flex-direction:column;align-items:flex-end;margin-top:12px;display:flex}.tt{border-collapse:collapse;width:320px;font-size:12px}.tt td{border-bottom:1px solid #eaedf0;padding:5px 8px}.tt-num{text-align:right;font-variant-numeric:tabular-nums}.tt-grand td{color:#fff;border-bottom:0;padding:8px;font-size:14px;font-weight:700}.amt-words{color:#55606e;text-align:right;border-top:1px dashed #d7dce2;width:100%;margin-top:8px;padding-top:6px;font-size:11.5px}.per-ping{color:#8b95a3}.sec-title{border-left:3px solid;margin:14px 0 6px;padding-left:7px;font-size:12.5px;font-weight:700}.pay{border-collapse:collapse;width:100%;font-size:11.5px}.pay th{color:#55606e;text-align:left;background:#f0f2f5;border-bottom:1px solid #dfe3e8;padding:5px 8px;font-weight:500}.pay th:nth-child(3),.pay th:nth-child(4){text-align:right}.pay td{border-bottom:1px solid #eaedf0;padding:5px 8px}.bank{color:#55606e;padding-top:6px;font-size:11px}.tline{color:#4a5561;font-size:11px;line-height:1.75}.sign{gap:24px;margin-top:22px;display:flex}.sign-col{flex:1}.sign-label{color:#7b8593;margin-bottom:4px;font-size:11px}.sign-line{border:1px solid #d7dce2;border-radius:3px;align-items:center;height:62px;padding:0 8px;display:flex;position:relative}.sign-company{color:#33404f;font-size:11.5px}.stamp{opacity:.9;height:54px;position:absolute;top:4px;right:10px}.sign-date{color:#7b8593;margin-top:4px;font-size:10.5px}@media print{@page{size:A4;margin:0}body,.app-preview,.preview{background:#fff}.pv-bar,.tabbar,.bottombar,.overlay{display:none!important}.pv-scroll{padding:0;overflow:visible}.pv-stage{height:auto!important}.pv-scaler{width:794px!important;transform:none!important}.pages{gap:0}.a4page{box-shadow:none;page-break-after:always;break-after:page}.a4page:last-child{page-break-after:auto;break-after:auto}}@media (width<=380px){.item-amt{min-width:66px;font-size:13px}}.notice{color:#7a6034;text-align:center;background:#fff5e0;border-bottom:1px solid #f0dcb4;padding:9px 14px;font-size:12px;line-height:1.6}.contract-vars{margin-bottom:12px}.contract-toolbar{border:1px solid var(--line);background:var(--tint);border-bottom:0;flex-wrap:wrap;gap:8px;padding:8px;display:flex}.contract-toolbar .btn{min-width:38px;padding:7px 10px}.contract-toolbar label{align-items:center;gap:6px;margin:0;font-size:12px;font-weight:700;display:flex}.contract-toolbar select{background-color:var(--paper);width:auto;min-width:88px;padding:7px 30px 7px 9px}.contract-toolbar+textarea{border-top-left-radius:0;border-top-right-radius:0}.payment-editor{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:18px 0;padding:14px 0}.payment-editor-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.payment-row{grid-template-columns:minmax(120px,.8fr) minmax(180px,1.5fr) 100px 120px;align-items:center;gap:8px;margin-bottom:8px;display:grid}.payment-row label{align-items:center;gap:4px;display:flex}.payment-row strong{text-align:right;font-variant-numeric:tabular-nums}.review-lock,.verify-box{border:1px solid var(--line);background:var(--tint);border-radius:var(--radius);flex-direction:column;gap:7px;margin-bottom:14px;padding:14px;display:flex}.verify-row{grid-template-columns:1fr auto;gap:8px;display:grid}.verified-ok{color:var(--brand-soft);font-weight:700}@media (width<=767px){.payment-row{border-bottom:1px solid var(--line);grid-template-columns:1fr 88px;padding:10px 0}.payment-row input:nth-child(2){grid-area:2/1/auto/-1}.payment-row strong{grid-area:1/2}}.list{flex-direction:column;gap:10px;padding:0 16px 100px;display:flex}.err-text{color:#b42318;margin:6px 0;font-size:13px}.note-text{background:#f2f6fb;border-radius:8px;margin:8px 0;padding:10px 12px;font-size:13px}.muted{color:var(--ink-3)}.small{font-size:12px}.w-full{width:100%;margin-top:8px}.row2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sheet{background:#fff;border-radius:16px 16px 0 0;align-self:flex-end;width:100%;max-width:520px;max-height:90vh;padding:18px 16px 24px;overflow:auto}@media (width>=640px){.sheet{border-radius:16px;align-self:center}}.sheet-title{margin-bottom:12px;font-size:18px;font-weight:700}.btn-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.share{margin-top:8px}.share-url{border:1px solid var(--line);background:#f8f9fb;border-radius:8px;width:100%;padding:8px 10px;font-size:12px}.pj-title{padding:0 16px;font-size:20px;font-weight:700}.page>.muted,.page>.note-text,.page>.err-text{margin-left:16px;margin-right:16px}.signed-block{background:#f3fbf6;border:1px solid #c9e7d3;border-radius:10px;padding:10px 12px}.signed-ok{color:#157f3b;font-weight:700}.signed-img{background:#fff;border-radius:6px;max-width:240px;max-height:100px;margin:6px 0;display:block}.sigpad{border:1.5px dashed var(--line);background:#fff;border-radius:12px;margin:8px 0;position:relative}.sigpad-canvas{touch-action:none;width:100%;height:180px;display:block}.sigpad-hint{color:#b7bcc6;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.sigpad-clear{padding:4px 10px;font-size:12px;position:absolute;top:6px;right:6px}.sign-page{background:#f4f5f7;max-width:820px;min-height:100vh;margin:0 auto;padding:0 0 40px}.sign-hdr{padding:18px 16px 12px}.sign-hdr h1{margin:2px 0;font-size:20px;font-weight:700}.sign-doc-wrap{margin:0 4px;overflow:hidden}.sign-box{background:#fff;border-radius:14px;margin:16px 12px;padding:16px;box-shadow:0 1px 3px #0000000f}.sign-box h2{margin-bottom:10px;font-size:16px;font-weight:700}.sign-agree{align-items:flex-start;gap:8px;margin:10px 0;font-size:13px;line-height:1.5;display:flex}.sign-agree input{margin-top:3px}.sign-submit{width:100%}.sign-center{text-align:center;background:#f4f5f7;justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.sign-done h1{margin:8px 0;font-size:20px;font-weight:700}.sign-done-i{color:#fff;background:#157f3b;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto;font-size:34px;display:flex}.login-card{text-align:left;background:#fff;border-radius:16px;width:100%;max-width:380px;padding:24px 20px;box-shadow:0 2px 10px #0000000f}.login-card h1{margin-bottom:4px;font-size:22px;font-weight:700}.contract-doc{background:#fff;border-radius:12px;margin:0 12px;padding:20px 18px}.contract-logo{object-fit:contain;width:72px;height:72px;margin:0 auto 12px;display:block}.contract-text{white-space:pre-wrap;font-family:inherit;font-size:14px;line-height:1.8}.contract-sign{border-top:1px solid var(--line);margin-top:24px;padding-top:12px}@media print{.no-print,.tabbar{display:none!important}.contract-doc{margin:0}}.gantt{border:1px solid var(--line);background:#fff;border-radius:10px;margin-top:10px;font-size:12px;display:flex;overflow:hidden}.gantt-names{border-right:1px solid var(--line);background:#fafbfc;flex:0 0 184px}.gantt-scroll{flex:1;overflow-x:auto}.gantt-head{border-bottom:1px solid var(--line);height:54px;position:relative}.gantt-label-head{color:var(--ink-3);align-items:flex-end;padding:0 10px 9px;font-size:10px;font-weight:700;display:flex}.gantt-month{white-space:nowrap;padding-left:3px;font-weight:700;position:absolute;top:3px}.gantt-day{border-left:1px solid var(--line);text-align:center;height:34px;color:var(--ink-3);flex-direction:column;justify-content:center;align-items:center;font-size:10px;display:flex;position:absolute;top:20px}.gantt-day small{font-size:8px}.gantt-day.weekend,.gantt-cell.weekend{background:color-mix(in oklab,var(--tint) 55%,transparent)}.gantt-day.is-today{color:var(--brand);background:#dce9a5;font-weight:800}.gantt-name,.gantt-row{border-bottom:1px solid #f0f1f3;height:48px}.gantt-name{cursor:pointer;flex-direction:column;justify-content:center;padding:0 8px;display:flex}.gantt-name b{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.gantt-name small{color:var(--ink-3)}.gantt-row{cursor:pointer;position:relative}.gantt-cell{border-left:1px solid var(--line);position:absolute;top:0;bottom:0}.gantt-bar{background:#dce5df;border-radius:4px;height:24px;position:absolute;top:12px;overflow:hidden}.gantt-bar span{z-index:2;color:var(--ink);white-space:nowrap;align-items:center;padding:0 7px;font-size:9px;font-weight:700;display:flex;position:absolute;inset:0;overflow:hidden}.gantt-bar.active{background:#d9e7bc}.gantt-bar.done{background:var(--brand)}.gantt-bar.done span{color:var(--card)}.gantt-bar.overdue{background:#f4d9cd}.gantt-bar.conflict{box-shadow:inset 0 0 0 2px var(--danger)}.gantt-fill{background:color-mix(in oklab,var(--brand-soft) 34%,transparent);height:100%}.gantt-today{background:#a6b94d;width:2px;position:absolute;top:54px;bottom:0}@media (width<=900px){.schedule-stats,.schedule-project-grid{grid-template-columns:1fr 1fr}.schedule-workspace{display:block}.schedule-project-rail{gap:8px;margin-bottom:14px;display:flex;position:static;overflow-x:auto}.rail-title{display:none}.schedule-rail-card{flex:0 0 190px}.schedule-workspace-page>.hdr .btn-row{justify-content:flex-end}}@media (width<=600px){.schedule-page-head{grid-template-columns:minmax(0,1fr) auto!important;align-items:start!important;display:grid!important}.schedule-page-head h1{line-height:1.35;font-size:26px!important}.schedule-page-head p{grid-column:1/-1}.schedule-stats{gap:9px}.schedule-stat{min-height:100px;padding:15px}.schedule-project-grid{grid-template-columns:1fr}.schedule-project-title{grid-template-columns:minmax(0,1fr) auto;padding:15px}.schedule-project-title .btn{padding:10px;font-size:12px}.schedule-tools{grid-template-columns:minmax(0,1fr) auto}.schedule-tools select:last-of-type{grid-column:1}.schedule-today{grid-column:2}.schedule-workspace-main .sec{margin-left:0;margin-right:0}.schedule-workspace-main .sec-body{padding:12px}.gantt-names{flex-basis:145px}.schedule-task-table>button{grid-template-columns:minmax(0,1fr) auto}.schedule-task-table>button>span:nth-child(2){grid-column:1}.schedule-task-table>button>em{grid-area:2/2}.schedule-legend{flex-wrap:wrap}.schedule-legend b{width:100%;margin-left:0}.schedule-shift{width:100%}}.progress-big{align-items:center;gap:10px;margin:8px 0;display:flex}.progress-big-bar{background:#e6e9ee;border-radius:6px;flex:1;height:10px;overflow:hidden}.progress-big-bar>div{background:#1f6f4a;height:100%}.task-list{margin:12px 0 0;padding:0;list-style:none}.task-list li{border-bottom:1px solid #f0f1f3;grid-template-columns:1fr auto 44px;gap:8px;padding:9px 2px;font-size:14px;display:grid}.task-list small{color:var(--ink-3)}.task-list b{text-align:right}.portal{padding-bottom:40px}.schedule-page-head .schedule-kicker,.schedule-kicker{color:var(--brand-soft);letter-spacing:.12em;font-size:10px;font-weight:800}.schedule-page-head p{margin:7px 0 0;font-size:13px}.schedule-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px;display:grid}.schedule-stat{border:1px solid var(--line);background:var(--card);border-radius:8px;min-height:104px;padding:17px 18px}.schedule-stat>div{color:var(--ink-3);justify-content:space-between;align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex}.schedule-stat svg{width:18px;height:18px;color:var(--brand-soft)}.schedule-stat b{margin-top:14px;font-family:Sora,Noto Sans TC,sans-serif;font-size:28px;display:block}.schedule-stat.warn b,.schedule-stat.warn svg{color:var(--danger)}.schedule-project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding-bottom:56px;display:grid}.schedule-project-card{border:1px solid var(--line);border-left:4px solid var(--brand-soft);background:var(--card);min-width:0;color:var(--ink);text-align:left;cursor:pointer;border-radius:8px;padding:18px;display:block}.schedule-project-card:hover{border-color:var(--brand-soft);background:color-mix(in oklab,var(--tint) 38%,var(--card))}.schedule-project-card>small{color:var(--ink-3);font-size:9px;font-weight:700}.schedule-project-card .card-main{padding:10px 0 14px}.schedule-project-card .card-name{font-size:16px}.schedule-project-progress{color:var(--ink-3);justify-content:space-between;font-size:11px;display:flex}.schedule-project-progress b{color:var(--ink)}.schedule-project-track,.schedule-rail-card>i{background:var(--tint);border-radius:3px;height:5px;margin-top:8px;display:block;overflow:hidden}.schedule-project-track i,.schedule-rail-card>i u{background:var(--brand-soft);height:100%;text-decoration:none;display:block}.schedule-create-project{color:var(--brand-soft);margin-top:17px;font-size:12px;font-weight:700}.schedule-create-project svg{vertical-align:middle;width:14px}.schedule-workspace-page{max-width:1440px!important}.schedule-workspace{grid-template-columns:224px minmax(0,1fr);align-items:start;gap:18px;display:grid}.schedule-project-rail{position:sticky;top:18px}.rail-title{justify-content:space-between;margin:0 0 9px;font-size:12px;font-weight:800;display:flex}.rail-title span{background:var(--tint);border-radius:4px;padding:2px 6px}.schedule-rail-card{border:1px solid var(--line);background:var(--card);width:100%;color:var(--ink);text-align:left;cursor:pointer;border-radius:8px;margin-bottom:9px;padding:14px;display:block}.schedule-rail-card.on{border-color:var(--brand-soft);border-left:4px solid var(--brand-soft);background:var(--tint)}.schedule-rail-card small,.schedule-rail-card span{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:10px;display:block;overflow:hidden}.schedule-rail-card b{margin:7px 0;font-size:14px;display:block}.schedule-rail-card>div{justify-content:space-between;margin-top:12px;font-size:10px;display:flex}.schedule-rail-card em{color:var(--ink-3);font-style:normal}.schedule-rail-card strong{font-size:10px}.schedule-workspace-main{min-width:0}.schedule-project-title{border:1px solid var(--line);background:var(--card);border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;margin-bottom:14px;padding:18px 20px;display:grid}.schedule-project-title .pj-title{margin:5px 0 2px;padding:0}.schedule-project-title p{margin:0;font-size:12px}.schedule-tools{grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:8px;margin-bottom:10px;display:grid}.schedule-tools select{border:1px solid var(--line);background:var(--card);border-radius:7px;height:38px;padding:0 30px 0 10px;font-size:12px}.schedule-today{border:1px solid var(--line);height:38px;margin:0!important}.schedule-segments{display:flex}.schedule-segments button{background:var(--bg);color:var(--ink-3);cursor:pointer;border:0;align-items:center;gap:6px;padding:9px 12px;font-size:12px;display:inline-flex}.schedule-segments button:first-child{border-radius:7px 0 0 7px}.schedule-segments button:last-child{border-radius:0 7px 7px 0}.schedule-segments button.on{background:var(--brand);color:var(--card)}.schedule-segments svg{width:15px;height:15px}.schedule-shift{border:1px solid var(--line);border-radius:8px;align-items:center;display:flex;overflow:hidden}.schedule-shift input{border:0;width:58px;padding:8px}.schedule-shift span{color:var(--ink-3);font-size:12px}.schedule-shift .btn{border-radius:0;margin:0;padding:8px}.schedule-pdf-actions{flex-wrap:wrap;gap:8px;display:flex}.schedule-pdf-actions .btn{align-items:center;gap:6px;display:inline-flex}.schedule-pdf-actions svg{width:15px;height:15px}.schedule-task-table{border:1px solid var(--line);border-radius:8px;overflow:hidden}.schedule-task-table>button{border:0;border-top:1px solid var(--line);background:var(--card);width:100%;color:var(--ink);text-align:left;cursor:pointer;grid-template-columns:minmax(150px,1fr) 210px 60px auto;align-items:center;gap:12px;padding:12px;display:grid}.schedule-task-table>button:first-child{border-top:0}.schedule-task-table span:first-child small{color:var(--ink-3);margin-top:3px;display:block}.schedule-task-table span:nth-child(3){background:var(--tint);text-align:center;border-radius:5px;padding:4px 7px}.schedule-task-table .active{color:var(--ok);background:#eaf5ee}.schedule-task-table .done{background:var(--brand);color:var(--card)}.schedule-task-table .overdue{color:var(--danger);background:#fff0eb}.schedule-task-table em{color:var(--danger);background:#fff0eb;border-radius:4px;padding:3px 6px;font-size:10px;font-style:normal}.schedule-legend{color:var(--ink-3);align-items:center;gap:14px;padding:12px 2px 0;font-size:10px;display:flex}.schedule-legend span:before{content:"";background:#dce5df;border-radius:2px;width:7px;height:7px;margin-right:5px;display:inline-block}.schedule-legend .active:before{background:#86b36b}.schedule-legend .done:before{background:var(--brand)}.schedule-legend .overdue:before{background:#d9784a}.schedule-legend b{color:var(--ink-3);margin-left:auto}.dash-stats{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:4px;display:grid}.dash-stat{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:12px;padding:12px 6px}.dash-num{font-size:22px;font-weight:700}.dash-label{color:var(--ink-2);margin-top:2px;font-size:12px}.dash-rows{flex-direction:column;gap:3px;margin-top:8px;display:flex}.dash-row{align-items:baseline;gap:8px;font-size:13px;display:flex}.dash-k{color:var(--ink-2);flex:none;width:32px}.dash-ok{color:var(--ok);font-weight:600}.dash-wait{color:#b45309}.dash-bar-wrap{align-items:center;gap:8px;margin-top:8px;display:flex}.dash-bar{background:var(--line);border-radius:99px;flex:1;height:8px;overflow:hidden}.dash-bar-fill{background:var(--brand);border-radius:99px;height:100%;transition:width .3s}.dash-progress-wrap{grid-template-columns:56px minmax(0,1fr);align-items:center;gap:14px;margin-top:16px;display:grid}.dash-ring{place-items:center;width:56px;height:56px;display:grid;position:relative}.dash-ring svg{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.dash-ring circle{fill:none;stroke-width:5px}.dash-ring-track{stroke:var(--line)}.dash-ring-value{stroke:var(--brand-soft);stroke-linecap:round;transition:stroke-dasharray .4s}.dash-ring strong{font-family:Sora,Noto Sans TC,sans-serif;font-size:12px}.dash-progress-detail{min-width:0}.dash-progress-detail>div:first-child{justify-content:space-between;margin-bottom:7px;font-size:11px;display:flex}.dash-progress-detail span{color:var(--ink-3)}.dash-progress-detail strong{color:var(--ink-2)}.dash-card-link{color:var(--brand-soft);align-items:center;gap:3px;font-size:12px;font-weight:700;display:flex}.dash-card-link svg{width:14px;height:14px}.dash-project-card .card-bot{background:var(--brand);color:#fff;border-radius:0 0 12px 12px;align-items:center;margin:16px 0 0;padding:14px 20px 15px}.dash-footer-amt{flex-direction:column;gap:1px;display:flex}.dash-footer-label{letter-spacing:.08em;color:oklab(100% 0 5.96046e-8/.58);font-size:10px;font-weight:500}.dash-footer-num{color:#fff;letter-spacing:-.01em;font-family:Sora,Noto Sans TC,sans-serif;font-size:21px;font-weight:700;line-height:1.15}.dash-project-card .dash-card-link{color:#fff;white-space:nowrap;background:oklab(100% 0 5.96046e-8/.12);border:1px solid oklab(100% 0 5.96046e-8/.2);border-radius:11px;align-items:center;gap:5px;padding:8px 14px;font-size:12px;font-weight:600;transition:background .25s;display:inline-flex}.dash-project-card .dash-card-link svg{width:14px;height:14px;transition:transform .25s}.dash-project-card:hover .dash-card-link{background:oklab(100% 0 5.96046e-8/.2)}.dash-project-card:hover .dash-card-link svg{transform:translate(2px)}.app:not(.app-preview){background:var(--bg);min-height:100vh;padding:0;display:flex}.app-main{flex:1;min-width:0;margin-left:248px}.sidebar{z-index:45;background:var(--brand);width:248px;color:var(--card);flex-direction:column;padding:28px 20px 22px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar-brand{align-items:center;gap:12px;padding:0 8px 32px;display:flex}.sidebar-mark{border:1px solid color-mix(in oklab, var(--tint) 35%, transparent);background:color-mix(in oklab, var(--brand-soft) 55%, transparent);border-radius:8px;flex:none;place-items:center;width:40px;height:40px;display:grid}.sidebar-mark img{object-fit:contain;width:31px;height:31px}.sidebar-brand strong{text-overflow:ellipsis;white-space:nowrap;max-width:155px;font-family:Sora,Noto Sans TC,sans-serif;font-size:17px;line-height:1.3;display:block;overflow:hidden}.sidebar-brand span{color:color-mix(in oklab, var(--tint) 68%, transparent);letter-spacing:0;margin-top:4px;font-size:9px;font-weight:700;display:block}.sidebar-nav{flex-direction:column;flex:1;gap:5px;display:flex}.sidebar-link{width:100%;min-height:46px;color:color-mix(in oklab, var(--card) 68%, transparent);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:13px;padding:0 14px;font-size:14px;font-weight:600;transition:background-color .18s,color .18s;display:flex}.sidebar-link svg{flex:none;width:19px;height:19px}.sidebar-link:hover{background:color-mix(in oklab, var(--card) 7%, transparent);color:var(--card)}.sidebar-link.on{background:var(--brand-soft);color:var(--card)}.sidebar-foot{border-top:1px solid color-mix(in oklab, var(--card) 12%, transparent);color:color-mix(in oklab, var(--card) 44%, transparent);padding:18px 8px 0;font-size:11px}.app:not(.app-preview)>.tabbar,.mobile-brandbar{display:none}.app-main>.page{width:100%;max-width:1240px;margin:0 auto;padding:0 36px 56px}.app-main>.page>.hdr{border-bottom:1px solid var(--line);background:var(--card);min-height:88px;margin:0 -36px 28px;padding:0 36px}.app-main>.page>.hdr h1{font-size:26px}.app-main .hdr-sub{color:var(--brand-soft);font-weight:700}.btn{border-radius:8px;transition:background-color .18s,border-color .18s,color .18s,transform .18s}.btn svg{width:17px;height:17px}.btn-primary{background:var(--brand);color:var(--card)}.btn-primary:hover{background:var(--brand-soft)}.btn-soft,.btn-ghost:hover{background:var(--tint);color:var(--brand)}.stats{gap:18px;margin-bottom:24px}.stat{border:1px solid var(--line);text-align:left;min-height:104px;box-shadow:0 8px 24px color-mix(in oklab, var(--brand) 5%, transparent);border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;padding:20px 22px;display:flex}.stat:first-child{background:var(--tint);border-color:color-mix(in oklab, var(--brand-soft) 18%, transparent)}.stat b{font-family:Sora,Noto Sans TC,sans-serif;font-size:28px;line-height:1.2}.stat .stat-money{color:var(--brand-soft);font-size:24px}.stat span{color:var(--ink-2);order:-1;margin-bottom:7px;font-size:12px;font-weight:600}.quote-toolbar{max-width:420px;margin-bottom:12px;position:relative}.quote-toolbar .search{background:var(--card);padding-left:40px}.search-icon{width:17px;height:17px;color:var(--ink-3);pointer-events:none;position:absolute;top:12px;left:13px}.chips{margin-bottom:22px}.chip{background:0 0;border-radius:7px}.chip:hover{background:var(--tint);color:var(--brand)}.chip.on{background:var(--brand);color:var(--card)}.quote-records{border:1px solid var(--line);background:var(--card);box-shadow:0 8px 28px color-mix(in oklab, var(--brand) 5%, transparent);border-radius:8px;gap:0;overflow:hidden}.quote-table-head,.quote-row .card-main{grid-template-columns:minmax(130px,.8fr) minmax(190px,1.35fr) minmax(190px,1.5fr) minmax(110px,.75fr) 90px 115px;align-items:center;display:grid}.quote-table-head{background:var(--bg);min-height:46px;color:var(--ink-3);grid-template-columns:minmax(130px,.8fr) minmax(190px,1.35fr) minmax(190px,1.5fr) minmax(110px,.75fr) 90px 115px 112px;padding:0 12px 0 20px;font-size:11px;font-weight:700}.quote-row{border-top:1px solid var(--line);border-radius:0;align-items:stretch;display:flex;overflow:visible}.quote-table-head+.quote-row{border-top:0}.quote-row .card-main{flex:1;min-width:0;padding:18px 20px}.quote-row .card-main:hover{background:color-mix(in oklab, var(--tint) 42%, transparent)}.quote-row .card-top{margin:0;display:block}.quote-row .card-no{color:var(--brand-soft);font-size:12px;font-weight:700}.quote-row .card-name{min-width:0;padding-right:14px;font-size:14px;font-weight:700}.quote-row .card-type{border:0;width:fit-content;margin:4px 0 0;padding:0;display:block}.quote-row .card-addr{min-width:0;margin:0;padding-right:18px;font-size:12px}.quote-row .card-bot{display:contents}.quote-row .card-amt{color:var(--ink);font-family:Sora,Noto Sans TC,sans-serif;font-size:14px}.quote-row .card-meta{grid-column:6;font-size:11px}.quote-row .badge{grid-area:1/5;width:fit-content}.quote-row .card-acts{border:0;justify-content:flex-end;align-items:center;width:112px;padding-right:12px;display:flex}.quote-row .card-acts button{border:0;border-radius:6px;flex:none;place-items:center;width:30px;height:34px;padding:0;display:grid}.quote-row .card-acts button:hover{background:var(--tint);color:var(--brand)}.quote-row .card-acts svg{width:15px;height:15px}.quote-row .card-acts span{display:none}.list{padding:0 0 56px}.app-main .list .card,.app-main .sec{border:1px solid var(--line);box-shadow:0 6px 22px color-mix(in oklab, var(--brand) 4%, transparent)}.settings-signout{max-width:1240px;margin:0 auto;padding:0 36px 56px}.settings-signout .btn{width:100%}.dash-stats{gap:16px;margin-bottom:12px}.dash-stat{text-align:left;border-radius:8px;flex-direction:column;justify-content:center;min-height:108px;padding:18px;display:flex}.dash-num{font-family:Sora,Noto Sans TC,sans-serif;font-size:28px}.dash-label{order:-1;margin:0 0 6px}@media (width<=960px){.quote-table-head{display:none}.quote-records{box-shadow:none;background:0 0;border:0;gap:10px;overflow:visible}.quote-row{border:1px solid var(--line);border-radius:8px;display:block;overflow:hidden}.quote-row .card-main{grid-template-columns:1fr auto;gap:5px 12px;display:grid}.quote-row .card-top,.quote-row .card-name,.quote-row .card-addr{grid-column:1}.quote-row .card-bot{grid-column:1/-1;display:flex}.quote-row .badge{grid-area:1/2}.quote-row .card-acts{border-top:1px solid var(--line);justify-content:stretch;width:100%;padding:0}.quote-row .card-acts button{border-radius:0;flex:1;width:auto}.quote-row .card-acts span{display:inline}}@media (width<=767px){.app:not(.app-preview){padding-bottom:calc(94px + var(--safe-b));display:block}.sidebar{display:none}.app-main{margin-left:0}.mobile-brandbar{z-index:1;min-height:104px;padding:calc(18px + env(safe-area-inset-top,0px)) 20px 26px;background:var(--brand);color:var(--card);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;display:grid;position:relative;overflow:hidden}.mobile-brandbar:after{content:"";background:color-mix(in oklab, var(--brand-soft) 45%, transparent);pointer-events:none;border-radius:50%;width:150px;height:150px;position:absolute;top:-74px;right:-48px}.mobile-brandbar-id{align-items:center;gap:11px;min-width:0;display:flex}.mobile-brandbar-mark{border:1px solid color-mix(in oklab, var(--card) 28%, transparent);background:color-mix(in oklab, var(--card) 11%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:9px;flex:none;place-items:center;width:42px;height:42px;display:grid}.mobile-brandbar-mark img{object-fit:contain;width:32px;height:32px}.mobile-brandbar-copy{min-width:0}.mobile-brandbar-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:16px;display:block;overflow:hidden}.mobile-brandbar-copy span{color:color-mix(in oklab, var(--card) 62%, transparent);margin-top:3px;font-size:11px;font-weight:600;display:block}.mobile-brandbar-status{z-index:1;border:1px solid color-mix(in oklab, var(--card) 20%, transparent);background:color-mix(in oklab, var(--card) 8%, transparent);border-radius:50%;flex:none;place-items:center;width:38px;height:38px;display:grid;position:relative}.mobile-brandbar-status span{border:2px solid var(--brand);background:#64d49a;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 4px oklab(78.8899% -.124129 .0487918/.18)}.app-main>.page{max-width:720px;padding:12px 14px 0}.app-main>.page>.hdr{background:0 0;border:0;min-height:auto;margin:0;padding:10px 2px 14px}.app-main>.page>.hdr h1{font-size:24px}.stats{gap:8px;margin-bottom:12px}.stat{text-align:center;min-height:82px;box-shadow:none;align-items:center;padding:10px}.stat b{font-size:20px}.stat .stat-money{font-size:15px}.stat span{order:0;margin:3px 0 0;font-size:11px}.quote-toolbar{max-width:none;margin-bottom:8px}.chips{flex-wrap:nowrap;margin-bottom:10px;overflow-x:auto}.quote-records{gap:10px}.quote-row .card-main{padding:12px 14px;display:block}.quote-row .badge{float:left;margin-right:8px}.quote-row .card-top{display:flex}.quote-row .card-type{margin-left:6px;display:inline}.quote-row .card-bot{display:flex}.quote-row .card-acts button{height:42px}.quote-row .card-acts svg{display:none}.list{padding:0 0 100px}.settings-signout{padding:0 16px 96px}.dashboard-page{margin-top:-12px}.dashboard-page>.hdr{padding-top:18px}.dashboard-page>.hdr h1{font-size:22px}.dashboard-page .hdr-sub{color:var(--ink-3);margin:3px 0 0;font-size:12px}.dash-refresh{border:1px solid var(--line);background:var(--card);width:42px;height:42px;box-shadow:0 7px 18px color-mix(in oklab, var(--brand) 7%, transparent);border-radius:10px;padding:0}.dash-refresh span{display:none}.dash-stats{scrollbar-width:none;grid-template-columns:repeat(4,minmax(68px,1fr));gap:7px;margin:0 -14px;padding:0 14px 4px;overflow-x:auto}.dash-stats::-webkit-scrollbar{display:none}.dash-stat{text-align:center;min-width:72px;min-height:76px;box-shadow:0 8px 22px color-mix(in oklab, var(--brand) 5%, transparent);border-radius:10px;align-items:center;padding:10px 4px}.dash-stat:first-child{background:var(--brand);color:var(--card);border-color:var(--brand)}.dash-stat:first-child .dash-label{color:color-mix(in oklab, var(--card) 65%, transparent)}.dash-num{font-size:21px}.dash-label{white-space:nowrap;font-size:10px}.dash-total{border:1px solid var(--line);background:color-mix(in oklab, var(--card) 82%, transparent);min-height:48px;box-shadow:0 8px 22px color-mix(in oklab, var(--brand) 4%, transparent);border-radius:10px;justify-content:space-between;align-items:center;margin:9px 0 22px;padding:0 14px;display:flex}.dash-total span{color:var(--ink-3);font-size:11px;font-weight:600}.dash-total strong{color:var(--brand-soft);font-family:Sora,Noto Sans TC,sans-serif;font-size:15px}.dash-section-head{justify-content:space-between;align-items:end;margin-bottom:11px;display:flex}.dash-section-head div>span{color:var(--brand-soft);margin-bottom:2px;font-size:10px;font-weight:800;display:block}.dash-section-head h2{margin:0;font-family:Sora,Noto Sans TC,sans-serif;font-size:18px}.dash-section-head>span{color:var(--ink-3);font-size:11px}.dashboard-page .list{gap:12px}.app-main .list .dash-project-card{width:100%;color:var(--ink);text-align:left;box-shadow:0 10px 28px color-mix(in oklab, var(--brand) 7%, transparent);border-radius:14px;padding:0;overflow:hidden}.dash-project-card .card-main{cursor:pointer;padding:15px}.dash-project-card .card-top{grid-template-columns:minmax(0,1fr) auto;align-items:start;margin:0;display:grid}.dash-project-title{min-width:0}.dash-project-title .card-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;display:block;overflow:hidden}.dash-project-title .card-addr{margin-top:3px;font-size:11px;display:block}.dash-project-card .badge{border-radius:6px;margin:0;padding:4px 8px;font-size:10px;font-weight:700}.dash-project-card .dash-rows{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:5px 8px;margin-top:13px;padding-top:11px;display:grid}.dash-project-card .dash-row{min-width:0;font-size:11px}.dash-project-card .dash-row:nth-child(3){grid-column:1/-1}.dash-project-card .dash-k{width:auto}.dash-progress-wrap{grid-template-columns:52px minmax(0,1fr);gap:12px;margin-top:14px}.dash-ring{width:52px;height:52px}.dash-ring strong,.dash-progress-detail>div:first-child{font-size:10px}.dash-card-link{font-size:11px}.dash-project-card .card-bot{background:var(--brand);border-radius:0 0 12px 12px;align-items:center;min-height:52px;margin:14px 0 0;padding:11px 15px 12px}.dash-project-card .dash-footer-num{font-size:18px}.dash-project-card .card-amt{font-size:13px}.dash-card-link{color:var(--brand-soft);align-items:center;gap:3px;font-size:11px;font-weight:700;display:flex}.dash-card-link svg{width:13px;height:13px}.tabbar{left:14px;right:14px;bottom:calc(12px + var(--safe-b));border:1px solid color-mix(in oklab, var(--card) 14%, transparent);background:color-mix(in oklab, var(--brand) 94%, transparent);height:64px;box-shadow:0 18px 42px color-mix(in oklab, var(--brand) 38%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:18px;padding:0 6px}.app:not(.app-preview)>.tabbar{display:flex}.tab{min-width:0;color:color-mix(in oklab, var(--card) 42%, transparent);gap:2px;font-size:9px;font-weight:600}.tab.on{color:#77d4a2}.tab-i{height:20px}.tab-i svg{width:18px;height:18px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.auth-screen{--auth-ink:#0f3f4c;--auth-ink-2:#4c6f7a;--auth-green:#16795a;--auth-green-soft:#4fbe8f;--auth-blue:#1f6fa8;--auth-blue-soft:#6cb6e3;--auth-strong:linear-gradient(120deg, #16795a, #1f6fa8);--auth-tint:#e6f3ee;--auth-tint-2:#e6f0f9;min-height:100vh;padding:28px 16px calc(28px + var(--safe-b));background:linear-gradient(165deg,#f1f9f4 0%,#eaf4f6 48%,#e9f1fb 100%);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.auth-screen:before{content:"";opacity:.16;pointer-events:none;background-image:radial-gradient(#2f8fa8 .5px,#0000 .5px);background-size:24px 24px;animation:26s linear infinite auth-grid;position:fixed;inset:0}@keyframes auth-grid{0%{background-position:0 0}to{background-position:24px 24px}}.auth-bg{pointer-events:none;position:fixed;inset:0;overflow:hidden}.auth-bg .bg-blob{filter:blur(60px);opacity:.55;will-change:transform;border-radius:999px;position:absolute}.auth-bg .bg-blob-a{background:radial-gradient(circle,#4fbe8f66,#0000 68%);width:46vmax;height:46vmax;animation:22s ease-in-out infinite alternate auth-drift-a;top:-12%;left:-10%}.auth-bg .bg-blob-b{background:radial-gradient(circle,#6cb6e366,#0000 66%);width:52vmax;height:52vmax;animation:28s ease-in-out infinite alternate auth-drift-b;bottom:-16%;right:-12%}@keyframes auth-drift-a{0%{transform:translate(0)scale(1)}to{transform:translate(9vmax,6vmax)scale(1.12)}}@keyframes auth-drift-b{0%{transform:translate(0)scale(1.05)}to{transform:translate(-8vmax,-7vmax)scale(.94)}}.auth-bg .bg-shape{will-change:transform, opacity;border:1.5px solid #6cb6e36b;border-radius:20px;position:absolute}.auth-bg .bg-shape-a{border-color:#4fbe8f6b;width:132px;height:132px;animation:16s ease-in-out infinite alternate auth-shape-a;top:12%;left:7%;transform:rotate(-8deg)}.auth-bg .bg-shape-b{width:180px;height:180px;animation:19s ease-in-out infinite alternate auth-shape-b;bottom:14%;right:9%;transform:rotate(10deg)}@keyframes auth-shape-a{0%{opacity:.7;transform:rotate(-14deg)translateY(0)}to{opacity:1;transform:rotate(-2deg)translateY(-26px)}}@keyframes auth-shape-b{0%{opacity:1;transform:rotate(4deg)translateY(0)}to{opacity:.6;transform:rotate(16deg)translateY(-32px)}}.auth-bg .bg-beam{background:linear-gradient(#0000,#4fbe8f80,#6cb6e380,#0000);width:1.5px;height:150%;animation:9s ease-in-out infinite auth-beam;position:absolute;top:-20%;left:55%;transform:rotate(14deg)}@keyframes auth-beam{0%,to{opacity:0;transform:rotate(14deg)translate(0)}50%{opacity:1;transform:rotate(14deg)translate(-40px)}}@media (width<=767px){.auth-bg .bg-shape-a{width:96px;height:96px}.auth-bg .bg-shape-b{width:130px;height:130px;right:-14%}.auth-bg .bg-beam{display:none}}.auth-wrap{width:100%;max-width:384px;animation:.5s both auth-in;position:relative}@keyframes auth-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.auth-card{background:var(--card);border-radius:24px;padding:46px 30px 26px;position:relative;overflow:hidden;box-shadow:0 20px 50px #17795a1c}.auth-card:before{content:"";background:var(--auth-strong);border-radius:999px;width:96px;height:6px;position:absolute;top:-3px;left:50%;transform:translate(-50%)}.auth-card:after{content:"";background:var(--auth-tint-2);border-radius:999px;width:132px;height:132px;position:absolute;top:-44px;right:-44px}.auth-mark{background:var(--auth-strong);border-radius:18px;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 22px;display:flex;position:relative;box-shadow:0 10px 24px #1f6fa847}.auth-mark img{object-fit:contain;width:40px;height:40px}.auth-title{text-align:center;letter-spacing:-.01em;color:var(--auth-ink);margin:0 0 6px;font-family:Sora,Noto Sans TC,sans-serif;font-size:24px;font-weight:700;position:relative}.auth-sub{text-align:center;letter-spacing:.06em;color:var(--auth-green);margin:0 0 30px;font-size:13px;font-weight:600;position:relative}.auth-field{margin-bottom:18px;display:block}.auth-label{letter-spacing:.14em;text-transform:uppercase;color:var(--auth-ink);margin:0 0 8px 4px;font-size:11px;font-weight:700;display:block}.auth-input{width:100%;color:var(--auth-ink);background:color-mix(in oklab, var(--auth-tint) 55%, transparent);border:2px solid #0000;border-radius:16px;outline:none;padding:14px 16px;font-family:inherit;font-size:16px;transition:all .25s}.auth-input::placeholder{color:color-mix(in oklab, var(--auth-ink-2) 70%, transparent)}.auth-input:focus{background:var(--card);border-color:var(--auth-green-soft);box-shadow:0 0 0 4px #4fbe8f29}.auth-error{background:color-mix(in oklab, var(--danger) 8%, transparent);color:var(--danger);border-radius:12px;margin:2px 2px 0;padding:10px 14px;font-size:13px;font-weight:600}.auth-btn{background:var(--auth-strong);color:#fff;letter-spacing:.04em;cursor:pointer;border:0;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:22px;padding:15px 16px;font-family:inherit;font-size:15px;font-weight:700;transition:filter .25s,transform .2s,box-shadow .25s;display:flex;box-shadow:0 14px 30px #1f6fa840}.auth-btn:hover:not(:disabled){filter:brightness(1.1)saturate(1.05)}.auth-btn:active:not(:disabled){transform:scale(.98)}.auth-btn:disabled{opacity:.65;cursor:default}.auth-btn svg{width:18px;height:18px;transition:transform .25s}.auth-btn:hover:not(:disabled) svg{transform:translate(3px)}.auth-foot{text-align:center;letter-spacing:.08em;color:color-mix(in oklab, var(--auth-ink-2) 85%, transparent);margin:26px 0 0;font-size:11px;font-weight:600;position:relative}.auth-dots{opacity:.55;justify-content:center;gap:16px;margin-top:26px;display:flex}.auth-dots i{background:var(--auth-blue);border-radius:999px;width:6px;height:6px}.auth-dots i:nth-child(2){background:var(--auth-green)}.sp-page{box-sizing:border-box;color:#173e36;background:#fff;width:1123px;height:794px;padding:28px 34px;font-family:inherit;font-size:11px;position:relative}.sp-head{border-bottom:3px solid #173e36;justify-content:space-between;align-items:center;padding-bottom:11px;display:flex}.sp-brand{align-items:center;gap:11px;display:flex}.sp-logo{object-fit:contain;width:auto;max-width:110px;height:42px}.sp-co{color:#173e36;font-size:16px;font-weight:800}.sp-sub{color:#687a73;margin-top:2px;font-size:9px}.sp-title{text-align:right;color:#173e36;font-size:23px;font-weight:800}.sp-title small{color:#4f8c7b;letter-spacing:.14em;margin-bottom:3px;font-size:8px;font-weight:800;display:block}.sp-project{grid-template-columns:1.35fr 1fr 200px;gap:10px;margin:11px 0 8px;display:grid}.sp-project>div{background:#f5f9f7;border:1px solid #d5e2dc;border-radius:6px;flex-direction:column;justify-content:center;min-height:54px;padding:8px 11px;display:flex}.sp-project small,.sp-stats small{color:#688078;font-size:8px;font-weight:700}.sp-project strong{color:#173e36;margin:3px 0;font-size:13px;line-height:1.25}.sp-project span{color:#687a73;white-space:normal;overflow-wrap:anywhere;font-size:9px;line-height:1.3}.sp-stats{grid-template-columns:repeat(4,1fr);gap:7px;margin-bottom:9px;display:grid}.sp-stats>span{background:#edf5f1;border-left:3px solid #75aa98;justify-content:space-between;align-items:center;padding:6px 10px;display:flex}.sp-stats b{font-size:14px}.sp-stats .warn{background:#fff3ed;border-color:#d9784a}.sp-stats .warn b{color:#b34e2c}.sp-table{border-collapse:collapse;table-layout:fixed;width:100%}.sp-table th,.sp-table td{text-align:center;box-sizing:border-box;vertical-align:middle;border:1px solid #d6e1dc;height:48px;padding:6px;font-size:11px;line-height:1.3}.sp-table tbody tr:nth-child(2n) td{background:#f7faf8}.sp-table th{color:#fff;background:#173e36;border-color:#173e36;font-weight:700}.sp-name{overflow:hidden;text-align:left!important;padding:6px 8px!important}.sp-name strong{color:#173e36;white-space:normal;overflow-wrap:anywhere;font-size:12px;font-weight:800;line-height:1.3;display:block}.sp-name small{color:#4f8c7b;white-space:normal;overflow-wrap:anywhere;margin-top:4px;font-size:9px;font-weight:700;line-height:1.2;display:block}.sp-date b{color:#173e36;white-space:nowrap;font-size:10px;font-weight:800;display:block}.sp-date small{color:#71817a;margin-top:3px;font-size:8px;font-weight:700;display:block}.sp-axis{height:14px;position:relative}.sp-overall{background:#173e36!important}.sp-overall small,.sp-overall strong{color:#fff}.sp-overall em{background:#496861;border-radius:4px;width:100%;height:6px;font-style:normal;display:block;overflow:hidden}.sp-overall em i{background:#a9c95d;height:100%;display:block}.sp-pct{color:#667;background:#eef1ef;border-radius:9px;min-width:34px;padding:2px 0;font-weight:700;display:inline-block}.sp-pct.ing{color:#536c22;background:#e4f0ce}.sp-pct.done{color:#1f6b47;background:#d5efe0}.sp-status{color:#667;background:#e8eeeb;border-radius:4px;padding:3px 5px;font-size:8px;font-weight:700;display:inline-block}.sp-status.active{color:#536c22;background:#e4f0ce}.sp-status.done{color:#1f6b47;background:#d5efe0}.sp-status.overdue{color:#a44425;background:#fee5da}.sp-axis span{white-space:nowrap;color:#fff;font-size:9px;position:absolute;top:0}.sp-barcell{position:relative;overflow:visible;padding:0!important}.sp-grid{border-left:1px dashed #d6dfda;position:absolute;top:0;bottom:0}.sp-bar{background:#dce5df;border-radius:3px;height:14px;position:absolute;top:26px;overflow:hidden}.sp-bar.active{background:#dce8ba}.sp-bar.done{background:#86ae9e}.sp-bar.overdue{background:#f3d4c6}.sp-bar.conflict{box-shadow:inset 0 0 0 2px #c45637}.sp-fill{background:#4f8c7b;height:100%}.sp-arrival{z-index:2;color:#173e36;white-space:nowrap;background:#fff;border-radius:2px;padding:2px 4px;font-size:9px;font-weight:800;line-height:13px;position:absolute;top:6px;box-shadow:0 0 0 1px #d6e1dc}.sp-arrival.left{transform:translate(0)}.sp-arrival.right{transform:translate(-100%)}.sp-foot{color:#71817a;border-top:1px solid #d6e1dc;justify-content:space-between;padding-top:7px;font-size:9px;display:flex;position:absolute;bottom:16px;left:34px;right:34px}@media (width<=900px){.schedule-workspace{display:block}.schedule-project-rail{gap:8px;width:100%;margin-bottom:14px;display:flex;position:static;overflow-x:auto}.schedule-workspace-main{width:100%}.rail-title{display:none}.schedule-rail-card{flex:0 0 190px}}@media (width<=600px){.schedule-project-title{grid-template-columns:minmax(0,1fr) auto}.schedule-project-title h2,.schedule-project-title p{overflow-wrap:anywhere}}.contract-doc.cd-paper{color:#232b28;background:#fff;border-radius:2px;width:100%;max-width:794px;margin:0 auto;padding:0;font-family:Noto Serif TC,Songti TC,PMingLiU,serif;position:relative;box-shadow:0 8px 32px #173e3624}.cd-frame{min-height:1123px;padding:42px 58px 54px}.cd-head{text-align:center;position:relative}.cd-brand{text-align:left;border-bottom:1px solid #9cada7;justify-content:flex-start;align-items:center;gap:12px;padding-bottom:14px;display:flex}.cd-logo{object-fit:contain;flex:0 0 58px;width:58px;height:58px;display:block}.cd-brand-copy{min-width:0}.cd-company{color:#173e36;letter-spacing:.12em;font-size:17px;font-weight:700}.cd-company-sub{color:#66756f;letter-spacing:.03em;margin-top:5px;font-family:Noto Sans TC,sans-serif;font-size:9px;line-height:1.5}.cd-title{color:#17211e;letter-spacing:.38em;text-indent:.38em;text-align:center;white-space:normal;margin:30px 0 22px;font-size:29px;font-weight:700}.cd-subtitle{color:#6c7874;letter-spacing:.28em;font-family:Manrope,sans-serif;font-size:8px;font-weight:700}.cd-parties{background:#f7f9f8;border:1px solid #cbd4d0;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px;padding:13px 16px;display:grid}.cd-parties div{align-items:baseline;gap:10px;display:flex}.cd-parties span{color:#5b6863;flex:none;font-size:11px}.cd-parties strong{font-size:13px;font-weight:600}.cd-body{text-align:justify;letter-spacing:.025em;font-size:13px;line-height:2.05}.cd-p{margin:0 0 7px}.cd-li{text-indent:-1.25em;margin:0 0 5px;padding-left:2.1em}.cd-article{color:#173e36;break-after:avoid;page-break-after:avoid;border-bottom:1px solid #d6deda;margin:18px 0 6px;padding:0 0 4px;font-size:14px;font-weight:700}.cd-article span{min-width:4.5em;margin-right:.4em;display:inline-block}.cd-article+.cd-p,.cd-article+.cd-li{break-before:avoid;page-break-before:avoid}.cd-size-small{font-size:.85em}.cd-size-normal{font-size:1em}.cd-size-large{font-size:1.25em}.cd-weight-normal{font-weight:400}.cd-weight-medium{font-weight:600}.cd-weight-bold{font-weight:700}.cd-copies{break-inside:avoid;page-break-inside:avoid;background:#f7f9f8;border-left:3px solid #8a2e2b;margin:24px 0 0;padding:11px 14px;font-size:12px;line-height:1.7}.cd-sign{break-inside:avoid;page-break-inside:avoid;grid-template-columns:1fr 1fr;gap:24px;margin-top:30px;display:grid}.cd-sign-col{border:1px solid #aebbb6;min-height:250px;padding:15px;position:relative}.cd-sign-role{color:#173e36;letter-spacing:.12em;background:#fff;width:max-content;margin:-28px 0 14px;padding:0 8px;font-size:13px;font-weight:700}.cd-sign-info{border-bottom:1px dotted #c4ceca;grid-template-columns:62px 1fr;gap:7px;min-height:25px;padding:3px 0;font-size:10px;display:grid}.cd-sign-info span{color:#68756f}.cd-sign-info b{overflow-wrap:anywhere;font-weight:600}.cd-sign-area{color:#9aa7a2;border:1px dashed #bcc8c3;justify-content:center;align-items:center;height:92px;margin-top:12px;font-family:Noto Sans TC,sans-serif;font-size:10px;display:flex}.cd-sign-area img{object-fit:contain;max-width:100%;max-height:86px}.cd-sign-date{text-align:center;letter-spacing:.12em;break-inside:avoid;margin:25px 0 17px;font-size:13px;font-weight:600}.cd-notice{color:#7a8681;border-top:1px solid #d1d9d5;padding-top:10px;font-family:Noto Sans TC,sans-serif;font-size:9px;line-height:1.7}.cd-print-footer{display:none}@media (width<=600px){.contract-doc.cd-paper{box-shadow:none}.cd-frame{border-top-width:5px;min-height:0;padding:26px 18px 36px}.cd-brand{align-items:flex-start}.cd-logo{flex-basis:46px;width:46px;height:46px}.cd-company{font-size:14px}.cd-company-sub{font-size:8px}.cd-title{letter-spacing:.22em;text-indent:.22em;margin-top:24px;font-size:22px}.cd-parties,.cd-sign{grid-template-columns:1fr}.cd-parties{gap:8px}.cd-body{font-size:12px;line-height:1.9}.cd-sign{gap:34px}.cd-sign-col{min-height:230px}}@page{size:A4 portrait;margin:0}@media print{body{background:#fff!important;margin:0!important}.app:not(.app-preview){display:block}.sidebar,.mobile-brandbar,.app:not(.app-preview)>.tabbar{display:none!important}.app-main{width:auto;margin:0}.app-main>.page.print-doc{width:auto;max-width:none;margin:0;background:#fff!important;padding:0!important}.contract-doc.cd-paper{width:auto;max-width:none;box-shadow:none;margin:0}.cd-frame{min-height:0;padding:14mm 13mm 16mm}.cd-brand{padding-top:8px}.cd-logo{flex-basis:48px;width:48px;height:48px}.cd-title{margin-top:22px}.cd-body{font-size:11.5pt;line-height:1.9}.cd-article{margin-top:13px}.cd-sign{grid-template-columns:1fr 1fr;gap:20px}.cd-sign-col{min-height:225px}.cd-print-footer{color:#5f6b66;border-top:1px solid #8a2e2b;justify-content:space-between;padding-top:3mm;font-size:8pt;display:flex;position:fixed;bottom:6mm;left:13mm;right:13mm}}.cd-print-table{border-collapse:collapse;width:100%}.cd-print-table td{padding:0}.cd-page-space{height:0}@media print{.cd-page-space{height:14mm}.cd-frame{padding-top:0!important}.cd-print-footer{display:none!important}}
