:root{color-scheme:light;--bg: #f5f6f2;--surface: #ffffff;--surface-soft: #f0f4ef;--ink: #1e2926;--muted: #62706b;--line: #d9ded7;--primary: #0f766e;--primary-strong: #0a5c55;--primary-soft: #dff4ef;--accent: #9a5b16;--accent-soft: #fff3df;--danger: #b42318;--danger-soft: #fde7e5;--shadow: 0 18px 48px rgba(28, 39, 35, .11)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh;background:var(--bg);color:var(--ink);font-family:Inter,Microsoft YaHei,PingFang SC,Segoe UI,sans-serif;font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(15,118,110,.28);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.login-screen{min-height:100dvh;display:grid;place-items:center;padding:24px;background:#eef1ea}.login-panel{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:32px;box-shadow:var(--shadow)}.brand-mark{width:48px;height:48px;display:grid;place-items:center;color:#fff;background:var(--primary);border-radius:8px}.brand-mark.compact{width:40px;height:40px}.login-panel h1{margin:18px 0 22px;font-size:28px;line-height:1.2}.login-form,.product-form,.member-form{display:grid;gap:16px}label{display:grid;gap:7px;color:var(--ink);font-weight:600}input,select,textarea{width:100%;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;color:var(--ink);background:#fff}textarea{min-height:88px;resize:vertical}input:disabled{color:var(--muted);background:#eef1ed;cursor:not-allowed}.button,.icon-button{min-height:44px;border:1px solid transparent;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;transition:background .18s ease,color .18s ease,border-color .18s ease}.button{padding:0 16px}.button.primary{color:#fff;background:var(--primary)}.button.primary:hover{background:var(--primary-strong)}.button.ghost{color:var(--ink);background:#fff;border-color:var(--line)}.button.ghost:hover{background:var(--surface-soft)}.button:disabled{opacity:.56;cursor:not-allowed}.icon-button{width:44px;padding:0;color:var(--muted);background:#fff;border-color:var(--line)}.icon-button:hover{color:var(--primary);background:var(--primary-soft)}.icon-button.danger:hover{color:var(--danger);background:var(--danger-soft)}.app-shell{min-height:100dvh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100dvh;padding:22px 16px;background:#fff;border-right:1px solid var(--line)}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 6px 22px}.sidebar-brand strong,.sidebar-brand span{display:block}.sidebar-brand span{color:var(--muted);font-size:14px}.nav-list{display:grid;gap:8px}.nav-item{min-height:44px;border:1px solid transparent;border-radius:8px;padding:0 12px;display:flex;align-items:center;gap:10px;color:var(--muted);background:transparent;text-align:left;font-weight:700}.nav-item:hover,.nav-item.active{color:var(--primary-strong);background:var(--primary-soft)}.workspace{min-width:0;padding:28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.topbar h1{margin:0;font-size:26px;line-height:1.2}.topbar p{margin:4px 0 0;color:var(--muted)}.topbar-actions,.row-actions{display:flex;align-items:center;gap:8px}.view-stack{display:grid;gap:18px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-tile,.panel,.lookup-card{background:var(--surface);border:1px solid var(--line);border-radius:8px}.stat-tile{min-height:112px;padding:18px;display:grid;align-content:space-between}.stat-tile span{color:var(--muted);font-weight:600}.stat-tile strong{font-size:28px;line-height:1.2;font-variant-numeric:tabular-nums}.panel{padding:18px}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-header h2{margin:0;font-size:18px}.toolbar{display:grid;grid-template-columns:minmax(260px,1fr) 170px 150px auto auto;gap:10px;align-items:center}.search-field,.lookup-bar{display:flex;align-items:center;gap:10px;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:0 12px;color:var(--muted);background:#fff}.search-field input,.lookup-bar input{min-height:40px;border:0;padding:0;outline:0}.lookup-bar{width:min(760px,100%)}.lookup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.quote-layout{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(0,1.35fr);gap:18px;align-items:start}.quote-form-panel,.quote-items-panel{grid-column:1 / -1}.quote-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.quote-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.field-hint{display:block;margin-top:6px;color:var(--muted);font-size:12px;line-height:1.35}.quote-search{width:100%;margin-bottom:14px}.quote-count{color:var(--muted);font-weight:800}.quote-product-list{display:grid;gap:10px;max-height:520px;overflow:auto}.quote-product-row{min-height:72px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fff}.quote-product-row strong,.quote-product-row span,.table-subtext{display:block}.quote-product-row span,.table-subtext{color:var(--muted);font-size:13px}.quote-product-action{display:flex;align-items:center;gap:10px;white-space:nowrap}.quote-table input{min-height:38px;padding:7px 9px}.price-source{display:inline-flex;align-items:center;min-height:24px;margin-top:6px;border-radius:999px;padding:0 8px;color:var(--muted);background:#edf0ec;font-size:12px;font-weight:800;white-space:nowrap}.price-source-customer{color:#0b5c4b;background:#daf4e8}.price-source-manual{color:var(--accent);background:var(--accent-soft)}.quote-preview-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:grid;grid-template-rows:1fr;padding:16px;background:#121a1794}.quote-preview-modal{min-height:0;display:grid;grid-template-rows:auto 1fr;background:#fff;border-radius:8px;box-shadow:var(--shadow);overflow:hidden}.quote-preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.quote-preview-toolbar h2{margin:0;font-size:18px}.quote-preview-scroll{min-height:0;overflow:auto;padding:14px;background:#f6f8f5}.quote-preview-table{min-width:1080px;width:100%;border-collapse:collapse;background:#fff}.quote-preview-table th,.quote-preview-table td{border:1px solid #111111;padding:7px 8px;color:#111;font-size:15px;line-height:1.35;vertical-align:middle}.quote-preview-table th{background:#fff200;font-weight:800;text-align:center}.preview-brand{border:0!important;color:#0f766e!important;font-size:18px!important;font-weight:800}.preview-title{border:0!important;padding:16px 0!important;font-size:30px!important;font-weight:800;text-align:center}.preview-meta,.preview-summary{background:#f3f6f2;font-weight:800}.preview-center{text-align:center}.preview-money{text-align:right;font-variant-numeric:tabular-nums}.preview-note{border:0!important;padding-top:10px!important}.lookup-card{padding:16px}.lookup-card-header{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:14px}.lookup-card-header strong,.lookup-card-header span{display:block}.lookup-card-header span{color:var(--muted)}.spec-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin:0}.spec-list div{display:grid;gap:2px}.spec-list dt{color:var(--muted);font-size:13px}.spec-list dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.table-wrap{width:100%}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:13px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.data-table th{color:var(--muted);font-size:13px;font-weight:800;background:#f7f9f6}.data-table td{font-variant-numeric:tabular-nums}.data-table tr:last-child td{border-bottom:0}.compact-table{margin-top:4px}.status,.role{min-height:28px;display:inline-flex;align-items:center;border-radius:999px;padding:0 10px;font-size:13px;font-weight:800}.status-active,.role-owner{color:#0b5c4b;background:#daf4e8}.status-pending,.role-editor{color:var(--accent);background:var(--accent-soft)}.status-archived,.role-viewer{color:var(--muted);background:#edf0ec}.empty-state{min-height:220px;display:grid;place-items:center;gap:8px;color:var(--muted);text-align:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:20px;background:#121a1785}.modal{width:min(980px,100%);max-height:min(92dvh,880px);overflow:auto;background:#fff;border-radius:8px;box-shadow:var(--shadow)}.modal-header,.modal-actions{position:sticky;background:#fff;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-header{top:0;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-header h2{margin:0;font-size:20px}.product-form{padding:20px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.span-2{grid-column:span 2}.modal-actions{bottom:0;justify-content:flex-end;padding-top:18px;border-top:1px solid var(--line)}.form-error{margin:0;color:var(--danger);font-weight:700}.member-form{grid-template-columns:repeat(4,minmax(0,1fr)) auto;align-items:end}.switch-row{display:inline-flex;grid-template-columns:auto;align-items:center;gap:8px;font-weight:700}.switch-row input{width:18px;min-height:18px}.password-reset{display:grid;grid-template-columns:minmax(140px,1fr) auto;gap:8px}.toast{position:fixed;right:24px;bottom:24px;z-index:80;max-width:min(380px,calc(100vw - 48px));min-height:44px;display:flex;align-items:center;padding:10px 14px;color:#fff;background:#1f2a27;border-radius:8px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .18s ease,transform .18s ease}.toast.show{opacity:1;transform:translateY(0)}@media(max-width:1120px){.stat-grid,.lookup-grid,.quote-layout,.toolbar,.member-form,.quote-form-grid,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:820px){.app-shell{display:block}.sidebar{position:sticky;z-index:20;height:auto;padding:12px;border-right:0;border-bottom:1px solid var(--line)}.sidebar-brand{padding:0 4px 12px}.nav-list{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.nav-item{flex:0 0 auto}.workspace{padding:18px 14px 28px}.topbar{align-items:flex-start;flex-direction:column}.topbar-actions{width:100%}.topbar-actions .button{flex:1}.quote-actions{width:100%}.quote-actions .button{flex:1 1 150px}.quote-preview-backdrop{padding:0}.quote-preview-modal{border-radius:0}.quote-preview-toolbar{align-items:stretch;flex-direction:column}.quote-preview-scroll{padding:10px}.stat-grid,.lookup-grid,.quote-layout,.toolbar,.member-form,.form-grid,.quote-form-grid,.spec-list,.quote-product-row,.quote-product-action{grid-template-columns:1fr}.quote-product-action{align-items:stretch;display:grid}.span-2{grid-column:span 1}.panel{padding:14px}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table thead{display:none}.data-table tr{border:1px solid var(--line);border-radius:8px;padding:8px;margin-bottom:10px;background:#fff}.data-table td{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #eef1ed;padding:9px 4px;text-align:right}.quote-table td[data-label=单价]{align-items:flex-end;flex-wrap:wrap}.quote-table td[data-label=单价] input,.quote-table td[data-label=备注] input{max-width:min(220px,calc(100vw - 150px))}.quote-table td[data-label=单价] .price-source{margin-left:auto}.data-table td:before{content:attr(data-label);flex:0 0 96px;color:var(--muted);font-weight:800;text-align:left}.data-table tr:last-child td,.data-table td:last-child{border-bottom:0}.row-actions{justify-content:flex-end}.modal-backdrop{align-items:stretch;padding:10px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{body *{visibility:hidden}.quote-preview-backdrop,.quote-preview-backdrop *{visibility:visible}.quote-preview-backdrop{position:static;display:block;padding:0;background:#fff}.quote-preview-modal{display:block;border-radius:0;box-shadow:none}.quote-preview-toolbar{display:none}.quote-preview-scroll{overflow:visible;padding:0;background:#fff}.quote-preview-table{min-width:0}.quote-preview-table th,.quote-preview-table td{font-size:11pt}}
