:root{--board:#2c322a;--board-2:#343b32;--chalk:#f2ede2;--chalk-dim:#c9c4b6;--card:#f1ead9;--card-2:#e7dfc9;--ink:#2c2416;--ink-dim:#6b6353;--yellow:#e3ae4c;--sage:#7fa889;--tomato:#c4543f;--line:rgba(242,237,226,0.14);--radius:18px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0}body{background:var(--board);color:var(--chalk);font-family:Karla,sans-serif;min-height:100vh;overflow-x:hidden}#app{max-width:460px;margin:0 auto;min-height:100vh;flex-direction:column}#app,header.top{display:flex;position:relative}header.top{padding:calc(20px + var(--safe-top)) 20px 14px;z-index:1;align-items:flex-start;justify-content:space-between;gap:10px}header.top .eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--chalk-dim);font-weight:600}header.top h1{font-family:Caveat,cursive;font-size:42px;margin:2px 0 0;font-weight:700;color:var(--chalk);line-height:1}header.top .underline{width:64px;height:3px;background:var(--yellow);margin-top:10px;border-radius:2px}.logout-btn{background:var(--board-2);border:1px solid var(--line);color:var(--chalk-dim);font-size:12px;font-weight:700;padding:8px 12px;border-radius:20px;cursor:pointer;white-space:nowrap;margin-top:4px}main{flex:1 1;padding:4px 16px calc(78px + var(--safe-bottom));position:relative;z-index:1}.weeknav{justify-content:space-between;padding:10px 4px 18px}.weeknav,.weeknav button{display:flex;align-items:center}.weeknav button{background:var(--board-2);border:1px solid var(--line);color:var(--chalk);width:38px;height:38px;border-radius:50%;font-size:18px;cursor:pointer;justify-content:center}.weeknav button:active{transform:scale(.94)}.weeknav .label{font-size:14px;color:var(--chalk-dim);font-weight:600}.actionrow{display:flex;gap:10px;margin-bottom:16px}.shopbtn{flex:1 1;display:flex;align-items:center;justify-content:center;gap:8px;background:transparent;border:1.5px dashed var(--yellow);color:var(--yellow);padding:12px;border-radius:14px;font-weight:700;font-size:13.5px;font-family:Karla,sans-serif;cursor:pointer;margin:0}.shopbtn:active{background:rgba(227,174,76,.1)}.shopbtn.randombtn{border-color:var(--sage);color:var(--sage)}.shopbtn.randombtn:active{background:rgba(127,168,137,.1)}.daycard{background:var(--board-2);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;display:flex;align-items:center;gap:14px;cursor:pointer;transition:background .15s ease}.daycard:active{background:#3a4136}.daycard.today{border-color:var(--sage);box-shadow:0 0 0 1px var(--sage) inset}.daycard .daycol{width:54px;flex-shrink:0;text-align:center}.daycard .daycol .dow{font-family:Caveat,cursive;font-size:24px;font-weight:700;color:var(--chalk);display:block;line-height:1}.daycard .daycol .num{font-size:11px;color:var(--chalk-dim)}.daycard .info{flex:1 1;min-width:0}.daycard .info .dish{font-size:16px;font-weight:600;color:var(--chalk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.daycard .info .dish.empty{color:var(--chalk-dim);font-weight:400;font-style:italic}.daycard .info .dish.special{color:var(--yellow);font-weight:600;font-style:normal}.daycard .chev{color:var(--chalk-dim);font-size:18px}.lastweek-note{font-size:11px;color:var(--chalk-dim);margin-top:3px;font-style:italic}.daycard{position:relative;touch-action:manipulation}.avatar-chip{width:40px;height:40px;flex-shrink:0;border-radius:50%;border:none;padding:0;overflow:hidden;background:var(--sage);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;cursor:pointer}.avatar-chip img{width:100%;height:100%;object-fit:cover}.avatar-chip.sel{box-shadow:0 0 0 3px var(--yellow)}.avatar-chip-lg{width:64px;height:64px;font-size:22px;cursor:pointer}.assignee-badge{width:26px;height:26px;font-size:10px;cursor:default;box-shadow:0 1px 4px rgba(0,0,0,.3)}.assignee-row{margin:2px 0 18px}.assignee-label{font-size:12px;font-weight:700;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.assignee-chips{display:flex;gap:10px;flex-wrap:wrap}.daycard.dragging{opacity:.85;box-shadow:0 6px 18px rgba(0,0,0,.35);transition:none}.daycard.drag-target{border-color:var(--yellow);box-shadow:0 0 0 2px var(--yellow) inset}.draghandle{flex-shrink:0;width:22px;text-align:center;color:var(--chalk-dim);font-size:18px;line-height:1;cursor:-webkit-grab;cursor:grab;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none}.draghandle:active{cursor:-webkit-grabbing;cursor:grabbing;color:var(--yellow)}.tag{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:20px;margin-top:5px}.tag.Lett{background:rgba(127,168,137,.22);color:var(--sage)}.tag.Normal{background:rgba(201,196,182,.16);color:var(--chalk-dim)}.tag.Avansert{background:rgba(196,84,63,.22);color:#e08874}.cat-label{font-size:11px;color:var(--chalk-dim);margin-top:3px}nav.tabs{position:fixed;bottom:0;left:0;right:0;max-width:460px;margin:0 auto;background:rgba(44,50,42,.96);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--line);display:flex;padding:6px 10px calc(6px + var(--safe-bottom));z-index:5}nav.tabs button{flex:1 1;background:none;border:none;color:var(--chalk-dim);font-family:Karla,sans-serif;font-size:11px;font-weight:600;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:6px;padding:8px 0;cursor:pointer;border-radius:12px}nav.tabs button.active{color:var(--yellow);background:rgba(227,174,76,.12)}nav.tabs .icon{font-size:17px}.searchbar{display:flex;gap:8px;margin:8px 0 14px}.searchbar input{flex:1 1;background:var(--board-2);border:1px solid var(--line);color:var(--chalk);padding:11px 14px;border-radius:12px;font-family:Karla,sans-serif;font-size:14px}.searchbar input::placeholder{color:var(--chalk-dim)}.filterchips{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filterchips button{background:var(--board-2);border:1px solid var(--line);color:var(--chalk-dim);padding:7px 14px;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;font-family:Karla,sans-serif}.filterchips button.active{background:var(--yellow);color:#2c2416;border-color:var(--yellow)}.dishrow{background:var(--board-2);border:1px solid var(--line);border-radius:14px;padding:13px 15px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;cursor:pointer}.dishrow:active{background:#3a4136}.dishrow .name{font-weight:600;font-size:15px}.fab{position:fixed;bottom:calc(58px + var(--safe-bottom));right:20px;width:54px;height:54px;border-radius:50%;background:var(--yellow);color:#2c2416;border:none;font-size:26px;box-shadow:0 4px 14px rgba(0,0,0,.35);cursor:pointer;z-index:6;display:flex;align-items:center;justify-content:center}.fab:active{transform:scale(.94)}.overlay{position:fixed;inset:0;background:rgba(20,22,18,.6);z-index:20;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s ease}.overlay.show{opacity:1;pointer-events:auto}.sheet{background:var(--card);color:var(--ink);width:100%;max-width:460px;border-radius:22px 22px 0 0;max-height:88vh;overflow-y:auto;padding:6px 22px calc(28px + var(--safe-bottom));transform:translateY(24px);transition:transform .22s ease;position:relative}.overlay.show .sheet{transform:translateY(0)}.sheet .handle{width:40px;height:4px;background:var(--card-2);border-radius:2px;margin:12px auto 14px}.sheet h2{font-family:Caveat,cursive;font-size:32px;margin:4px 0 2px;color:var(--ink);font-weight:700}.sheet .tagrow{display:flex;gap:8px;margin:6px 0 18px;flex-wrap:wrap}.sheet .close-x{position:absolute;top:14px;right:18px;background:none;border:none;font-size:22px;color:var(--ink-dim);cursor:pointer}.sheet section{margin-bottom:20px}.sheet section h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-dim);margin:0 0 10px;font-weight:700;border-bottom:1px dashed var(--card-2);padding-bottom:6px}.ing-list{list-style:none;padding:0;margin:0}.ing-list li{display:flex;justify-content:space-between;padding:7px 0;font-size:14.5px;border-bottom:1px solid var(--card-2)}.ing-list li .amt{color:var(--ink-dim);font-weight:600}.step-list{padding-left:20px;margin:0}.step-list li{margin-bottom:10px;font-size:14.5px;line-height:1.45}.empty-note{font-size:14px;color:var(--ink-dim);font-style:italic;padding:6px 0 2px}.btnrow{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}.btn{border:none;border-radius:12px;padding:12px 16px;font-weight:700;font-size:14px;cursor:pointer;font-family:Karla,sans-serif}.btn.primary{background:var(--ink);color:var(--card)}.btn.ghost{background:var(--card-2);color:var(--ink)}.btn.danger{background:transparent;color:var(--tomato)}.btn:active{transform:scale(.97)}.picklist{max-height:50vh;overflow-y:auto}.pickrow{padding:12px 4px;border-bottom:1px solid var(--card-2);display:flex;justify-content:space-between;align-items:center;cursor:pointer}.pickrow:active{background:var(--card-2)}.specialrow{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--card-2);cursor:pointer}.specialrow:active{background:var(--card-2)}.specialrow .emoji{font-size:20px;width:26px;text-align:center}.specialrow .label{font-weight:700;font-size:14.5px}.special-divider{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-dim);font-weight:700;margin:16px 0 4px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;font-weight:700;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.field input,.field select,.field textarea{width:100%;border:1px solid var(--card-2);background:#fff;color:var(--ink);padding:11px 12px;border-radius:10px;font-family:Karla,sans-serif;font-size:14.5px}.field label.checkline{display:flex;align-items:center;gap:8px;text-transform:none;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer}.field label.checkline input[type=checkbox]{width:auto;flex-shrink:0}.field textarea{resize:vertical;min-height:60px}.taggroup{display:flex;gap:8px}.taggroup button{flex:1 1;padding:10px;border-radius:10px;border:1px solid var(--card-2);background:#fff;font-weight:700;font-size:13px;cursor:pointer;color:var(--ink-dim)}.taggroup button.sel.Lett{background:rgba(127,168,137,.22);border-color:var(--sage);color:#3d6b49}.taggroup button.sel.Normal{background:rgba(107,99,83,.14);border-color:var(--ink-dim);color:var(--ink)}.taggroup button.sel.Avansert{background:rgba(196,84,63,.18);border-color:var(--tomato);color:#a04431}.dyn-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}.dyn-row input{flex:1 1}.dyn-row input.amt-input{flex:0 0 70px}.dyn-row input.unit-input{flex:0 0 60px}.dyn-row .rm{border:none;color:var(--tomato);font-size:20px;flex:0 0 auto}.addline,.dyn-row .rm{background:none;cursor:pointer}.addline{border:1px dashed var(--card-2);color:var(--ink-dim);width:100%;padding:9px;border-radius:10px;font-weight:700;font-size:13px;margin-top:2px}.receipt-meta{font-size:12.5px;color:var(--ink-dim);margin-bottom:12px}.receipt-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--card-2);font-family:Courier New,monospace;font-size:14.5px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.receipt-item .rcheck{font-size:16px;color:var(--ink-dim);width:16px;flex-shrink:0}.receipt-item .rname{flex:1 1}.receipt-item .ramt{color:var(--ink-dim);font-weight:700;white-space:nowrap}.receipt-item.checked .rname{text-decoration:line-through;color:var(--ink-dim)}.receipt-item.checked .rcheck{color:var(--sage)}.receipt-zigzag{height:14px;margin:16px 0 6px;background:linear-gradient(135deg,var(--card) 25%,transparent 25%) -7px 0/14px 14px,linear-gradient(225deg,var(--card) 25%,transparent 25%) -7px 0/14px 14px,linear-gradient(315deg,var(--card) 25%,transparent 25%) 0 0/14px 14px,linear-gradient(45deg,var(--card) 25%,transparent 25%) 0 0/14px 14px;background-color:var(--card-2)}.receipt-missing{font-size:13px;color:var(--ink-dim);line-height:1.5}.toast{position:fixed;bottom:calc(70px + var(--safe-bottom));left:50%;transform:translateX(-50%);background:var(--chalk);color:var(--ink);padding:10px 18px;border-radius:20px;font-size:13px;font-weight:600;z-index:30;opacity:0;transition:opacity .25s ease;pointer-events:none}.toast.show{opacity:1}::-webkit-scrollbar{width:0;height:0}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}.auth-wrap{max-width:380px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:24px}.auth-card{background:var(--board-2);border:1px solid var(--line);border-radius:var(--radius);padding:28px 24px}.auth-card h1{font-family:Caveat,cursive;font-size:40px;margin:0 0 4px}.auth-card p.sub{color:var(--chalk-dim);font-size:13.5px;margin:0 0 22px}.auth-field{margin-bottom:14px}.auth-field label{display:block;font-size:12px;font-weight:700;color:var(--chalk-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.auth-field input{width:100%;background:var(--board);border:1px solid var(--line);color:var(--chalk);padding:12px 14px;border-radius:10px;font-family:Karla,sans-serif;font-size:14.5px}.auth-submit{width:100%;background:var(--yellow);color:#2c2416;border:none;padding:13px;border-radius:12px;font-weight:700;font-size:14.5px;cursor:pointer;margin-top:6px}.auth-submit:active{transform:scale(.98)}.auth-toggle{text-align:center;margin-top:18px;font-size:13.5px;color:var(--chalk-dim)}.auth-toggle button{background:none;border:none;color:var(--yellow);font-weight:700;cursor:pointer;font-size:13.5px;padding:0;margin-left:4px}.auth-msg{font-size:13px;padding:10px 12px;border-radius:10px;margin-bottom:14px}.auth-msg.error{background:rgba(196,84,63,.18);color:#e08874}.auth-msg.success{background:rgba(127,168,137,.18);color:var(--sage)}