:root{--ink:#19392f;--green:#236c53;--muted:#728079;--line:#e0e6df;--bg:#f4f6f2}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,'Segoe UI',Arial,sans-serif;color:var(--ink)}button,input,textarea{font:inherit}button{cursor:pointer}.app-header{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 5%;gap:24px}.brand{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:750;color:var(--ink);text-decoration:none}.brand-icon{display:grid;place-items:center;width:36px;height:36px;background:var(--green);color:white;border-radius:10px}.brand-light{font-weight:400;color:#64776b}.badge{background:#edf4eb;padding:7px 11px;border-radius:20px;font-size:11px;color:#48664e}#save-status{margin-left:auto;font-size:12px;color:var(--muted)}main{max-width:1530px;margin:auto;padding:38px 5% 60px}.intro{display:flex;justify-content:space-between;align-items:center;gap:20px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:1.9px;color:#80916e}h1{font-size:36px;font-weight:600;letter-spacing:-1.2px;line-height:1.2;margin:13px 0}p{font-size:13px;line-height:1.7;color:var(--muted)}.actions{display:flex;gap:9px}.button{border:1px solid #d2ded4;background:white;border-radius:7px;padding:11px 17px;color:var(--ink);font-size:12px;font-weight:600}.button:hover{background:#e9f0e7}.primary{color:white;background:var(--green);border-color:var(--green)}.primary:hover{background:#164e3b}.summary{display:grid;grid-template-columns:repeat(4,1fr);margin:25px 0 30px;border:1px solid var(--line);background:#fff;border-radius:10px;overflow:hidden}.summary>div{padding:22px 24px;border-right:1px solid var(--line)}.summary span{display:block;font-size:11px;color:var(--muted);margin-bottom:9px}.summary strong{font-size:23px;font-weight:600;letter-spacing:-.7px}.summary .grand{background:#eaf0df;border:0}.workspace{display:grid;grid-template-columns:245px minmax(0,1fr);gap:28px;align-items:start}.panel{padding:22px;background:#fff;border:1px solid var(--line);border-radius:10px}.panel h2{font-size:19px;line-height:1.4;font-weight:600}.panel label{display:block;font-size:11px;font-weight:600;margin:20px 0 8px}.panel input,.panel textarea{width:100%;border:1px solid #dbe2d8;border-radius:6px;padding:10px;color:var(--ink);font-size:12px;line-height:1.6;background:#fafbf8}.full{width:100%;margin-top:20px}hr{border:0;border-top:1px solid var(--line);margin:22px 0 14px}.text-button{display:block;background:none;border:none;color:var(--green);font-size:11px;padding:8px 0;text-align:left;cursor:pointer}.panel .file-label{font-weight:400;margin:0;padding:8px 0}.danger{color:#a56656}.note{display:flex;gap:10px;padding:13px 8px}.note span{color:#92aa74;font-size:11px;margin-top:13px}.note p{font-size:11px}.document-area{min-width:0}.document-toolbar{display:flex;align-items:center;gap:14px;padding:13px 17px;background:#e9ede6;border:1px solid #dce3d7;border-radius:8px 8px 0 0;font-size:10px;letter-spacing:.6px}.document-toolbar label{margin-left:auto;display:flex;align-items:center;gap:6px;letter-spacing:0}.document-toolbar>span:last-child{color:#84907e}.dot{display:inline-block;background:#78a16c;width:6px;height:6px;border-radius:50%;margin-right:6px}.paper-scroll{overflow:auto;padding:24px;background:#e9ede6;border:1px solid #dce3d7;border-top:0;border-radius:0 0 8px 8px}.paper{width:794px;min-height:1123px;background:#fff;margin:0 auto;box-shadow:0 3px 18px #20372712;padding:56px 43px 44px;color:#17231f;font-family:Arial,sans-serif}.document-title{text-align:center;font-size:19px;font-weight:bold;margin:0 0 26px;letter-spacing:.2px}.meta{display:grid;grid-template-columns:110px 12px 1fr;gap:5px;font-size:10px;margin-bottom:24px}.editable{outline:0;border-radius:2px;min-height:16px;white-space:pre-wrap;overflow-wrap:anywhere}.editable:hover,.editable:focus{background:#edf4e8;box-shadow:0 0 0 2px #dbe8d6}.rab-table{width:100%;border-collapse:collapse;font-size:10px;table-layout:fixed}.rab-table th,.rab-table td{border:1px solid #829187;padding:5px 6px;vertical-align:middle;overflow-wrap:anywhere}.rab-table th{background:#f1f5ef;padding:10px 6px;font-weight:700}.rab-table .section-row td{background:#f5f7f2;font-weight:bold;padding:7px 6px}.rab-table .subtotal td{background:#fafbf8;font-weight:bold}.num{text-align:right;font-variant-numeric:tabular-nums}.center{text-align:center}.rab-table input{font-size:10px;border:0;outline:none;background:transparent;color:inherit;width:100%;text-align:right;padding:1px 0;min-width:0}.rab-table input:focus,.rab-table input:hover{background:#edf4e8}.rab-table input::-webkit-inner-spin-button{opacity:0}.item-name{position:relative}.remove-row,.remove-group{border:0;color:#9a695b;background:#fff0e7;font-size:10px;border-radius:3px;position:absolute;right:-18px;top:2px;opacity:0}.item-name:hover .remove-row,.section-name:hover .remove-group{opacity:1}.section-name{position:relative}.add-row td{border:0;padding:5px 0 9px}.add-row button{border:0;background:none;color:#5f825c;font-size:9px;padding:0}.rab-table .total-row td{background:#eaf0df;font-size:11px;font-weight:bold;padding:9px 6px}.words{border:1px solid #829187;border-top:0;text-align:center;font-size:10px;font-weight:600;padding:11px;line-height:1.5}.signature{width:260px;margin:30px 0 0 auto;text-align:center;font-family:Georgia,serif;font-size:11px;line-height:1.6}.signature-name{margin-top:70px;font-weight:bold;text-decoration:underline}.source-note{margin-top:26px;font-size:8px;line-height:1.6;color:#788379;white-space:pre-wrap;overflow-wrap:anywhere}.document-hint{font-size:11px;text-align:center}.preview .editable:hover,.preview .editable:focus{background:transparent;box-shadow:none}.preview .add-row,.preview .remove-row,.preview .remove-group{display:none}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 20px;background:#19392f;color:white;font-size:12px;border-radius:8px;box-shadow:0 5px 20px #0002;display:none;z-index:20}button:focus-visible,input:focus-visible{outline:2px solid #4d966c;outline-offset:3px}@media(min-width:1450px){.workspace{grid-template-columns:270px minmax(0,1fr)}}@media(max-width:1100px){.summary strong{font-size:18px}.workspace{grid-template-columns:210px minmax(0,1fr)}.paper-scroll{padding:14px}.intro h1{font-size:30px}}@media(max-width:760px){.app-header{height:65px;padding:0 20px}.badge{display:none}#save-status{font-size:10px}main{padding:25px 16px}.intro{align-items:start;flex-direction:column}.intro h1{font-size:28px}.actions{width:100%}.actions button{flex:1}.summary{grid-template-columns:1fr 1fr;margin-top:22px}.summary>div{padding:16px;border-bottom:1px solid var(--line)}.summary strong{font-size:18px}.workspace{grid-template-columns:1fr}.panel{padding:18px}.panel h2{margin:8px 0}.document-toolbar>span:last-child{display:none}.paper-scroll{padding:12px}.paper{margin:0}.note{padding-bottom:0}.workspace{gap:15px}}
@page{size:A4 portrait;margin:12mm}@media print{body{background:white}.app-header,.intro,.summary,aside,.document-toolbar,.document-hint,#toast{display:none!important}main{padding:0;max-width:none}.workspace{display:block}.paper-scroll{padding:0;background:white;border:0;overflow:visible}.paper{padding:0;width:100%;min-height:0;box-shadow:none;margin:0}.add-row,.remove-row,.remove-group{display:none!important}.editable{box-shadow:none!important;background:transparent!important}.rab-table input{appearance:textfield}.rab-table input::-webkit-inner-spin-button{display:none}tr{break-inside:avoid}.signature,.words{break-inside:avoid}.rab-table th,.section-row td,.subtotal td,.total-row td{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source-note{font-size:8px}}
@media print{.document-title{margin-bottom:16px;font-size:18px}.meta{gap:2px;margin-bottom:15px}.rab-table th,.rab-table td{padding:3px 4px}.rab-table th{padding:6px 4px}.rab-table .section-row td{padding:4px}.rab-table .total-row td{padding:6px 4px}.signature{margin-top:20px}.signature-name{margin-top:40px}.source-note{margin-top:16px}.words{padding:8px}}
.numeric-cell::after{content:attr(data-display);display:none;text-align:right}.preview .numeric-cell::after{display:block}.preview .numeric-cell input{display:none}@media print{.numeric-cell::after{display:block}.numeric-cell input{display:none}}
.price-panel{margin-bottom:18px}.panel select{width:100%;background:#fafbf8;color:var(--ink);border:1px solid #dbe2d8;border-radius:6px;font-size:12px;padding:10px}.panel .price-upload{display:block;text-align:center;margin:10px 0;font-size:12px}.panel .check-label{display:flex;gap:8px;align-items:center;font-weight:400;line-height:1.6}.check-label input{width:auto}.small{font-size:10px;line-height:1.6;color:var(--muted)}.small a{color:var(--green)}.price-status{font-size:11px;background:#f0f5e8;border-radius:6px;padding:10px;overflow-wrap:anywhere}.price-status.error{background:#fff1e9;color:#924e37}button:disabled{cursor:default;opacity:.5}dialog{width:min(1040px,calc(100% - 32px));max-height:90vh;border:1px solid var(--line);border-radius:12px;padding:26px;color:var(--ink);box-shadow:0 20px 70px #12271b33}dialog::backdrop{background:#14251db3}.price-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.price-dialog-head h2{font-size:24px;margin:8px 0}.price-dialog-head button{font-size:19px;padding:5px 12px}#price-origin{overflow-wrap:anywhere}#price-error{padding:12px;background:#fff0e8;color:#95492e;font-size:12px;margin-bottom:12px}.price-preview-scroll{overflow:auto;max-height:49vh;border:1px solid var(--line);border-radius:6px}.price-preview-table{width:100%;border-collapse:collapse;font-size:11px;min-width:730px}.price-preview-table th{text-align:left;background:#edf3e8;padding:12px 10px;position:sticky;top:0;z-index:1}.price-preview-table td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}.price-preview-table td:nth-child(2){width:38%}.price-preview-table strong{display:block;font-weight:600;line-height:1.5}.price-preview-table .small{display:block}.price-preview-table select{width:100%;margin:6px 0;font-size:10px;padding:6px;border-radius:4px;border:1px solid var(--line);background:#fbfcf9;color:var(--ink)}.price-entry-meta{display:block;font-size:9px;color:var(--muted);overflow-wrap:anywhere;line-height:1.5}.price-chip{display:inline-block;padding:5px 7px;border-radius:4px;font-size:9px;white-space:nowrap}.price-chip.changed{background:#e5efdc;color:#416541}.price-chip.neutral{background:#f2f1ec;color:#837e6d}.price-review-footer{margin-top:18px}.price-review-footer>label{font-size:12px}.price-review-actions{display:flex;justify-content:flex-end;gap:8px}@media(max-width:760px){dialog{padding:16px}.price-dialog-head h2{font-size:19px}.price-preview-scroll{max-height:42vh}}@media print{dialog{display:none!important}}
.database-description{margin-top:12px;padding:12px;background:#f5f7f0;border:1px solid #e4e9dc;border-radius:7px;font-size:11px}.database-description strong,.database-description>span:not(.database-tag){display:block;margin-top:8px}.database-description p{font-size:10px;margin-bottom:0;overflow-wrap:anywhere}.database-tag{font-size:8px;letter-spacing:.7px;background:#e5ecda;color:#61754b;border-radius:3px;padding:4px 6px}.price-active{padding:11px;background:#f7f8f5;color:#617465;font-size:10px;line-height:1.6;border-left:2px solid #96b578;overflow-wrap:anywhere}.connection-settings{margin:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0}.connection-settings summary{font-size:11px;font-weight:600;cursor:pointer}.database-meta{display:grid;grid-template-columns:1.4fr 1fr .65fr;gap:12px;padding:14px;background:#f3f6ee;border-radius:7px}.database-meta label{font-size:10px;font-weight:600}.database-meta input,.price-filter-row input[type=search]{width:100%;padding:9px;font-size:11px;border:1px solid #dbe3d4;border-radius:5px;margin-top:7px;color:var(--ink);background:white}.database-meta input:read-only{background:#eef1e9;color:#78846e}.database-save-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:12px 0 17px;font-size:10px}.database-save-row .button{padding:8px 11px;font-size:10px}.database-save-row span{color:#667e57}.price-filter-row{display:flex;align-items:center;gap:16px;margin-bottom:12px}.price-filter-row input[type=search]{max-width:350px;margin:0}.price-filter-row label{font-size:10px;white-space:nowrap}.price-preview-scroll{max-height:32vh}.price-total-preview{font-size:13px;font-weight:600;background:#edf3e3;padding:13px;margin:10px 0 16px;border-radius:6px;line-height:1.6}#price-no-results{text-align:center;padding:15px}.database-card{display:flex;justify-content:space-between;gap:15px;padding:17px;border:1px solid var(--line);border-radius:8px;margin:12px 0}.database-card strong,.database-card span{display:block}.database-card strong{font-size:14px}.database-card span{font-size:11px;color:var(--muted);margin:7px 0}.database-card p{font-size:10px;overflow-wrap:anywhere;max-width:600px}.database-card .button{padding:8px;font-size:11px}.database-card>div:last-child{min-width:120px}.database-empty{padding:25px;background:#f3f6ee;border-radius:8px;font-size:13px;line-height:1.7}.database-library-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.database-library-actions .file-label{cursor:pointer}.database-card>div:first-child{min-width:0}@media(max-width:760px){.database-meta{grid-template-columns:1fr;padding:10px;gap:8px}.database-meta input{padding:7px;margin-top:4px}.database-save-row{gap:8px;margin:9px 0}.price-filter-row{gap:9px}.price-filter-row input[type=search]{min-width:0;flex:1}.price-preview-scroll{max-height:26vh}.price-total-preview{font-size:11px;padding:10px}.database-card{flex-direction:column}.price-dialog-head h2{margin:6px 0}}
#database-details{margin-bottom:15px}#database-details>summary{font-size:11px;color:#466847;cursor:pointer;padding:10px 0}#database-details[open]>summary{margin-bottom:7px}
.database-source{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.database-source summary{cursor:pointer;font-size:10px;color:var(--muted)}
.words{font-weight:700}.signature{font-family:Arial,sans-serif}.summary .grand strong{font-weight:700}
.catalog-scroll{max-height:50vh;overflow:auto}.catalog-table{width:100%;border-collapse:collapse;font-size:12px}.catalog-table th,.catalog-table td{padding:12px;border-bottom:1px solid var(--line);text-align:left;overflow-wrap:anywhere}.catalog-table th{position:sticky;top:0;background:#edf3e3}.catalog-table .num{text-align:right;white-space:nowrap}.catalog-table .button{padding:8px;white-space:nowrap}.catalog-pages{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}.catalog-pages span{font-size:11px;text-align:center}#price-list-info,#price-list-status{overflow-wrap:anywhere}@media(max-width:600px){.catalog-table,.catalog-table tbody,.catalog-table tr,.catalog-table td{display:block}.catalog-table thead{display:none}.catalog-table tr{padding:10px;border:1px solid var(--line);border-radius:7px;margin-bottom:10px}.catalog-table td{padding:5px;border:0}.catalog-table td:first-child{font-weight:700}.catalog-table td:nth-child(2):before{content:'Satuan: '}.catalog-table .num{text-align:left}.catalog-pages{gap:6px}.catalog-pages .button{padding:9px 7px;font-size:10px}}
.catalog-add-settings{display:flex;align-items:end;gap:14px;margin:15px 0}.catalog-add-settings label{display:flex;flex-direction:column;gap:6px;font-size:12px;flex:1;min-width:0}.catalog-add-settings select,.catalog-add-settings input{width:100%;padding:10px;border:1px solid var(--line);border-radius:6px;background:white;color:var(--ink)}.catalog-add-settings p{flex:1;margin:0;font-size:11px}.catalog-table small{color:var(--muted)}.catalog-table td:last-child{min-width:180px}.catalog-table td:last-child button{margin:3px 0}@media(max-width:600px){.catalog-add-settings{flex-wrap:wrap}.catalog-add-settings label{flex-basis:45%}.catalog-add-settings p{flex-basis:100%}.catalog-table td:last-child{min-width:0}}
#sum-before-rounding{display:block;margin-top:8px;font-size:11px;color:var(--muted);line-height:1.5}
.document-toolbar .button{padding:7px 10px;font-size:11px;letter-spacing:0}@media(max-width:760px){.document-toolbar{flex-wrap:wrap;gap:9px}.document-toolbar label{margin-left:0}.document-toolbar>span:last-child{margin-left:auto}}

.app-footer{padding:22px 20px 30px;text-align:center;border-top:1px solid var(--line);font-size:12px;color:var(--muted);background:#fff}.app-footer a{margin-left:4px;color:var(--green);font-weight:700;text-decoration:none}.app-footer a:hover{text-decoration:underline}@media print{.app-footer{display:none!important}}
