:root{--canvas: #eef0ec;--surface: #ffffff;--surface-soft: #f4f0ea;--ink: #242a27;--muted: #66706a;--line: #d8dfd8;--accent: #8f9b8f;--accent-warm: #b8aaa0;--danger: #a5685f}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--canvas);color:var(--ink);line-height:1.6}h1,h2,h3,h4,h5,h6{color:var(--ink);font-weight:600;line-height:1.3}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:.875rem;padding:.5rem .75rem;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);transition:border-color .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #8f9b8f33}label{font-size:.8125rem;font-weight:500;color:var(--muted)}.text-muted{color:var(--muted)}.text-danger{color:var(--danger)}.app-shell{display:flex;min-height:100vh}.app-nav{width:200px;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}.app-nav-brand{display:flex;align-items:center;gap:.625rem;font-size:1rem;font-weight:700;color:var(--ink);padding:1.25rem 1rem;border-bottom:1px solid var(--line);letter-spacing:.02em}.app-nav-brand img{width:2rem;height:2rem;border-radius:8px;box-shadow:0 1px 4px #242a271f;flex-shrink:0}.app-nav-list{list-style:none;padding:.5rem 0;flex:1}.app-nav-item{display:flex;align-items:center;gap:.625rem;width:100%;padding:.625rem 1rem;border:none;background:transparent;color:var(--muted);font-size:.875rem;text-align:left;transition:background-color .15s ease,color .15s ease}.app-nav-item:hover{background:var(--surface-soft);color:var(--ink)}.app-nav-item.active{background:var(--surface-soft);color:var(--ink);font-weight:600;border-right:3px solid var(--accent)}.app-nav-icon{font-size:.75rem;width:1.5rem;height:1.5rem;border:1px solid var(--line);border-radius:6px;background:var(--surface-soft);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;text-align:center;flex-shrink:0;font-weight:700}.app-nav-label{white-space:nowrap}.app-main{flex:1;padding:1.5rem 2rem;overflow-y:auto}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.375rem}.stat-card-header{display:flex;justify-content:space-between;align-items:center}.stat-card-title{font-size:.75rem;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.stat-card-icon{font-size:.75rem;width:1.75rem;height:1.75rem;border-radius:6px;background:var(--surface-soft);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;font-weight:700}.stat-card-body{display:flex;align-items:baseline;gap:.5rem}.stat-card-value{font-size:1.5rem;font-weight:700;color:var(--ink)}.stat-card-trend{font-size:.8125rem;font-weight:500}.stat-card-trend.trend-up{color:var(--accent)}.stat-card-trend.trend-down{color:var(--danger)}.stat-card-subtitle{font-size:.75rem;color:var(--muted)}.data-table-wrapper{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}.data-table thead{background:var(--surface-soft)}.data-table th{padding:.625rem .875rem;font-size:.75rem;font-weight:600;color:var(--muted);text-align:left;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);white-space:nowrap}.data-table td{padding:.625rem .875rem;font-size:.8125rem;color:var(--ink);border-bottom:1px solid var(--line)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--surface-soft)}.data-table-row-clickable{cursor:pointer}.data-table-empty{text-align:center;padding:2rem 1rem;color:var(--muted);font-size:.875rem;background:var(--surface);border:1px solid var(--line);border-radius:8px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1.5rem;text-align:center}.empty-state-icon{font-size:3rem;margin-bottom:1rem}.empty-state-title{font-size:1.125rem;font-weight:600;color:var(--ink);margin-bottom:.375rem}.empty-state-description{font-size:.875rem;color:var(--muted);max-width:320px;margin-bottom:1rem}.empty-state-action{padding:.5rem 1.25rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.8125rem;font-weight:500;transition:background-color .15s ease}.empty-state-action:hover{background:var(--ink)}.feature-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;color:var(--muted)}.feature-placeholder h2{font-size:1.25rem;color:var(--ink);margin-bottom:.5rem}.feature-loading{display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--muted);font-size:.9375rem}.feature-error{padding:1rem;background:var(--surface-soft);border:1px solid var(--danger);border-radius:8px;color:var(--danger);font-size:.875rem}.feature-header{margin-bottom:1.25rem}.feature-header h2{margin-bottom:.75rem}.success-banner{padding:.5rem 1rem;background:#edf5ed;border:1px solid var(--accent);border-radius:6px;color:var(--ink);font-size:.8125rem;margin-bottom:.75rem}.error-banner{padding:.5rem 1rem;background:#fdf0ef;border:1px solid var(--danger);border-radius:6px;color:var(--danger);font-size:.8125rem;margin-bottom:.75rem;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:none;border:none;color:var(--danger);font-size:1rem;cursor:pointer;padding:0 .25rem}.warning-banner{padding:.5rem 1rem;background:#fdf8ed;border:1px solid var(--accent-warm);border-radius:6px;color:var(--ink);font-size:.8125rem;margin-bottom:.75rem;display:flex;justify-content:space-between;align-items:center}.warning-banner button{background:none;border:none;color:var(--accent-warm);font-size:1rem;cursor:pointer;padding:0 .25rem}.banner-actions{display:inline-flex;align-items:center;gap:.5rem}.banner-actions button{border:1px solid var(--accent-warm);border-radius:6px;background:var(--surface);color:var(--ink);font-size:.75rem;padding:.25rem .5rem}.view-tabs{display:flex;gap:.375rem;margin-bottom:1.25rem;border-bottom:1px solid var(--line);padding-bottom:.5rem}.tab-btn{padding:.375rem .875rem;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);font-size:.8125rem;transition:all .15s ease}.tab-btn:hover{border-color:var(--accent);color:var(--ink)}.tab-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.feature-form{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.25rem;margin-bottom:1.25rem}.feature-form h3{margin-bottom:1rem}.feature-form h4{margin-top:1rem;margin-bottom:.75rem;font-size:1rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.875rem;margin-bottom:.875rem}.form-grid label{display:flex;flex-direction:column;gap:.25rem}.required{color:var(--danger)}.form-notes{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.875rem}.form-notes textarea{width:100%;resize:vertical}.form-hint{font-size:.75rem;color:var(--muted)}.form-actions{display:flex;gap:.5rem;margin-top:.75rem}.inline-form{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.5rem;background:var(--surface-soft);border-radius:6px}.btn-primary{padding:.5rem 1.25rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.8125rem;font-weight:500;transition:background-color .15s ease}.btn-primary:hover:not(:disabled){background:var(--ink)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{padding:.5rem 1.25rem;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:6px;font-size:.8125rem;font-weight:500;transition:all .15s ease}.btn-secondary:hover{background:var(--surface-soft)}.btn-sm{padding:.25rem .75rem;font-size:.75rem}.btn-link{background:none;border:none;color:var(--accent);font-size:.75rem;padding:.125rem 0;text-decoration:underline}.btn-link:hover{color:var(--ink)}.list-controls{display:flex;gap:.5rem;margin-bottom:1rem;align-items:center}.search-input{flex:1;min-width:180px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem;margin-bottom:1.5rem}.dashboard-section{margin-top:1.25rem}.dashboard-section h3{margin-bottom:.75rem}.top-services-list{background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}.top-service-item{display:flex;align-items:center;padding:.625rem 1rem;border-bottom:1px solid var(--line);gap:1rem}.top-service-item:last-child{border-bottom:none}.top-service-name{flex:1;font-size:.875rem;color:var(--ink)}.top-service-count{font-size:.8125rem;color:var(--muted)}.top-service-revenue{font-size:.875rem;font-weight:600;color:var(--ink)}.low-stock-section{margin-bottom:1.25rem}.low-stock-section h3{color:var(--danger);font-size:.9375rem;margin-bottom:.5rem}.detail-panel,.customer-detail-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.25rem;margin-top:1.25rem}.detail-panel h3,.customer-detail-panel h3{margin-bottom:.75rem}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;margin-bottom:1rem}.detail-grid div{font-size:.8125rem}.detail-grid label{font-weight:600;color:var(--muted);display:inline;margin-right:.375rem}.detail-section{margin-top:1.25rem}.detail-section h4{margin-bottom:.5rem;font-size:.9375rem}.customer-info-brief{display:flex;gap:1rem;padding:.5rem;background:var(--surface-soft);border-radius:6px;font-size:.8125rem;color:var(--muted);grid-column:1 / -1}.recharge-section{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--line)}.recharge-section h4{margin-bottom:.5rem}.recharge-section .inline-form{gap:.75rem}.recharge-section .inline-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem}.recharge-section .inline-form input{width:140px}.ledger-section{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--line)}.ledger-section h4{margin-bottom:.5rem}.consumption-history{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--line)}.consumption-history h4{margin-bottom:.5rem}.preview-section{margin-top:1.25rem;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.25rem}.preview-section h4,.preview-errors{margin-bottom:.75rem}.preview-errors h5{color:var(--danger);margin-bottom:.375rem}.preview-errors ul{list-style:disc;padding-left:1.25rem;font-size:.8125rem}.preview-table-wrapper{overflow-x:auto;margin-bottom:.75rem}.row-error{background:#fdf0ef}.row-valid{background:transparent}.file-upload-area{margin-top:.5rem}.file-name{font-size:.75rem;color:var(--muted);margin-left:.5rem}.form-label{font-size:.8125rem;font-weight:500;color:var(--muted);display:block;margin-bottom:.25rem}.import-section{margin-bottom:1.75rem}.import-section h3{margin-bottom:.75rem}.import-result{margin-top:1rem;padding:.75rem;background:var(--surface);border:1px solid var(--line);border-radius:6px}.import-result h4{margin-bottom:.375rem}.backup-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--line)}.backup-section h3{margin-bottom:.75rem}.backup-list{margin-top:1rem}.backup-list h4{margin-bottom:.5rem}.stocktake-section{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.25rem}.stocktake-section h3{margin-bottom:1rem}.stocktake-result{padding:1rem;background:var(--surface-soft);border-radius:6px}.stocktake-result p{font-size:.875rem;margin-bottom:.5rem}.stocktake-matrix{margin-top:1rem}.stocktake-matrix h4{margin-bottom:.75rem}.stocktake-category{border:1px solid var(--line);border-radius:8px;background:var(--surface);margin-bottom:.875rem;overflow:hidden}.stocktake-category h5{padding:.625rem .875rem;background:var(--surface-soft);border-bottom:1px solid var(--line);font-size:.875rem}.stocktake-grid{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(90px,.6fr) minmax(120px,.7fr) minmax(160px,1fr);gap:.5rem;align-items:center;padding:.5rem .875rem;border-bottom:1px solid var(--line)}.stocktake-grid:last-child{border-bottom:none}.stocktake-grid-header{color:var(--muted);font-size:.75rem;font-weight:600}.stocktake-sku-name{font-weight:500}.settings-section{margin-bottom:1.5rem}.settings-section h3{margin-bottom:.75rem}.template-editor{margin-top:1rem}.template-item-row{display:flex;gap:.5rem;align-items:center;padding:.5rem;background:var(--surface-soft);border-radius:6px;margin-bottom:.5rem}.template-item-row select{flex:1}.template-item-row input[type=number]{width:100px}.checkbox-label{display:flex;align-items:center;gap:.25rem;font-size:.8125rem;white-space:nowrap}.form-checkbox{align-self:end;min-height:2.375rem}.current-templates{margin-top:1rem}.current-templates h4{margin-bottom:.5rem}@media(max-width:768px){.app-shell{display:block}.app-nav{width:100%;height:auto;border-right:none;border-bottom:1px solid var(--line)}.app-nav-brand{padding:.875rem 1rem}.app-nav-list{display:flex;gap:.375rem;overflow-x:auto;padding:.5rem;-webkit-overflow-scrolling:touch}.app-nav-list li{flex:0 0 auto}.app-nav-item{width:auto;min-width:6.75rem;min-height:2.75rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);justify-content:center;padding:.5rem .75rem}.app-nav-item.active{border-right:1px solid var(--accent);border-color:var(--accent)}.app-main{width:100%;padding:1rem;overflow-x:hidden}.stat-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.view-tabs{flex-wrap:wrap}.list-controls,.form-actions,.inline-form,.customer-info-brief{align-items:stretch;flex-direction:column}input,select,textarea,.btn-primary,.btn-secondary{width:100%}.template-item-row{flex-wrap:wrap}.stocktake-grid,.stocktake-grid-header{grid-template-columns:1fr}.data-table th,.data-table td{padding:.5rem .625rem}}.auth-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--canvas);padding:1.5rem}.auth-card{background:var(--surface);border-radius:12px;padding:2.5rem 2rem;max-width:420px;width:100%;text-align:center;box-shadow:0 2px 16px #242a2714}.auth-card--compact{max-width:320px;padding:2rem}.auth-icon{width:5rem;height:5rem;margin-bottom:.75rem;margin-left:auto;margin-right:auto}.auth-icon img{width:100%;height:100%;border-radius:18px;box-shadow:0 8px 24px #242a271f;display:block}.auth-title{color:var(--ink);font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.auth-subtitle{color:var(--muted);font-size:.95rem;margin-bottom:1.5rem}.auth-form{text-align:left;margin-bottom:1.25rem}.auth-label{display:block;color:var(--ink);font-size:.875rem;font-weight:500;margin-bottom:.375rem}.auth-input{width:100%;padding:.625rem .875rem;border:1.5px solid var(--line);border-radius:8px;font-size:.95rem;color:var(--ink);background:var(--surface);outline:none;transition:border-color .15s}.auth-input:focus-visible{border-color:var(--accent)}.auth-error{color:var(--danger);font-size:.85rem;margin-top:.375rem}.auth-button{width:100%;padding:.625rem;background:var(--ink);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:opacity .15s}.auth-button:hover{opacity:.88}.auth-hint{margin-top:1rem;color:var(--muted);font-size:.8rem}.auth-hint code{background:var(--surface-soft);padding:.125rem .375rem;border-radius:4px;font-size:.8rem;color:var(--accent)}
