*{box-sizing:border-box}:root{--bg: #f5f5f7;--surface: #fff;--surface-soft: #fbfbfd;--text: #1d1d1f;--muted: #6e6e73;--soft: #86868b;--line: #d2d2d7;--line-soft: #e8e8ed;--blue: #0071e3;--blue-dark: #005bb5;--green: #16845b;--amber: #a45c00;--danger: #b42318;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,PingFang SC,Microsoft YaHei,sans-serif}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--text);letter-spacing:0;overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.56}input,select,textarea{min-width:0;border:1px solid var(--line);border-radius:12px;background:#ffffffc7;color:var(--text);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input:focus,select:focus,textarea:focus{border-color:#0071e39e;box-shadow:0 0 0 4px #0071e31f;background:#fff}textarea{resize:vertical;min-height:118px;padding:12px 14px;line-height:1.5}.app-shell{min-height:100vh;display:flex;flex-direction:column}.icp-footer{width:min(1040px,calc(100% - 48px));margin:auto auto 0;padding:8px 0 18px;color:var(--soft);font-size:12px;line-height:1.4;text-align:center}.icp-footer a{color:inherit;text-decoration:none}.icp-footer a:hover{color:var(--muted);text-decoration:underline}.nav{position:sticky;top:0;z-index:20;height:44px;display:flex;align-items:center;justify-content:center;gap:36px;padding:0 24px;background:#fbfbfddb;-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid rgba(0,0,0,.06);color:#424245;font-size:12px}.nav-brand{display:inline-flex;align-items:center;width:112px;height:28px;flex:0 0 auto}.nav-brand img{display:block;width:100%;height:auto}.nav span,.nav-link{white-space:nowrap}.nav-link{border:0;background:transparent;color:#424245;padding:0;font-size:12px}.nav-link.active{color:var(--blue)}.subnav{position:sticky;top:44px;z-index:19;min-height:52px;border-bottom:1px solid rgba(0,0,0,.07);background:#f5f5f7c7;-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px)}.subnav-inner{width:min(1040px,calc(100% - 48px));min-height:52px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px}.subnav-inner.wide{width:min(1440px,calc(100% - 48px))}.quote-id{display:flex;align-items:baseline;gap:12px;min-width:0}.quote-id b{font-size:15px;font-weight:650;white-space:nowrap}.quote-id span{color:var(--muted);font-size:13px;white-space:nowrap}.sub-actions,.section-tools,.row-actions,.action-grid,.module-actions,.line-tools{display:flex;align-items:center;gap:8px}.btn{min-height:32px;padding:0 15px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--blue);display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;white-space:nowrap}.btn:hover{color:var(--blue-dark)}.btn.primary{background:var(--blue);color:#fff}.btn.primary:hover{background:var(--blue-dark);color:#fff}.btn.ghost{border-color:var(--line);background:#ffffffb8;color:var(--text)}.btn.danger{color:var(--danger)}.btn.confirm-danger{background:var(--danger);color:#fff;box-shadow:0 10px 24px #b423182e}.btn.confirm-danger:hover{background:#941b12;color:#fff}.toast{position:fixed;top:108px;left:50%;z-index:80;transform:translate(-50%);max-width:min(520px,calc(100% - 32px));padding:10px 16px;border-radius:999px;background:#1d1d1fe0;color:#fff;font-size:14px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 14px 34px #0000002e}.workspace{width:min(1040px,calc(100% - 48px));margin:0 auto;padding:42px 0 64px}.list-workspace{padding-top:58px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}.section-head>div{min-width:0}.section-head h2{margin:0;font-size:28px;line-height:1.15;letter-spacing:0;font-weight:720}.section-head p{margin:7px 0 0;color:var(--muted);font-size:15px;line-height:1.45;max-width:100%;overflow-wrap:anywhere}.compact-head{align-items:flex-start;margin-bottom:14px}.compact-head h2{font-size:20px}.sheet{overflow:hidden;border-radius:24px;background:var(--surface);border:1px solid rgba(0,0,0,.05);box-shadow:0 18px 48px #0000000f}.table{width:100%;border-collapse:collapse;table-layout:fixed}th,td{border-bottom:1px solid var(--line-soft);padding:16px 18px;text-align:left;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}th{height:42px;color:var(--muted);background:var(--surface-soft);font-size:12px;font-weight:650}td{color:var(--text);font-size:14px}tr:last-child td{border-bottom:0}.list-table th:first-child,.list-table td:first-child{width:170px}.list-table th:nth-child(3),.list-table td:nth-child(3){width:108px}.list-table th:nth-child(4),.list-table td:nth-child(4){width:130px}.list-table th:nth-child(5),.list-table td:nth-child(5){width:150px}.list-table th:last-child,.list-table td:last-child{width:230px}.name{display:grid;gap:3px;min-width:0}.name b{font-size:15px;font-weight:650}.name small{color:var(--muted);font-size:12px}.money{text-align:right;font-variant-numeric:tabular-nums;font-weight:650}.filters{display:grid;grid-template-columns:minmax(220px,1fr) 150px 150px auto;gap:10px;margin-bottom:18px}.filters input,.filters select{width:100%;height:42px;padding:0 14px}.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:18px;color:var(--muted);font-size:14px}.link-button{border:0;background:transparent;color:var(--blue);padding:0;text-align:left;font-weight:500}.link-button.strong{font-weight:650}.status-badge{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;background:#f5f5f7;color:var(--muted);font-size:12px;font-weight:600}.status-badge.draft{color:var(--amber)}.status-badge.completed{color:var(--green)}.empty-inline{padding:22px;color:var(--muted);text-align:center}.quiet-panel{min-height:142px;padding:24px;border-radius:24px;background:var(--surface);border:1px solid rgba(0,0,0,.05)}.quiet-panel h3{margin:0;font-size:19px;line-height:1.2;font-weight:700}.empty-state{display:grid;justify-items:start;gap:18px}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.template-card{min-height:244px;padding:18px;display:grid;gap:14px;align-content:start;border-radius:20px;background:var(--surface);border:1px solid rgba(0,0,0,.06);box-shadow:0 18px 42px #0000000b}.template-card-head{display:flex;justify-content:space-between;gap:14px}.template-card-head span,.template-meta,.template-company{color:var(--muted);font-size:13px}.template-card-head h3{margin:5px 0 0;font-size:20px;line-height:1.2;overflow-wrap:anywhere}.template-card-head b{color:var(--blue);font-size:14px;font-weight:700}.template-meta{display:flex;flex-wrap:wrap;gap:8px 12px}.template-preview{min-height:58px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px}.template-preview i{display:inline-flex;min-height:26px;align-items:center;padding:0 10px;border-radius:999px;background:#0071e314;color:var(--blue-dark);font-style:normal;font-size:12px;font-weight:600}.template-use{width:100%;margin-top:auto}.login-screen{min-height:100vh;display:grid;grid-template-rows:1fr auto;place-items:center;padding:48px 24px 18px}.login-card{width:min(520px,100%);text-align:center}.login-logo{display:block;width:min(236px,74vw);height:auto;margin:0 auto 22px}.login-card h1{margin:0;font-size:clamp(48px,7vw,72px);line-height:1.04;letter-spacing:0;font-weight:760}.hero-copy{width:min(680px,100%);margin:18px auto 0;color:var(--muted);font-size:19px;line-height:1.48}.status{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:14px;font-weight:500;margin-bottom:14px}.status.compact{margin-bottom:8px}.dot{width:8px;height:8px;border-radius:50%;background:var(--amber);flex:none}.login-form{margin-top:28px;display:grid;gap:14px;padding:24px;border-radius:26px;background:var(--surface);border:1px solid rgba(0,0,0,.05);box-shadow:0 18px 48px #0000000f;text-align:left}.login-form label,.field-grid label,.field-full,.rate-grid label,.line-card label{display:grid;gap:8px}.login-form span,.field-grid span,.field-full span,.rate-grid span,.line-card label span{display:block;color:var(--muted);font-size:13px;line-height:1.2}.login-form input,.field-grid input,.field-grid select,.field-full input,.rate-grid input{width:100%;height:42px;padding:0 14px}.login-submit{width:100%;min-height:42px;margin-top:8px}.quote-workbench{width:min(1540px,calc(100% - 40px));margin:0 auto;padding:28px 0 64px;display:grid;grid-template-columns:minmax(680px,54%) minmax(420px,1fr);gap:24px;align-items:start}.preview-pane{position:sticky;top:112px;max-height:calc(100vh - 132px);overflow:auto}.preview-paper{min-height:720px;padding:20px;background:var(--surface);border:1px solid #ded7ca;border-radius:4px;box-shadow:0 18px 54px #16161614;color:#1f2933}.preview-header,.preview-module-head,.preview-grand,.export-records{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.preview-header{padding-bottom:18px;border-bottom:2px solid #1f2933;color:var(--muted);font-size:12px}.preview-header span{display:block;margin-bottom:8px;color:#67717d;font-size:12px;letter-spacing:0}.preview-header b{color:#1f2933;font-size:16px;white-space:nowrap}.preview-paper h2{margin:0;font-size:26px;line-height:1.18;font-weight:760;letter-spacing:0;color:#111827;overflow-wrap:anywhere}.preview-info-table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px;border-top:1px solid #d8dbe0;border-left:1px solid #d8dbe0;background:#fff}.preview-info-table div{min-width:0;padding:8px 10px;border-right:1px solid #d8dbe0;border-bottom:1px solid #d8dbe0}.preview-info-table .wide{grid-column:span 2}.preview-info-table span{display:block;margin-bottom:4px;color:#6b7280;font-size:11px;line-height:1.2}.preview-info-table b{display:block;color:#1f2933;font-size:12px;line-height:1.35;font-weight:640;overflow-wrap:anywhere}.preview-modules{margin-top:18px;display:grid;gap:14px}.preview-module{border:1px solid #d8dbe0;background:#fff}.preview-module-head b{font-size:14px}.preview-module-head span{color:#4b5563;font-size:12px;font-variant-numeric:tabular-nums}.preview-module-head{padding:9px 12px;background:#f5f6f8;border-bottom:1px solid #d8dbe0}.preview-table-wrap{width:100%;overflow:hidden}.preview-table{width:100%;border-collapse:collapse;margin:0;table-layout:fixed}.preview-table th,.preview-table td{padding:7px 8px;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;font-size:11px;line-height:1.45;white-space:normal;vertical-align:top;overflow-wrap:anywhere}.preview-table th{color:#4b5563;background:#fbfbfc;font-weight:700;text-align:left}.preview-table th:first-child,.preview-table td:first-child{width:32px;text-align:center}.preview-table th:nth-child(2),.preview-table td:nth-child(2){width:auto}.preview-table th:nth-child(3),.preview-table td:nth-child(3){width:58px;text-align:center}.preview-table th:nth-child(4),.preview-table td:nth-child(4),.preview-table th:nth-child(5),.preview-table td:nth-child(5){width:78px;text-align:right;font-variant-numeric:tabular-nums}.preview-table tfoot td{background:#fafafa;font-weight:760}.preview-table tfoot td:first-child{text-align:right}.preview-detail-cell{font-weight:650}.preview-detail-cell b{display:block;color:#111827;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.preview-detail-cell small{display:block;margin-top:3px;color:#6b7280;font-size:10px;font-weight:500}.preview-seq,.preview-number{word-break:break-word}.preview-quantity{text-align:center;font-variant-numeric:tabular-nums}.preview-quantity b,.preview-quantity span{display:block}.preview-quantity b{color:#111827;font-size:11px}.preview-quantity span{margin-top:2px;color:#6b7280;font-size:10px}.preview-spec-list{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.preview-spec-list span{max-width:100%;padding:2px 5px;border:1px solid #d8dbe0;border-radius:4px;background:#f8fafc;color:#374151;font-size:10px;line-height:1.35;overflow-wrap:anywhere}.preview-placeholder{color:#9ca3af}.preview-empty{padding:16px 12px;color:#9ca3af;font-size:12px;background:#fff}.preview-note{margin-top:20px;padding:14px 16px;background:#fbfbfc;border:1px solid #d8dbe0}.preview-note span{color:#4b5563;font-size:12px;font-weight:700}.preview-note p{margin:8px 0 0;font-size:13px;line-height:1.5;white-space:pre-wrap}.preview-grand{margin-top:18px;padding:14px 0 0;border-top:2px solid #1f2933}.preview-grand span{color:#4b5563;font-size:13px}.preview-grand b{font-size:28px;color:#111827;font-variant-numeric:tabular-nums}.editor-pane{display:grid;gap:18px}.editor-hero,.editor-section,.editor-actions,.module-card{border-radius:24px;background:var(--surface);border:1px solid rgba(0,0,0,.05);box-shadow:0 18px 48px #0000000d}.editor-hero{padding:28px;display:flex;justify-content:space-between;gap:24px;align-items:flex-start}.editor-hero h1{margin:0;font-size:clamp(32px,4vw,54px);line-height:1.05;letter-spacing:0;font-weight:760;overflow-wrap:anywhere}.editor-hero p{margin:12px 0 0;color:var(--muted);font-size:16px;line-height:1.45}.editor-total{min-width:180px;text-align:right}.editor-total span,.module-summary span,.module-head span,.export-records span{color:var(--muted);font-size:13px}.editor-total b{display:block;margin-top:8px;font-size:32px;font-variant-numeric:tabular-nums}.editor-section,.editor-actions{padding:22px}.field-grid{display:grid;gap:12px}.field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.field-grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.field-full{margin-top:12px}.rate-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.rate-grid label{position:relative;padding:14px 14px 12px;border-radius:18px;background:var(--surface-soft);border:1px solid rgba(0,0,0,.05)}.rate-grid input{height:32px;padding:0 18px 0 0;border:0;background:transparent;box-shadow:none;font-size:18px;font-weight:650;font-variant-numeric:tabular-nums}.rate-grid i{position:absolute;right:14px;bottom:17px;color:var(--muted);font-style:normal}.module-stack{display:grid;gap:14px}.module-card{box-shadow:none;overflow:hidden}.module-head{padding:18px;display:grid;grid-template-columns:minmax(150px,1fr) 150px auto;gap:16px;align-items:center;background:var(--surface-soft);border-bottom:1px solid var(--line-soft)}.module-head h3{margin:4px 0 0;font-size:20px}.module-summary{display:grid;justify-items:end;gap:4px}.module-summary b{font-variant-numeric:tabular-nums;font-size:18px}.module-actions{justify-content:flex-end;flex-wrap:wrap}.module-lines{padding:14px;display:grid;gap:10px}.line-card{display:grid;grid-template-columns:minmax(180px,1fr) 110px 128px auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line-soft);border-radius:18px;background:#fff}.line-main{display:grid;gap:4px;min-width:0}.line-main b{overflow-wrap:anywhere}.line-main small{color:var(--muted);overflow-wrap:anywhere}.line-card input{width:100%;height:36px;padding:0 10px}.line-number{display:grid;gap:4px;justify-items:end}.line-number span{color:var(--muted);font-size:12px}.line-number b{font-variant-numeric:tabular-nums}.line-tools{justify-content:flex-end;flex-wrap:wrap}.line-tools .btn{min-height:28px;padding:0 10px}.module-empty{padding:22px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);text-align:center}.editor-actions{display:grid;gap:16px}.action-grid{flex-wrap:wrap;align-items:flex-start}.export-records{justify-content:flex-start;flex-wrap:wrap;color:var(--muted)}.export-records b{color:var(--text);font-size:13px;font-weight:600}.drawer-layer{position:fixed;inset:0;z-index:70}.confirm-layer{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px 16px}.confirm-scrim{position:absolute;inset:0;border:0;background:#1d1d1f5c;-webkit-backdrop-filter:saturate(170%) blur(14px);backdrop-filter:saturate(170%) blur(14px)}.confirm-card{position:relative;width:min(420px,calc(100vw - 32px));padding:22px;display:grid;grid-template-columns:44px minmax(0,1fr);gap:14px 16px;border:1px solid rgba(255,255,255,.72);border-radius:24px;background:#ffffffeb;box-shadow:0 28px 80px #00000038;-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px)}.confirm-card.danger{border-color:#b4231829}.confirm-mark{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#b423181a;color:var(--danger);font-size:22px;font-weight:760}.confirm-copy{min-width:0}.confirm-copy h3{margin:0;color:var(--text);font-size:20px;line-height:1.2;font-weight:720;overflow-wrap:anywhere}.confirm-copy p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.55;overflow-wrap:anywhere}.confirm-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;padding-top:4px}.drawer-scrim{position:absolute;inset:0;border:0;background:#0000003d}.drawer{position:absolute;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--bg);border-left:1px solid rgba(0,0,0,.08);box-shadow:-24px 0 60px #0000002e;display:grid;grid-template-rows:auto auto 1fr}.line-drawer{width:min(760px,100%);grid-template-rows:auto 1fr}.drawer-head{min-height:68px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-soft)}.drawer-head h3{margin:0}.drawer-filters{display:grid;gap:10px;padding:16px}.material-filters{grid-template-columns:140px 1fr 1fr 1fr}.locked-filter{min-height:42px;padding:7px 12px;display:flex;flex-direction:column;justify-content:center;border:1px solid var(--line-soft);border-radius:12px;background:#f7f8fae0}.locked-filter span{font-size:11px;color:var(--muted)}.locked-filter b{font-size:13px;color:var(--text)}.drawer-filters input,.drawer-filters select{width:100%;height:42px;padding:0 14px}.material-list,.line-form{padding:0 16px 20px;overflow:auto}.line-form{padding-top:18px;display:grid;gap:14px}.material-row{width:100%;min-height:72px;margin-bottom:10px;padding:14px 16px;border:1px solid rgba(0,0,0,.05);border-radius:18px;background:var(--surface);color:var(--text);display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left}.material-row span{display:grid;gap:4px}.material-row small{color:var(--muted)}.material-row strong{color:var(--blue);white-space:nowrap;font-size:13px}.toggle-panel{padding:14px;border-radius:18px;background:var(--surface);border:1px solid var(--line-soft)}.toggle-panel>span{display:block;color:var(--muted);font-size:13px;margin-bottom:10px}.toggle-panel div{display:flex;flex-wrap:wrap;gap:12px 18px}.toggle-panel label,.checkbox-line{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-size:14px}.toggle-panel input,.checkbox-line input{width:auto;height:auto}@media(max-width:1180px){.quote-workbench{grid-template-columns:1fr}.preview-pane{position:static;max-height:none}}@media(max-width:900px){.sheet{overflow-x:auto}.table{min-width:860px}.field-grid.four,.field-grid.five,.rate-grid,.module-head,.line-card,.material-filters{grid-template-columns:1fr 1fr}.line-tools,.module-actions{justify-content:flex-start}}@media(max-width:820px){.nav{justify-content:flex-start;overflow-x:auto;gap:24px}.nav-brand{width:98px}.subnav-inner,.subnav-inner.wide,.workspace,.quote-workbench{width:min(100% - 32px,1040px)}.subnav-inner{align-items:flex-start;flex-direction:column;justify-content:center;padding:10px 0}.sub-actions{width:100%;overflow-x:auto}.section-head,.editor-hero{align-items:flex-start;flex-direction:column}.section-head>div,.section-tools,.editor-total{width:100%;text-align:left}.section-tools{overflow-x:auto}.filters,.field-grid.two,.field-grid.three,.field-grid.four,.field-grid.five,.rate-grid,.module-head,.line-card,.material-filters,.preview-info-table{grid-template-columns:1fr}.preview-info-table .wide{grid-column:span 1}.preview-paper,.editor-hero,.editor-section,.editor-actions{padding:18px}.preview-header{align-items:flex-start;flex-direction:column}.preview-table th,.preview-table td{padding:7px 6px}.preview-table th:first-child,.preview-table td:first-child{width:34px}.preview-table th:nth-child(3),.preview-table td:nth-child(3){width:58px}.preview-table th:nth-child(4),.preview-table td:nth-child(4),.preview-table th:nth-child(5),.preview-table td:nth-child(5){width:72px}.confirm-card{grid-template-columns:38px minmax(0,1fr);gap:12px;padding:18px;border-radius:22px}.confirm-mark{width:38px;height:38px;font-size:19px}.confirm-actions{justify-content:stretch}.confirm-actions .btn{flex:1 1 132px}}
