:root{--plum: #5b2a4e;--plum-dark: #431d39;--cream: #faf6f1;--card: #ffffff;--line: #e7ddd3;--text: #2b2230;--muted: #7d7183;--gold: #b8893b;--good: #2f7d4f;--bad: #b3261e;--warn: #b26a00;--radius: 12px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--cream);color:var(--text);font-size:16px;line-height:1.4;-webkit-text-size-adjust:100%}h1,h2,h3{margin:.6rem 0 .4rem;line-height:1.2}h1{font-size:1.6rem;color:var(--plum)}h2{font-size:1.3rem}h3{font-size:1.05rem;color:var(--plum)}code{background:#f0e8df;padding:1px 5px;border-radius:4px}.muted{color:var(--muted)}.small{font-size:.85rem;color:var(--muted)}button.small,a.small{font-size:.85rem}.note{background:#fbf3e4;border-left:3px solid var(--gold);padding:6px 10px;margin:8px 0;border-radius:4px;white-space:pre-wrap}.error{background:#fdecea;color:var(--bad);border-radius:8px;padding:8px 12px;margin:8px 0}.bad-text{color:var(--bad)}.good-text{color:var(--good)}.center{min-height:100vh;display:grid;place-items:center;padding:16px}.app{max-width:820px;margin:0 auto;min-height:100vh}.content{padding:8px 14px 80px}.topbar{background:var(--plum);color:#fff;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:5}.topbar .small{color:#e9d9e4}.tabs{display:flex;gap:4px;background:var(--plum-dark);padding:0 8px;overflow-x:auto;position:sticky;top:54px;z-index:4}.tab{background:none;border:0;color:#d9c3d2;padding:12px 14px;font-size:.95rem;white-space:nowrap;border-bottom:3px solid transparent;cursor:pointer}.tab.active{color:#fff;border-bottom-color:var(--gold);font-weight:600}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin:10px 0}.card.narrow{width:100%;max-width:380px}.list{list-style:none;margin:8px 0;padding:0}.item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:10px}.item.clickable{cursor:pointer}.item.clickable:active{background:#f6eee6}.chev{color:var(--muted);font-size:1.4rem}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.space{justify-content:space-between}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}@media (max-width: 380px){.grid2{grid-template-columns:1fr}}label{display:block;font-size:.85rem;color:var(--muted);margin:8px 0}label.check{display:flex;align-items:center;gap:6px;margin:8px 0}input,select,textarea{width:100%;font:inherit;color:var(--text);background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 10px;margin-top:3px}input[type=checkbox]{width:auto;margin:0}input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);outline-offset:1px}.search{margin:10px 0}.inline-form{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.inline-form input,.inline-form select{width:auto;flex:1 1 120px;margin-top:0}.btn{display:inline-block;font:inherit;background:#fff;color:var(--plum);border:1px solid var(--plum);border-radius:10px;padding:9px 14px;cursor:pointer;text-decoration:none;text-align:center}.btn.primary{background:var(--plum);color:#fff}.btn.good{background:var(--good);border-color:var(--good);color:#fff}.btn.danger{color:var(--bad);border-color:var(--bad)}.btn.ghost{border-color:transparent;background:transparent}.topbar .btn.ghost{color:#fff;border-color:#fff5}.btn.small{padding:5px 10px}.btn:disabled{opacity:.6}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.chip{font:inherit;font-size:.85rem;background:#f3ebe3;border:1px solid var(--line);color:var(--text);border-radius:999px;padding:3px 10px}button.chip{cursor:pointer}.chip.on{background:var(--plum);color:#fff;border-color:var(--plum)}.badge{display:inline-block;font-size:.75rem;background:#efe7f0;color:var(--plum);border-radius:999px;padding:1px 8px;white-space:nowrap}.badge.warn{background:#fdf0d9;color:var(--warn)}.badge.bad{background:#fdecea;color:var(--bad)}.badge.good{background:#e3f4ea;color:var(--good)}.taskrow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-top:1px dashed var(--line)}.taskrow select{width:auto;margin:0}.print-only{display:none}@page{size:A4;margin:14mm}@media print{body{background:#fff;color:#000;font-size:12pt}.no-print{display:none!important}.print-only{display:block!important}.content{padding:0}.invoice{font-size:11pt;line-height:1.35}}.invoice{color:#1d1520}.inv-head{display:flex;align-items:center;gap:14px;border-bottom:3px solid #5b2a4e;padding-bottom:12px}.inv-logo{width:64px;height:64px;border-radius:12px}.inv-shopblock{flex:1}.inv-shop{font-size:22pt;font-weight:700;color:#5b2a4e;line-height:1.1}.inv-tag{font-size:10.5pt;color:#444;margin-top:2px}.inv-addr{font-size:9.5pt;color:#444;margin-top:3px}.inv-title{text-align:right}.inv-word{font-size:20pt;letter-spacing:3px;color:#b8893b;font-weight:700}.inv-no{font-size:12pt;font-weight:600}.inv-meta{display:flex;justify-content:space-between;gap:20px;margin:16px 0}.inv-label{font-size:9pt;text-transform:uppercase;letter-spacing:1px;color:#777;margin-right:6px}.inv-strong{font-size:13pt;font-weight:600}.inv-right{text-align:right}.inv-table{width:100%;border-collapse:collapse;margin:6px 0 10px}.inv-table th{background:#5b2a4e;color:#fff;text-align:left;padding:7px 8px;font-size:10pt}.inv-table td{border-bottom:1px solid #ddd;padding:8px;vertical-align:top}.inv-table th:nth-child(n+3),.inv-table td:nth-child(n+3){text-align:right}.inv-desc{font-size:9.5pt;color:#555;margin-top:2px}.inv-totals{width:46%;margin-left:auto}.inv-totals>div{display:flex;justify-content:space-between;padding:4px 8px}.inv-balance{border-top:2px solid #5b2a4e;margin-top:4px;font-size:13pt;background:#faf3f8}.inv-pay{margin-top:14px;width:60%}.inv-payrow{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px dotted #ccc;font-size:10pt}.inv-foot{margin-top:28px;text-align:center;color:#5b2a4e;font-style:italic;border-top:1px solid #ddd;padding-top:10px}input.invalid,select.invalid,textarea.invalid{border-color:var(--bad);background:#fff8f7}.field-error{color:var(--bad);font-size:.8rem;margin-top:3px}.error ul,.warning ul{margin:4px 0 0;padding-left:18px}.warning{background:#fff6e0;border:1px solid #f0d28a;color:#6b4a00;border-radius:8px;padding:8px 12px;margin:8px 0}.warning .btn{margin-top:6px}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0 12px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.stat-label{font-size:.8rem;color:var(--muted)}.stat-value{font-size:1.5rem;font-weight:700;line-height:1.2;color:var(--plum)}.stat.good .stat-value{color:var(--good)}.stat.warn .stat-value{color:var(--warn)}.stat.bad .stat-value{color:var(--bad)}.monthpick{width:auto;margin:0}.barrow{margin:8px 0}.bar{background:#f0e8df;border-radius:999px;height:8px;margin-top:4px;overflow:hidden}.bar>div{background:var(--plum);height:100%;border-radius:999px}.stat.clickable{cursor:pointer;text-align:left;font:inherit;width:100%;color:inherit}.stat.clickable:hover,.stat.clickable:focus-visible{border-color:var(--plum);box-shadow:0 0 0 2px #5b2a4e22;outline:none}.stat.clickable:active{background:#f6eee6}.taskrow.clickable{cursor:pointer}.item .actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.btn.good.small{padding:6px 12px}.actionbar .row{margin-top:6px}.notice{background:#e3f4ea;color:var(--good);border-radius:8px;padding:8px 12px;margin:8px 0;font-weight:600}.diffrow{padding:4px 0;border-top:1px dashed var(--line)}.diffrow .was{color:var(--muted);text-decoration:line-through}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:8px}.thumbs figure{margin:0}.thumbs img{width:100%;height:160px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}.thumbwait{height:160px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--line);border-radius:8px}.item.order{border-left:5px solid var(--st, var(--line));gap:12px}.item.order .grow{flex:1;min-width:0}.item.order.st-received{--st: #7b5ea7}.item.order.st-in_progress{--st: #b8893b}.item.order.st-ready{--st: #2f7d4f}.item.order.st-delivered{--st: #a8a0ac}.item.order.st-cancelled{--st: #b3261e}.item.order.overdue{--st: var(--bad);background:#fff8f7}.avatar{flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:#efe3ee;color:var(--plum);display:grid;place-items:center;font-weight:700;font-size:.95rem}.badge.st-received{background:#efe7f6;color:#5b3d86}.badge.st-in_progress{background:#fdf0d9;color:var(--warn)}.badge.st-ready{background:#e3f4ea;color:var(--good)}.badge.st-delivered{background:#eeeaf0;color:#6c6471}.badge.st-cancelled{background:#fdecea;color:var(--bad)}.stickybar{display:flex;gap:8px;margin:12px 0}.stickybar .btn.primary{flex:1}.tab .ti{display:none}@media (max-width: 700px){.content{padding-bottom:calc(150px + env(safe-area-inset-bottom))}.topbar{padding-top:calc(10px + env(safe-area-inset-top))}.tabs{position:fixed;top:auto;bottom:0;left:0;right:0;z-index:20;padding:0 4px env(safe-area-inset-bottom);gap:0;justify-content:space-around;box-shadow:0 -2px 10px #0000003a}.tab{flex:1 0 auto;min-width:62px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 6px 9px;font-size:.68rem;border-bottom:0;border-top:3px solid transparent}.tab.active{border-top-color:var(--gold)}.tab .ti{display:block;font-size:1.35rem;line-height:1}input,select,textarea{min-height:46px;font-size:16px;padding:10px 12px}input[type=checkbox]{min-height:0;width:22px;height:22px}.btn{min-height:46px;padding:10px 16px}.btn.small{min-height:38px}.chip{padding:6px 12px}.stickybar{position:fixed;left:0;right:0;bottom:calc(62px + env(safe-area-inset-bottom));z-index:15;margin:0;padding:8px 14px;background:#fffffff5;border-top:1px solid var(--line)}.item.order{padding:12px;flex-wrap:wrap}.item.order .actions{flex-basis:100%;justify-content:space-between;padding-left:52px}}.formrow{display:flex;gap:12px;align-items:flex-start}.formrow .grow{flex:1;min-width:0}.formthumb{width:96px;height:130px;object-fit:cover;border-radius:8px;border:1px solid var(--line);flex:0 0 auto;display:block}.formphoto{position:sticky;top:54px;z-index:3;background:#fff;padding:4px 0;margin-top:6px}.formphoto img{width:100%;max-height:38vh;object-fit:contain;border-radius:8px;border:1px solid var(--line);background:#fafafa;display:block}
