:root{--paper: #f7f6f3;--card: #ffffff;--ink: #1a1a17;--muted: #78746b;--line: #e6e2da;--hair: #efece5;--accent: #1f5546;--accent-soft: #eaf0ed;--amber: #b8891f;--radius: 14px;--wrap: 900px}*{box-sizing:border-box}html,body{margin:0;background:var(--paper);color:var(--ink);font-family:Archivo,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.015em}h1{font-size:1.7rem;line-height:1.2}h2{font-size:1.02rem}h3{font-size:.92rem}p{margin:0}a{color:var(--accent);text-underline-offset:3px}.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 18px}.topbar{border-bottom:1px solid var(--line);background:#f7f6f3eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:20}.topbar .bar{display:flex;align-items:center;justify-content:space-between;height:56px}.wordmark{font-weight:700;letter-spacing:.22em;text-transform:uppercase;text-decoration:none;color:var(--ink);font-size:.82rem}.topnav{display:flex;gap:18px;font-size:.86rem}.topnav a{text-decoration:none;color:var(--muted);padding-bottom:2px}.topnav a.on{color:var(--ink);border-bottom:1.5px solid var(--accent)}main{padding:30px 0 130px}.stack{display:flex;flex-direction:column;gap:20px}.titleblock{display:flex;flex-direction:column;gap:6px}.lead{color:var(--muted);font-size:.95rem;max-width:54ch}.muted{color:var(--muted)}.small{font-size:.85rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}button{font:inherit;cursor:pointer}.btn{border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:9px;padding:10px 18px;font-size:.88rem;font-weight:500;line-height:1.2}.btn:hover{opacity:.9}.btn:disabled{opacity:.4;cursor:default}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn.ghost:hover{border-color:var(--muted);opacity:1}.btn.small{padding:7px 12px;font-size:.8rem;border-radius:8px}.btn.danger{background:transparent;color:#8f3b2c;border-color:#e6d2cc}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.spread{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}input[type=text],input[type=password],input[type=time],input[type=date],select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:9px;padding:10px 12px;width:100%}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}label.field{display:flex;flex-direction:column;gap:6px;font-size:.8rem;color:var(--muted)}.names{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.name-btn{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:13px 14px;text-align:left;font-size:.95rem;color:var(--ink)}.name-btn:hover{border-color:var(--ink)}.sheet{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.dayrow{display:grid;grid-template-columns:58px 1fr;gap:14px;align-items:center;padding:11px 16px;border-top:1px solid var(--hair)}.dayrow:first-child{border-top:0}.dayrow.weekstart{border-top:1px solid var(--line)}.dayrow.weekend{background:#f6f4ee}.dayrow.past{opacity:.5}.day-head{display:flex;flex-direction:column;line-height:1.1}.day-num{font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums}.day-name{font-size:.72rem;color:var(--muted);text-transform:lowercase}.slots{display:grid;grid-template-columns:1fr 1fr;gap:8px}.slot{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:9px 12px;text-align:left;color:var(--ink);display:flex;flex-direction:column;gap:2px;min-height:50px;justify-content:center}.slot:hover{border-color:var(--muted)}.slot-name{font-size:.88rem;font-weight:500}.slot-time{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.slot.on{background:var(--accent);border-color:var(--accent);color:#fff}.slot.on .slot-time{color:#ffffffb8}.slot.event{background:var(--accent-soft);border-color:#d5e0db}.slot.event.on{background:var(--accent)}.slot.dirty{box-shadow:0 0 0 2px #b8891f59}.slot:disabled{opacity:.6;cursor:default}.slot.wide{grid-column:1 / -1}.savebar{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:0 16px calc(16px + env(safe-area-inset-bottom));pointer-events:none}.savebar .inner{pointer-events:auto;max-width:520px;margin:0 auto;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px #1a1a171f;padding:10px 12px 10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.savebar .count{font-size:.85rem;color:var(--muted)}.notice{border:1px solid var(--line);background:var(--accent-soft);border-radius:10px;padding:12px 14px;font-size:.9rem}.notice.warn{background:#f8f1de;border-color:#e8dcb8}.notice.error{background:#f9eae5;border-color:#ecd0c6}.status{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;color:var(--muted)}.status .box{width:8px;height:8px;border:1px solid var(--muted);display:inline-block}.status.on .box{background:var(--accent);border-color:var(--accent)}.status.wait .box{background:var(--amber);border-color:var(--amber)}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card);flex-wrap:wrap}.segmented button{border:0;background:transparent;padding:9px 15px;font-size:.85rem;color:var(--muted);border-right:1px solid var(--line)}.segmented button:last-child{border-right:0}.segmented button.on{background:var(--ink);color:#fff}.switch{display:inline-flex;align-items:center;gap:10px;font-size:.86rem;background:none;border:0;padding:0;color:var(--ink)}.switch .track{width:38px;height:22px;border:1px solid var(--line);background:var(--paper);position:relative;border-radius:4px;flex:none}.switch .thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--muted);transition:left .12s ease}.switch.on .track{background:var(--accent-soft);border-color:var(--accent)}.switch.on .thumb{left:18px;background:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--card);border-radius:7px;padding:5px 10px;font-size:.82rem;color:var(--ink);line-height:1.3}.chip:hover{border-color:var(--muted)}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.chip.free{color:var(--muted);background:var(--paper)}.chip.cold{color:var(--muted);border-style:dashed;background:transparent}.chip.plain{cursor:default}.chip.plain:hover{border-color:var(--line)}.pslots{display:grid;grid-template-columns:1fr;gap:10px}.pslot{border-top:1px solid var(--hair);padding-top:7px}.pslot:first-child{border-top:0;padding-top:0}.pslot-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:5px}.pslot-name{font-size:.85rem;font-weight:500}.pslot-time{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.pslot.mine .pslot-name{color:var(--accent)}.dayrow.plan{align-items:start;padding:12px 16px}table.grid{width:100%;border-collapse:collapse;font-size:.88rem}table.grid th{text-align:left;font-weight:500;color:var(--muted);font-size:.78rem;padding:7px 8px;border-bottom:1px solid var(--line)}table.grid td{padding:8px;border-bottom:1px solid var(--hair)}table.grid tr:last-child td{border-bottom:0}table.grid td.num,table.grid th.num{text-align:right;font-variant-numeric:tabular-nums}.scroll{overflow-x:auto}.linkbox{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.linkbox code{background:var(--paper);border:1px solid var(--line);border-radius:7px;padding:6px 10px;font-size:.78rem;word-break:break-all}.eventrow{display:grid;grid-template-columns:1.3fr 2fr .9fr .9fr auto;gap:10px;align-items:end;padding:12px 0;border-top:1px solid var(--hair)}.eventrow:first-of-type{border-top:0}.people-row{display:grid;grid-template-columns:minmax(120px,1fr) auto auto auto;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--hair)}.people-row:first-of-type{border-top:0}.footer{border-top:1px solid var(--line);margin-top:50px;padding:18px 0 34px;font-size:.78rem;color:var(--muted)}.footer a{color:var(--muted)}@media (max-width: 620px){h1{font-size:1.4rem}main{padding:22px 0 130px}.wrap{padding:0 14px}.card{padding:15px}.dayrow{grid-template-columns:62px 1fr;gap:10px;padding:10px 12px}.day-name{font-size:.68rem}.day-num{font-size:1.1rem}.eventrow{grid-template-columns:1fr 1fr}.eventrow .wide{grid-column:1 / -1}.people-row{grid-template-columns:1fr auto}.people-row .segmented{grid-column:1 / -1}.names{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}}@media (min-width: 780px){.pslots{grid-template-columns:1fr 1fr}.pslot{border-top:0;padding-top:0;border-left:1px solid var(--hair);padding-left:14px}.pslot:first-child{border-left:0;padding-left:0}}.topnav a{white-space:nowrap}.dayrow>*,.slots,.slot,.pslots,.pslot,.chips{min-width:0}.slot-name,.pslot-name{overflow-wrap:anywhere}body{overflow-x:hidden}.linkbtn{background:none;border:0;padding:0;color:var(--accent);font:inherit;text-decoration:underline;text-underline-offset:3px}.slots.one{grid-template-columns:1fr}.chip.add{border-style:dashed;color:var(--accent);background:var(--card)}.picker{margin-top:8px;padding:10px;border:1px dashed var(--line);border-radius:10px;display:flex;flex-direction:column;gap:10px;background:var(--paper)}a.btn{text-decoration:none;display:inline-block}:root{--low: #c9a227;--low-soft: #f7ecc9;--out: #9a3b2b;--done: #4d7c57;--done-soft: #e7efe8}.stock-sum{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center}.status.bijna .box{background:var(--low);border-color:var(--low)}.status.op .box{background:var(--out);border-color:var(--out)}.status.besteld .box{background:var(--done);border-color:var(--done)}.stock-tools{position:sticky;top:56px;z-index:10;background:var(--paper);padding:10px 0;margin:-10px 0;display:flex;flex-direction:column;gap:10px;border-bottom:1px solid var(--line)}.stock-tools .row{flex-wrap:nowrap}.stock-search{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:9px;padding:10px 12px;width:100%;min-width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.stock-tools .switch{white-space:nowrap;flex:none}.cat-jump{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -18px;padding:0 18px}.cat-jump::-webkit-scrollbar{display:none}.cat-jump .chip{white-space:nowrap;flex:none;padding:7px 12px}.stock-cat{scroll-margin-top:170px;display:flex;flex-direction:column;gap:10px}.stock-cat h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:600}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.tile{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:11px 12px;min-height:60px;text-align:left;color:var(--ink);display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-width:0;-webkit-tap-highlight-color:transparent;transition:background .12s ease,border-color .12s ease}.tile:hover{border-color:var(--muted)}.tile:active{transform:scale(.98)}.tile-name{font-size:.95rem;font-weight:500;line-height:1.25;overflow-wrap:anywhere}.tile-state{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.tile.bijna{background:var(--low-soft);border-color:var(--low)}.tile.bijna .tile-state{color:#8a6a12}.tile.op{background:var(--out);border-color:var(--out);color:#fff}.tile.op .tile-state{color:#fffc}.tile.besteld{background:var(--done-soft);border-color:#cddccf;color:var(--muted);cursor:default}.tile.besteld .tile-state{color:var(--done)}.tile.besteld:active{transform:none}.tile.dirty{box-shadow:0 0 0 2px #1a1a1740}.order-group{padding-top:6px}.order-group+.order-group{margin-top:12px;border-top:1px solid var(--hair);padding-top:12px}.order-group h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:4px}.order-row{width:100%;display:grid;grid-template-columns:18px minmax(0,1fr) auto;grid-template-areas:"tick name pill" "tick meta meta";column-gap:12px;row-gap:1px;align-items:center;border:0;background:transparent;padding:9px 6px;border-radius:8px;text-align:left;color:var(--ink)}.order-row:hover{background:var(--paper)}.order-row .tick{grid-area:tick;width:16px;height:16px;border:1.5px solid var(--muted);border-radius:3px}.order-row.on{background:var(--accent-soft)}.order-row.on .tick{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--accent-soft)}.order-name{grid-area:name;font-size:.95rem;font-weight:500;overflow-wrap:anywhere}.order-meta{grid-area:meta;font-size:.75rem;color:var(--muted)}.pill{grid-area:pill;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:5px;white-space:nowrap}.pill.bijna{background:var(--low-soft);color:#8a6a12}.pill.op{background:var(--out);color:#fff}.pill.besteld{background:var(--done-soft);color:var(--done)}textarea.paste{font:inherit;font-size:.9rem;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:9px;padding:10px 12px;width:100%;resize:vertical}.cat-head{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}.cat-head .cat-name{font-weight:600;max-width:280px}.item-edit{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px 14px}.item-row{display:flex;gap:6px;align-items:center}.item-row input{padding:7px 10px;font-size:.9rem}@media (max-width: 620px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.cat-jump{margin:0 -14px;padding:0 14px}.topnav{gap:14px}}.savebar .row{flex-wrap:nowrap}h2.supplier{font-size:1.15rem}h2.supplier .muted{font-weight:500;font-size:.9rem;margin-left:4px}.card.done{background:#fbfcfb}.cat-supplier{max-width:220px}.cat-supplier.empty{color:var(--muted);border-style:dashed}.item-row input{min-width:0;flex:1}.item-supplier{width:auto;max-width:130px;padding:7px 8px;font-size:.82rem;flex:none}.item-supplier.empty{color:var(--muted);border-style:dashed}.item-edit{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}@media (max-width: 620px){.item-edit{grid-template-columns:1fr}}
