:root{--blue:#155eef;--blue-dark:#0b4ccc;--blue-soft:#edf4ff;--ink:#172033;--muted:#6c778c;--line:#e5eaf1;--bg:#f5f7fb;--white:#fff;--green:#15966c;--danger:#dc3545;--shadow:0 8px 28px rgba(31,46,75,.08)}
*{box-sizing:border-box}body{margin:0;font-family:"DM Sans",sans-serif;color:var(--ink);background:var(--bg);font-size:14px}button,input,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:240px;background:#111b2e;color:#d9e2f1;padding:28px 16px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 28px}.brand-mark{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#3f7cff,#155eef);font-size:21px;font-weight:700;color:#fff;box-shadow:0 8px 20px rgba(21,94,239,.35)}.brand strong,.brand small{display:block}.brand strong{font-size:18px;color:#fff}.brand small{font-size:11px;color:#8fa0bc;margin-top:2px}.nav{display:grid;gap:6px}.nav-item{border:0;background:transparent;color:#9caac0;text-align:left;padding:12px 13px;border-radius:10px;font-weight:500}.nav-item span{display:inline-block;width:25px;font-size:17px}.nav-item:hover,.nav-item.active{background:rgba(63,124,255,.15);color:#fff}.nav-item.active{box-shadow:inset 3px 0 #4c83ff}.sidebar-card{margin-top:auto;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);border-radius:12px;padding:13px;display:flex;align-items:center;gap:10px}.status-dot{width:9px;height:9px;border-radius:50%;background:#f4a629;box-shadow:0 0 0 4px rgba(244,166,41,.12)}.sidebar-card.connected .status-dot{background:#32c68b}.sidebar-card strong,.sidebar-card small{display:block}.sidebar-card strong{font-size:12px;color:#eaf0fa}.sidebar-card small{font-size:10px;color:#8494ad;margin-top:3px}.sidebar-footer{font-size:10px;color:#697a95;text-align:center;margin-top:18px;line-height:1.5}.sidebar-footer span{color:#4f607b}.main{margin-left:240px;min-height:100vh}.topbar{height:86px;background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 30px;position:sticky;top:0;z-index:20}.topbar h1{font-size:20px;margin:0 0 4px}.topbar p{font-size:12px;color:var(--muted);margin:0}.top-actions{margin-left:auto;display:flex;gap:10px}.btn{border:0;border-radius:9px;padding:10px 15px;font-weight:600;font-size:13px;transition:.15s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 6px 14px rgba(21,94,239,.2)}.btn-primary:hover{background:var(--blue-dark)}.btn-ghost{background:#fff;color:#384358;border:1px solid var(--line)}.btn-soft{color:var(--blue);background:var(--blue-soft);padding:8px 12px}.btn-dark{background:#172033;color:#fff}.btn-danger{background:var(--danger);color:#fff}.icon-btn{border:0;background:none}.menu-btn{display:none;margin-right:10px}.view{display:none;padding:26px 30px}.view.active{display:block}.editor-layout{display:grid;grid-template-columns:minmax(560px,1fr) 390px;gap:24px;align-items:start}.form-column{display:grid;gap:18px}.card{background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 2px 5px rgba(31,46,75,.02);padding:22px}.card-title{display:flex;align-items:center;gap:12px;margin-bottom:21px}.card-title h2{font-size:15px;margin:0 0 3px}.card-title p{font-size:11px;color:var(--muted);margin:0}.step{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--blue-soft);color:var(--blue);font-weight:700}.row-title{justify-content:space-between}.title-with-step{display:flex;gap:12px;align-items:center}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.form-grid .full{grid-column:1/-1}label{display:grid;gap:7px;color:#465167;font-size:11px;font-weight:600}.optional{font-weight:400;color:#9aa4b5;margin-left:3px}input,textarea{width:100%;border:1px solid #dfe5ee;border-radius:8px;padding:10px 11px;color:var(--ink);background:#fff;outline:none;font-weight:400;font-size:13px;transition:.15s}textarea{resize:vertical}input:focus,textarea:focus{border-color:#75a1f9;box-shadow:0 0 0 3px rgba(21,94,239,.08)}.items-head,.item-row{display:grid;grid-template-columns:minmax(170px,2fr) 58px 76px 120px 105px 32px;gap:8px;align-items:center}.items-head{font-size:10px;color:#8a95a8;text-transform:uppercase;letter-spacing:.04em;padding:0 3px 7px}.items-list{display:grid;gap:8px}.item-row input,.item-row select{min-width:0;border:1px solid #dfe5ee;border-radius:8px;padding:9px;font-size:12px;background:#fff}.item-total{text-align:right;font-size:12px;font-weight:600;white-space:nowrap}.remove-item{border:0;background:#fff2f3;color:#d9485b;border-radius:7px;width:30px;height:32px;font-size:16px}.add-row{width:100%;border:1px dashed #cbd6e5;background:#fafcff;color:#5b6780;border-radius:9px;padding:10px;margin-top:11px;font-size:12px}.payment-layout{display:grid;grid-template-columns:1fr 280px;gap:28px}.notes-label{align-self:start}.totals-box{background:#f8faff;border:1px solid #e6ecf6;border-radius:12px;padding:16px;display:grid;gap:11px}.totals-box>div,.totals-box>label{display:flex;align-items:center;justify-content:space-between;font-size:12px}.totals-box label{display:flex}.totals-box strong{font-size:13px}.grand-total{border-top:1px dashed #cbd5e4;border-bottom:1px dashed #cbd5e4;padding:12px 0;color:var(--blue)}.grand-total strong{font-size:18px}.money-input{display:flex;align-items:center;border:1px solid #dfe5ee;background:#fff;border-radius:7px;padding-left:8px;font-weight:500}.money-input input{width:100px;border:0;padding:7px 8px;text-align:right;box-shadow:none}.preview-column{position:sticky;top:112px}.preview-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.preview-toolbar strong,.preview-toolbar small{display:block}.preview-toolbar strong{font-size:13px}.preview-toolbar small{color:var(--muted);font-size:10px;margin-top:2px}.segmented{background:#e9edf4;border-radius:8px;padding:3px;display:flex}.segmented button{border:0;background:transparent;color:#718097;padding:6px 10px;border-radius:6px;font-size:10px;font-weight:600}.segmented button.active{background:#fff;color:var(--blue);box-shadow:0 1px 5px rgba(31,46,75,.13)}.paper-stage{background:#dfe4ec;border-radius:15px;padding:25px;max-height:calc(100vh - 235px);overflow:auto;box-shadow:inset 0 2px 8px rgba(31,46,75,.08)}.receipt{margin:auto;background:#fff;color:#111;box-shadow:0 6px 22px rgba(38,48,65,.18);transition:width .2s;min-height:520px}.receipt.thermal{width:280px;padding:22px 16px;font-family:"DM Mono",monospace;font-size:10px;line-height:1.45}.receipt.a4{width:100%;min-height:600px;padding:34px;font-family:"DM Sans",sans-serif;font-size:10px}.receipt .r-store{text-align:center;margin-bottom:12px}.receipt .r-store h2{font-size:15px;margin:0 0 3px}.receipt .r-store p{margin:0;white-space:pre-line}.receipt .r-rule{border-top:1px dashed #222;margin:10px 0}.receipt .r-meta{display:grid;grid-template-columns:67px 7px 1fr;gap:2px}.receipt .r-item{margin:8px 0}.receipt .r-item-name{font-weight:500}.receipt .r-item-detail{display:grid;grid-template-columns:1fr auto auto;gap:8px}.receipt .r-summary{display:grid;grid-template-columns:1fr auto;gap:4px}.receipt .r-summary .r-grand{font-weight:700;font-size:12px;margin-top:3px}.receipt .r-footer{text-align:center;white-space:pre-line;margin-top:12px}.receipt.a4 .r-store{text-align:left;border-bottom:2px solid #172033;padding-bottom:14px}.receipt.a4 .r-store h2{font-size:22px}.receipt.a4 .r-meta{margin:18px 0;grid-template-columns:90px 8px 1fr}.receipt.a4 .r-items-table{width:100%;border-collapse:collapse;margin:20px 0}.receipt.a4 .r-items-table th,.receipt.a4 .r-items-table td{padding:9px;border-bottom:1px solid #ddd;text-align:left}.receipt.a4 .r-items-table th{background:#f2f4f7}.receipt.a4 .r-items-table .num{text-align:right}.receipt.a4 .r-summary{margin-left:auto;width:240px}.btn-print{width:100%;margin-top:12px}.history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.history-header h2,.settings-intro h2{font-size:18px;margin:0 0 4px}.history-header p,.settings-intro p{color:var(--muted);font-size:12px;margin:0}.search-box{border:1px solid var(--line);border-radius:9px;background:#fff;padding:0 11px;color:#8a95a8;display:flex;align-items:center;width:290px}.search-box input{border:0;box-shadow:none;padding:10px 7px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}.stat-card{padding:19px;border-radius:13px;background:#fff;border:1px solid var(--line)}.stat-card span,.stat-card small,.stat-card strong{display:block}.stat-card span{font-size:11px;color:var(--muted)}.stat-card strong{font-size:23px;margin:8px 0 4px}.stat-card small{font-size:10px;color:#9aa4b5}.stat-card.blue{background:#edf4ff;border-color:#d8e6ff}.stat-card.blue strong{color:var(--blue)}.stat-card.green{background:#edfbf6;border-color:#d5f3e8}.stat-card.green strong{color:var(--green)}.table-card{padding:0;overflow:hidden}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:14px 17px;border-bottom:1px solid #edf0f5;text-align:left;font-size:12px}th{color:#7c879b;background:#fafbfc;font-size:10px;text-transform:uppercase}td strong{color:var(--blue)}.table-actions{display:flex;gap:5px}.table-actions button{border:0;border-radius:6px;padding:6px 8px;font-size:11px}.edit-action{background:var(--blue-soft);color:var(--blue)}.print-action{background:#eef8f4;color:var(--green)}.delete-action{background:#fff0f1;color:var(--danger)}.empty-state{text-align:center;padding:70px 20px;color:#8a95a8}.empty-state span{font-size:36px}.empty-state h3{color:#3e4a60;margin:10px 0 4px}.empty-state p{margin:0;font-size:12px}.settings-wrap{max-width:700px;margin:0 auto}.settings-intro{margin-bottom:18px}.settings-card{display:grid;gap:17px}.settings-save{justify-self:start}.toast{position:fixed;right:24px;bottom:24px;background:#172033;color:#fff;border-radius:10px;padding:12px 17px;box-shadow:var(--shadow);transform:translateY(90px);opacity:0;transition:.25s;z-index:100;font-size:12px}.toast.show{transform:translateY(0);opacity:1}.toast.error{background:#bd2c3c}.modal-backdrop{position:fixed;inset:0;background:rgba(15,24,40,.45);display:none;place-items:center;z-index:90;backdrop-filter:blur(2px)}.modal-backdrop.show{display:grid}.modal{width:min(380px,calc(100vw - 32px));background:#fff;border-radius:15px;text-align:center;padding:28px;box-shadow:0 24px 70px rgba(15,24,40,.24)}.modal-icon{width:44px;height:44px;background:#fff0f1;color:var(--danger);border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;font-size:21px;font-weight:700}.modal h3{margin:0 0 7px}.modal p{color:var(--muted);font-size:12px;line-height:1.5;margin:0 0 20px}.modal>div:last-child{display:flex;justify-content:center;gap:8px}
.templates-intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.templates-intro h2{font-size:18px;margin:0 0 4px}.templates-intro p{color:var(--muted);font-size:12px;margin:0}.current-template{background:var(--blue-soft);color:#62708a;border:1px solid #dbe7ff;border-radius:10px;padding:10px 14px;font-size:11px}.current-template strong{color:var(--blue);margin-left:3px}.template-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:18px}.template-card{background:#fff;border:2px solid transparent;border-radius:15px;padding:13px;box-shadow:0 3px 12px rgba(31,46,75,.06);transition:.2s}.template-card:hover{transform:translateY(-3px);box-shadow:0 10px 28px rgba(31,46,75,.11)}.template-card.selected{border-color:var(--blue);box-shadow:0 8px 24px rgba(21,94,239,.13)}.template-preview{height:300px;max-width:205px;margin:0 auto 15px;padding:22px 17px;background:#fff;color:#171717;border:1px solid #e1e5eb;box-shadow:0 5px 16px rgba(31,46,75,.1);font-family:"DM Mono",monospace;font-size:7px;line-height:1.5}.mini-store{text-align:center;font-size:12px;font-weight:700;margin-bottom:3px}.mini-store.left{text-align:left}.mini-text{font-size:6px;color:#555}.mini-text.center,.mini-thanks{text-align:center}.mini-dash{border-top:1px dashed #333;margin:10px 0}.mini-line{border-top:1px solid #d1d5db;margin:11px 0}.mini-thick-line{border-top:3px solid #111;margin:10px 0}.mini-elegant-line{width:70%;border-top:1px solid #84745d;margin:11px auto}.mini-row{display:flex;justify-content:space-between;gap:8px;margin:5px 0}.mini-row.total{font-size:9px;margin-top:9px}.mini-product{font-weight:600;margin-top:8px}.mini-thanks{margin-top:22px;font-size:6px}.mini-thanks.left{text-align:left}.mini-space{height:20px}.mini-modern-head{background:#155eef;color:#fff;margin:-22px -17px 14px;padding:17px;display:flex;align-items:flex-end;justify-content:space-between;font-size:6px}.mini-modern-head .mini-store{font-size:10px;margin:0}.mini-total-box{background:#edf4ff;color:#155eef;padding:10px;margin-top:17px;display:flex;justify-content:space-between;font-size:9px}.preview-minimal{font-family:"DM Sans",sans-serif;padding-top:28px}.preview-bold{border:2px solid #111}.mini-bold-head{background:#111;color:#fff;margin:-22px -17px 8px;padding:18px;text-align:center;font-size:13px;font-weight:700;letter-spacing:1px}.mini-bold-total{background:#111;color:#fff;margin:18px -8px 0;padding:10px;display:flex;justify-content:space-between;font-size:10px;font-weight:700}.preview-elegant{font-family:Georgia,serif;border-color:#b8a98e}.mini-ornament{text-align:center;color:#8b7355;font-size:9px}.preview-elegant .mini-store{font-family:Georgia,serif;font-size:13px;font-weight:400}.template-info{display:flex;align-items:center;justify-content:space-between;padding:0 2px 12px}.template-info h3{font-size:14px;margin:0 0 3px}.template-info p{font-size:10px;color:var(--muted);margin:0}.template-check{display:none;width:25px;height:25px;border-radius:50%;background:var(--blue);color:#fff;place-items:center;font-weight:700}.template-card.selected .template-check{display:grid}.template-select{width:100%;background:#f1f4f8;color:#536078}.template-card:not(.selected) .template-select:hover{background:var(--blue);color:#fff}.template-card.selected .template-select{background:var(--blue-soft);color:var(--blue);cursor:default}.receipt.template-modern .r-store{background:#155eef;color:#fff;margin:-22px -16px 14px;padding:20px 16px}.receipt.template-modern .r-rule{border-color:#91b1f6}.receipt.template-modern .r-summary .r-grand{color:#155eef}.receipt.template-modern.a4 .r-store{margin:-34px -34px 18px;padding:28px 34px;border:0}.receipt.template-minimal{font-family:"DM Sans",sans-serif;line-height:1.6}.receipt.template-minimal .r-store{text-align:left;margin-bottom:20px}.receipt.template-minimal .r-store h2{font-size:18px}.receipt.template-minimal .r-rule{border-top:1px solid #d7d7d7}.receipt.template-minimal .r-footer{text-align:left;margin-top:22px}.receipt.template-bold .r-store{background:#111;color:#fff;margin:-22px -16px 12px;padding:18px 12px}.receipt.template-bold .r-store h2{text-transform:uppercase;letter-spacing:1px}.receipt.template-bold .r-rule{border-top:2px solid #111}.receipt.template-bold .r-summary .r-grand{background:#111;color:#fff;margin:3px -5px 0;padding:6px 5px}.receipt.template-bold.a4 .r-store{margin:-34px -34px 18px;padding:28px 34px;border:0}.receipt.template-elegant{font-family:Georgia,"Times New Roman",serif;border:1px solid #b8a98e}.receipt.template-elegant .r-store h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:18px}.receipt.template-elegant .r-rule{width:75%;margin:12px auto;border-color:#9d8b70}.receipt.template-elegant .r-footer{font-style:italic}.receipt.template-elegant.a4 .r-store{border-color:#9d8b70}.receipt.template-elegant.a4 .r-items-table th{background:#f6f2eb}
@media(max-width:1180px){.editor-layout{grid-template-columns:1fr 350px}.items-head{display:none}.item-row{grid-template-columns:1fr 60px 75px 110px 90px 32px}.payment-layout{grid-template-columns:1fr}.template-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}}
@media(max-width:960px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.menu-btn{display:block}.editor-layout{grid-template-columns:1fr}.preview-column{position:static}.paper-stage{max-height:none}.receipt.a4{max-width:650px}.stats-grid{grid-template-columns:1fr}.view{padding:20px}.topbar{padding:0 20px}}
@media(max-width:650px){.topbar{height:auto;min-height:76px;flex-wrap:wrap;padding:14px}.top-actions{width:100%;margin:11px 0 0}.top-actions .btn{flex:1}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.card{padding:16px}.item-row{grid-template-columns:1fr 55px 70px 32px;padding-bottom:10px;border-bottom:1px solid var(--line)}.item-row .item-price{grid-column:1/3}.item-total{display:none}.history-header{align-items:stretch;flex-direction:column;gap:12px}.search-box{width:100%}.paper-stage{padding:15px}.view{padding:14px}.receipt.thermal{width:100%;max-width:280px}.receipt.a4{padding:20px}.row-title{align-items:flex-start}.row-title .btn{font-size:0}.row-title .btn:after{content:'＋';font-size:15px}.templates-intro{align-items:flex-start;flex-direction:column;gap:12px}.template-grid{grid-template-columns:1fr}.template-preview{height:280px}}
@media print{body{background:#fff}.app-shell,.toast,.modal-backdrop{display:none!important}#printArea{display:block!important;box-shadow:none!important;margin:0!important}.print-root{display:block!important}.print-root.thermal{width:80mm!important;padding:4mm!important;font-size:10pt}.print-root.a4{width:210mm!important;min-height:297mm!important;padding:15mm!important}@page{margin:0}}
.template-card{position:relative}.template-card.selected:before{content:'TERPILIH';position:absolute;z-index:2;top:22px;right:22px;background:var(--blue);color:#fff;border-radius:20px;padding:5px 9px;font-size:8px;font-weight:700;letter-spacing:.08em;box-shadow:0 4px 10px rgba(21,94,239,.25)}
