:root { --orange: #ff5a00; --orange-dark: #df4300; --black: #101010; --paper: #f7f4ef; --white: #fff; --muted: #716d67; --line: #ddd8d1; --soft-orange: #fff0e8; --red: #b62d16; }
* { box-sizing: border-box; }
body { margin: 0; color: var(--black); background: var(--paper); font-family: Arial, sans-serif; }
button, input, select { font: inherit; }
[hidden], #transferFields[hidden], #transferNote[hidden] { display: none !important; }
.app-shell { max-width: 1440px; margin: auto; padding: 30px 30px 30px 286px; }
.topbar, .period-bar, .section-heading, .panel-heading, .modal-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.topbar { position: fixed; z-index: 1; top: 30px; left: max(20px, calc((100vw - 1440px) / 2 + 20px)); width: 220px; min-height: calc(100vh - 60px); padding: 18px 13px; border: 1px solid var(--line); border-radius: 20px; background: var(--white); flex-direction: column; align-items: stretch; justify-content: flex-start; box-shadow: 0 8px 30px #2b21070a; }
.brand-logo { width: 104px; height: 43px; object-fit: contain; object-position: left center; margin: 2px 8px 4px; }
.sidebar-label { margin: 3px 10px 16px; color: var(--muted); font-size: .61rem; font-weight: 800; letter-spacing: .13em; }
.header-actions { display: flex; flex-direction: column; width: 100%; gap: 3px; }
.sync-status { display: inline-flex; align-items: center; gap: 7px; margin: 0 5px 12px; padding: 8px 9px; border: 0; border-radius: 8px; background: var(--paper); color: var(--muted); cursor: pointer; font-size: .68rem; font-weight: 700; }
.sidebar-action, .sidebar-cta { display: flex; align-items: center; width: 100%; gap: 10px; border: 0; border-radius: 9px; padding: 10px 10px; background: transparent; color: var(--black); font-size: .76rem; font-weight: 700; text-align: left; cursor: pointer; }.sidebar-action:hover { background: var(--paper); }.sidebar-action > span { display: grid; place-items: center; width: 18px; color: var(--orange-dark); font-size: .95rem; }.sidebar-signout { margin-top: auto; color: var(--muted); }.sidebar-signout > span { color: var(--muted); }.sidebar-cta { justify-content: center; margin-top: 8px; background: var(--orange); color: var(--black); }.sidebar-cta:hover { background: var(--orange-dark); color: var(--white); }.sidebar-cta span { font-size: 1.15rem; line-height: .7; }
.sync-status span:first-child { width: 8px; height: 8px; border-radius: 50%; background: #9a9690; }.sync-status.online span:first-child { background: #1c8c55; }.sync-status.saving span:first-child { background: var(--orange); }
.button { border: 1px solid transparent; border-radius: 9px; padding: 11px 15px; font-weight: 700; cursor: pointer; }
.button.primary { background: var(--orange); color: var(--black); }
.button.primary:hover { background: var(--orange-dark); color: var(--white); }
.button.secondary { background: var(--white); border-color: var(--black); color: var(--black); }
.button.full { width: 100%; margin-top: 20px; }
.period-bar { padding: 30px 0 20px; align-items: end; }
.eyebrow { margin: 0 0 5px; color: var(--orange-dark); font-size: .7rem; font-weight: 700; letter-spacing: .13em; }
h1, h2, p { margin: 0; } h1 { font-size: 2rem; letter-spacing: -.035em; } h2 { font-size: 1.18rem; }
.month-label { color: var(--muted); font-size: .76rem; font-weight: 700; }
.month-label select, .ledger-filters select { display: block; width: 100%; min-width: 170px; margin-top: 5px; border: 1px solid var(--line); border-radius: 8px; padding: 9px 10px; background: var(--white); color: var(--black); }
.account-section { margin-bottom: 16px; }
.section-heading { margin-bottom: 12px; align-items: end; }
.section-heading small { color: var(--muted); font-size: .74rem; }
.account-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.account-card { min-height: 128px; padding: 16px; border: 1px solid var(--black); border-radius: 12px; background: var(--black); color: var(--white); }
.account-card:nth-child(2), .account-card:nth-child(4) { background: var(--white); color: var(--black); }
.account-icon { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--orange); color: var(--black); font-weight: 900; }
.account-card p { margin-top: 17px; color: inherit; opacity: .72; font-size: .7rem; font-weight: 700; }
.account-card strong { display: block; margin-top: 6px; font-size: 1.1rem; letter-spacing: -.025em; }
.summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 26px; }
.summary-card { display: flex; gap: 12px; padding: 17px; min-height: 106px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); }
.summary-card.emphasis { display: block; border-color: var(--orange); background: var(--soft-orange); }
.summary-card p { color: var(--muted); font-size: .75rem; font-weight: 700; }
.summary-card strong { display: block; margin: 8px 0 4px; font-size: 1.15rem; letter-spacing: -.025em; }
.summary-card small { color: var(--muted); font-size: .7rem; }
.sales-report { margin-top: 26px; padding: 18px; border: 1px solid var(--black); border-radius: 12px; background: var(--white); }
.sales-report-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.sales-card { min-height: 106px; padding: 15px; border-radius: 10px; background: var(--soft-orange); }
.sales-card.qris { background: #eef4ff; }.sales-card.total { background: var(--black); color: var(--white); }
.sales-card span { display: block; font-size: .7rem; font-weight: 800; letter-spacing: .08em; }.sales-card strong { display: block; margin: 15px 0 6px; font-size: 1.15rem; }.sales-card small { font-size: .7rem; opacity: .7; }
.sales-days { display: grid; gap: 11px; margin-top: 20px; }.sales-day { display: grid; grid-template-columns: 110px 1fr 108px; align-items: center; gap: 9px; font-size: .75rem; }.sales-day b { text-align: right; }
.summary-icon { display: grid; flex: none; place-items: center; width: 35px; height: 35px; border-radius: 50%; font-weight: 900; }
.incoming { background: #e9f7ef; color: #177344; } .outgoing { background: #fdebe6; color: var(--red); }
.dashboard-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 14px; margin-top: 26px; }
.panel { border: 1px solid var(--line); border-radius: 12px; background: var(--white); padding: 18px; }
.category-chart { display: grid; gap: 15px; margin-top: 22px; }
.chart-row { display: grid; grid-template-columns: 126px 1fr 108px; align-items: center; gap: 9px; font-size: .78rem; }
.chart-row span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.chart-row b { text-align: right; font-size: .75rem; }
.bar-track { height: 10px; overflow: hidden; border-radius: 999px; background: #eee9e3; }.bar { height: 100%; border-radius: inherit; background: var(--orange); }
.ledger-panel { margin-top: 14px; }.ledger-filters { display: flex; gap: 8px; }.ledger-filters select { min-width: 0; margin: 0; }
.transaction-list { margin-top: 17px; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; }.transaction-list.compact { margin-top: 15px; }
.transaction { display: flex; align-items: center; gap: 11px; padding: 13px; border-bottom: 1px solid var(--line); }.transaction:last-child { border: 0; }
.transaction-icon { display: grid; flex: none; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--soft-orange); color: var(--orange-dark); font-weight: 900; }.transaction-icon.income { background: #e9f7ef; color: #177344; }.transaction-icon.transfer { background: #eeece7; color: var(--black); }
.transaction-info { min-width: 0; flex: 1; }.transaction-info b, .transaction-info small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.transaction-info b { font-size: .82rem; }.transaction-info small { margin-top: 4px; color: var(--muted); font-size: .68rem; }.transaction-value { font-size: .82rem; white-space: nowrap; }.transaction-value.expense { color: var(--red); }.transaction-value.income { color: #177344; }.transaction-value.transfer { color: var(--muted); }
.transaction .edit-transaction { margin-left: 6px; font-size: .72rem; }
.empty { padding: 28px; color: var(--muted); text-align: center; font-size: .82rem; }.form-error { margin: 12px 0 0; color: var(--red); font-size: .76rem; }
dialog { width: min(94vw, 510px); border: 0; border-radius: 14px; padding: 0; box-shadow: 0 24px 80px #0006; } dialog::backdrop { background: #0009; } dialog form { padding: 22px; }
.page-view[open] { position: static; display: block; width: auto; max-width: none; min-height: calc(100vh - 60px); margin: 0; border: 1px solid var(--line); border-radius: 18px; background: var(--white); box-shadow: none; }.page-view[open] form, .page-view[open] .sales-dashboard-content { max-width: 1040px; margin: auto; padding: 30px; }.page-view[open] .modal-heading { margin-bottom: 28px; }.page-view[open] .close-button { border: 1px solid var(--line); background: var(--paper); }.page-view[open]::backdrop { display: none; }
.sales-dashboard-dialog { width: min(94vw, 760px); }.sales-dashboard-content { padding: 22px; }.sales-dashboard-chart { display: grid; gap: 10px; margin-top: 22px; }.dashboard-chart-row { display: grid; grid-template-columns: 105px 1fr 108px; gap: 10px; align-items: center; font-size: .75rem; }.dashboard-chart-row > div { display: grid; gap: 4px; }.chart-series { min-height: 9px; border-radius: 999px; }.cash-series { background: var(--orange); }.qris-series { background: #5387e8; }.dashboard-chart-row b { text-align: right; font-size: .72rem; }
.monthly-reports-dialog { width: min(94vw, 650px); }.monthly-reports-content { padding: 22px; }.month-report-picker { display: block; max-width: 250px; margin-top: 18px; font-size: .76rem; font-weight: 700; }.monthly-report-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 18px; }.monthly-report-option { display: grid; gap: 6px; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--white); text-align: left; cursor: pointer; }.monthly-report-option:hover { border-color: var(--orange); background: var(--soft-orange); }.monthly-report-option span { font-size: .82rem; font-weight: 800; }.monthly-report-option small { color: var(--muted); font-size: .7rem; }.monthly-report-option b { margin-top: 8px; color: var(--orange-dark); font-size: .72rem; }
.owner-control-dialog { width: min(94vw, 760px); }.owner-control-content { padding: 22px; }.owner-control-section { margin-top: 25px; }.lock-period-row { display: flex; align-items: end; gap: 10px; }.lock-period-row label { flex: 1; max-width: 260px; font-size: .76rem; font-weight: 700; }.control-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: .78rem; }.control-item b, .control-item small { display: block; }.control-item small { margin-top: 4px; color: var(--muted); font-size: .68rem; line-height: 1.4; }
.close-button { width: 34px; height: 34px; border: 0; border-radius: 50%; background: #efede9; font-size: 1.4rem; cursor: pointer; }.type-picker { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 20px 0 14px; }.type-picker input { position: absolute; opacity: 0; }.type-picker span { display: block; padding: 10px 6px; border: 1px solid var(--line); border-radius: 8px; text-align: center; font-size: .77rem; font-weight: 700; cursor: pointer; }.type-picker input:checked + span { border-color: var(--orange); background: var(--soft-orange); color: var(--orange-dark); }
.form-grid, .transfer-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } form > label, .transfer-fields label, .opening-fields label { display: block; margin-top: 13px; font-size: .76rem; font-weight: 700; } form > label span { color: var(--muted); font-weight: 400; } input, select { display: block; width: 100%; margin-top: 6px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; color: var(--black); background: var(--white); }.transfer-note, .helper { margin: 14px 0 0; color: var(--muted); font-size: .75rem; line-height: 1.45; }.opening-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0 10px; }
#toast { position: fixed; z-index: 2; bottom: 22px; left: 50%; padding: 11px 16px; border-radius: 8px; background: var(--black); color: var(--white); transform: translate(-50%, 70px); opacity: 0; transition: .2s; font-size: .8rem; } #toast.show { transform: translate(-50%, 0); opacity: 1; }
.login-dialog { width: min(94vw, 440px); }.login-dialog::backdrop { background: #000b; }.login-card { padding: 34px; border-radius: 16px; background: var(--white); }.login-logo { width: 118px; height: 46px; object-fit: contain; object-position: left; margin-bottom: 24px; }.login-card h1 { font-size: 1.8rem; line-height: 1.06; }.login-card p:not(.eyebrow) { margin-top: 13px; color: var(--muted); line-height: 1.5; }.local-login-label { display: block; margin-top: 22px; font-size: .8rem; font-weight: 700; }.login-help { font-size: .73rem; }
.registered-users { margin-top: 20px; }.registered-user { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: .78rem; }.registered-user b, .registered-user span { display: block; }.registered-user span { margin-top: 4px; color: var(--muted); font-size: .68rem; }.row-actions { display: flex; gap: 10px; flex: none; }.danger-action { color: var(--red); }.account-rules { margin: 18px 0 0; padding: 12px; border: 1px solid var(--line); border-radius: 9px; }.account-rules legend { padding: 0 5px; font-size: .76rem; font-weight: 700; }.account-rules div { display: grid; gap: 8px; }.account-rules label { display: flex; align-items: center; gap: 8px; font-size: .75rem; }.account-rules input { display: inline-block; width: auto; margin: 0; }.user-settings-actions { display: flex; gap: 8px; margin-top: 20px; }.user-settings-actions .button { flex: 1; }
.sales-dialog { width: min(96vw, 900px); }.baling-field { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 10px; }.baling-field .button { margin-bottom: 0; }.report-items-heading { display: flex; justify-content: space-between; align-items: center; margin-top: 20px; font-size: .8rem; }.text-action { border: 0; padding: 0; background: transparent; color: var(--orange-dark); font-weight: 700; cursor: pointer; }.sales-item-labels, .sales-item { display: grid; grid-template-columns: minmax(145px, 1.4fr) 86px 86px 120px 120px 48px 30px; gap: 8px; min-width: 710px; }.sales-item-labels { margin-top: 10px; padding: 0 10px; color: var(--muted); font-size: .64rem; font-weight: 700; }.sales-items { overflow-x: auto; border: 1px solid var(--line); border-radius: 9px; }.sales-item { align-items: center; padding: 9px; border-bottom: 1px solid var(--line); }.sales-item:last-child { border: 0; }.sales-item input { margin: 0; }.sales-total, .sales-remaining { font-size: .76rem; text-align: right; }.remove-sales-item { border: 0; border-radius: 50%; width: 25px; height: 25px; background: #f0ece7; cursor: pointer; font-size: 1rem; }.sales-payment { display: grid; grid-template-columns: 1fr 1fr 1.15fr; gap: 10px; align-items: end; margin-top: 16px; }.sales-payment label { font-size: .76rem; font-weight: 700; }.sales-payment div { padding: 11px; border-radius: 9px; background: var(--black); color: var(--white); }.sales-payment span, .sales-payment strong { display: block; }.sales-payment span { font-size: .67rem; opacity: .72; }.sales-payment strong { margin-top: 5px; font-size: 1rem; }.shortfall-row { display: flex; justify-content: space-between; padding: 11px; margin-top: 10px; border-radius: 9px; background: #fff0e8; font-size: .8rem; }.shortfall-row strong { color: var(--orange-dark); }.all-cart-approval { margin-top: 18px; }.sales-search { display: block; margin-top: 16px; font-size: .76rem; font-weight: 700; }.all-carts-data { overflow-x: auto; margin-top: 10px; border: 1px solid var(--line); border-radius: 9px; }.all-carts-table { min-width: 690px; }.all-carts-head, .all-carts-row { display: grid; grid-template-columns: minmax(180px, 1.4fr) 120px 120px 90px 90px; gap: 8px; align-items: center; padding: 10px; }.all-carts-head { color: var(--muted); background: #f3f0eb; font-size: .64rem; font-weight: 800; }.all-carts-row { border-top: 1px solid var(--line); font-size: .75rem; }.all-carts-row span b, .all-carts-row span small { display: block; }.all-carts-row span small { margin-top: 3px; color: var(--muted); }.cart-approval.approved { color: #177344; }.approval-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px; margin-top: 9px; border: 1px solid var(--line); border-radius: 10px; background: var(--white); }.approval-row span, .approval-row strong { display: block; }.approval-row span { font-size: .68rem; font-weight: 800; letter-spacing: .08em; }.approval-row strong { margin-top: 5px; font-size: 1.05rem; }.approval-button.approved { border-color: #177344; background: #e9f7ef; color: #177344; }.report-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 20px; }
@media (max-width: 760px) { .app-shell { padding: 16px; }.account-grid { grid-template-columns: repeat(2, 1fr); }.summary-grid, .dashboard-grid, .sales-report-grid { grid-template-columns: 1fr; }.period-bar { align-items: start; flex-direction: column; }.month-label { width: 100%; }.month-label select { width: 100%; }.ledger-filters { width: 100%; }.panel-heading { align-items: start; flex-direction: column; }.ledger-filters select { flex: 1; }.brand-logo { width: 112px; }.button { padding: 10px; font-size: .76rem; } }
@media (max-width: 440px) { .topbar { align-items: flex-start; flex-direction: column; }.header-actions { width: 100%; }.header-actions .button { flex: 1; }.chart-row, .sales-day { grid-template-columns: 92px 1fr 85px; }.chart-row b { font-size: .68rem; }.form-grid, .transfer-fields, .opening-fields, .sales-payment, .final-balances, .baling-field, .monthly-report-options { grid-template-columns: 1fr; }.type-picker { grid-template-columns: 1fr; }.account-card strong { font-size: 1rem; }.transaction-value { font-size: .73rem; }.login-card { padding: 25px; }.report-actions { flex-direction: column; }.report-actions .button { width: 100%; }.lock-period-row { align-items: stretch; flex-direction: column; }.lock-period-row label { max-width: none; } }
