:root{--bg:#fbf8f3;--surface:#fff;--surface-2:#f4efe6;--sand:#e9e0d0;--line:#e4dccd;--text:#2b2a26;--text-2:#6b665c;--accent:#c4ad88;--accent-hover:#b59b72;--accent-strong:#7a6440;--accent-soft:#f3ece0;--on-accent:#2b2a26;--amber:#a86a12;--amber-soft:#fbf0dc;--red:#a23b2a;--red-soft:#f8e4df;--blue:#2f5f7a;--blue-soft:#e2edf3;--radius:14px;--shadow:0 1px 2px #3c321e0f, 0 4px 16px #3c321e0d;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", Arial, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.5 var(--sans);margin:0}h1,h2,h3{font-family:var(--serif);letter-spacing:.005em;margin:0 0 .5em;font-weight:600;line-height:1.2}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 .75em}a{color:var(--accent-strong)}small,.muted{color:var(--text-2)}.num{font-variant-numeric:tabular-nums}.page{max-width:640px;margin:0 auto;padding:16px 16px 96px}.page.wide{max-width:1200px}.row{align-items:center;gap:12px;display:flex}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between;align-items:center;gap:12px;display:flex}.stack>*+*{margin-top:12px}.grid{gap:12px;display:grid}.grid.two{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.grid.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grow{flex:1}.center{text-align:center}.topbar{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);background:#fbf8f3f0;position:sticky;top:0}.topbar .inner{align-items:center;gap:10px;max-width:640px;min-height:56px;margin:0 auto;padding:10px 16px;display:flex}.topbar.wide .inner{max-width:1200px}.topbar .title{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:1.15rem;font-weight:600;overflow:hidden}.brand{font-family:var(--serif);color:var(--accent-strong);letter-spacing:.02em;font-weight:600}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card.flat{box-shadow:none}.card h2,.card h3{margin-bottom:8px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:100%;min-height:76px;box-shadow:var(--shadow);color:var(--text);text-align:left;font:inherit;cursor:pointer;align-items:center;gap:14px;padding:18px 16px;text-decoration:none;display:flex}.tile:active{transform:scale(.99)}.tile .icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-strong);border-radius:12px;flex:none;place-items:center;font-size:22px;display:grid}.tile .label{font-size:1.05rem;font-weight:600}.tile .sub{color:var(--text-2);font-size:.9rem}.tile.done .icon{background:var(--accent);color:var(--on-accent)}.btn{border:1px solid var(--line);background:var(--surface);min-height:48px;color:var(--text);font:600 1rem var(--sans);cursor:pointer;white-space:nowrap;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 18px;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.danger{color:var(--red);border-color:#e7c3bb}.btn.ghost{background:0 0;border-color:#0000}.btn.small{border-radius:10px;min-height:36px;padding:0 12px;font-size:.9rem}.btn.big{width:100%;min-height:58px;font-size:1.1rem}.btn.icon-only{width:44px;padding:0}.savebar{z-index:20;border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:#fffffff7;position:fixed;bottom:0;left:0;right:0}.savebar .inner{align-items:center;gap:10px;max-width:640px;margin:0 auto;display:flex}label.field{display:block}label.field>span{margin-bottom:6px;font-size:.92rem;font-weight:600;display:block}label.field>small{margin-top:4px;display:block}input,select,textarea{width:100%;min-height:48px;color:var(--text);font:1rem var(--sans);background:#fff;border:1px solid #d8cfbf;border-radius:10px;padding:10px 12px}textarea{resize:vertical;min-height:80px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:3px solid #c4ad8873}input[type=checkbox]{width:22px;height:22px;min-height:22px;accent-color:var(--accent)}.check{align-items:center;gap:10px;min-height:44px;font-weight:500;display:flex}.invalid{border-color:var(--red)!important}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:14px}legend{font-family:var(--serif);padding:0 6px;font-weight:600}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{min-height:40px;font:500 .95rem var(--sans);color:var(--text);cursor:pointer;background:#fff;border:1px solid #d8cfbf;border-radius:999px;padding:0 14px}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.segmented{background:var(--surface-2);border-radius:12px;gap:4px;padding:4px;display:inline-flex}.segmented button{min-height:40px;font:600 .95rem var(--sans);color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 14px}.segmented button.on{color:var(--text);box-shadow:var(--shadow);background:#fff}.cow-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.cow-row+.cow-row{margin-top:10px}.cow-row.not-milked{background:var(--surface-2)}.cow-row.saved{border-left:4px solid var(--accent)}.cow-row.pending{border-left:4px solid var(--amber)}.cow-row .who{font-size:1.05rem;font-weight:700}.cow-row .who small{font-weight:400}.litre-input{text-align:right;font-variant-numeric:tabular-nums;width:112px;min-height:54px;font-size:1.35rem;font-weight:700}.litre-unit{color:var(--text-2);font-weight:600}.badge{background:var(--surface-2);color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 10px;font-size:.8rem;font-weight:600;display:inline-flex}.badge.good{background:var(--accent-soft);color:var(--accent-strong)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.blue{background:var(--blue-soft);color:var(--blue)}.banner{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.banner.ok{background:var(--accent-soft);border-color:#e5d9c3}.banner.warn{background:var(--amber-soft);border-color:#efd9b0}.banner.error{background:var(--red-soft);border-color:#efc9c0}.banner.info{background:var(--blue-soft);border-color:#c8dbe6}.sync-pill{cursor:pointer;white-space:nowrap;border:0;border-radius:999px;align-items:center;gap:6px;padding:5px 12px 5px 10px;font-size:.85rem;font-weight:700;display:inline-flex}.sync-pill.ok{color:#fff;background:#2e7d32}.sync-pill.pending{color:#3a2c00;background:#f5c518}.sync-pill.offline,.sync-pill.error{color:#fff;background:#c0392b}.dot{background:currentColor;border-radius:50%;width:8px;height:8px}.toast{background:var(--text);color:#fff;z-index:50;max-width:90vw;box-shadow:var(--shadow);border-radius:12px;padding:12px 18px;position:fixed;bottom:96px;left:50%;transform:translate(-50%)}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.stat .k{color:var(--text-2);font-size:.85rem;font-weight:500}.stat .v{font-family:var(--serif);font-variant-numeric:tabular-nums;margin-top:2px;font-size:1.7rem;font-weight:600;line-height:1.2}.stat .d{color:var(--text-2);margin-top:2px;font-size:.82rem}.up{color:var(--accent-strong)}.down{color:var(--red)}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 12px}th{color:var(--text-2);background:var(--surface-2);font-weight:600;position:sticky;top:0}td.r,th.r{text-align:right;font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:0}.grid>*{min-width:0}.card{min-width:0;overflow-x:auto}.card>table th,.card>table td{white-space:normal}tbody tr:hover{background:#fdfbf7}.list-item{background:var(--surface);border:1px solid var(--line);color:inherit;border-radius:12px;align-items:center;gap:12px;padding:12px;text-decoration:none;display:flex}.list-item+.list-item{margin-top:8px}.avatar{background:var(--sand);width:48px;height:48px;color:var(--text-2);border-radius:12px;flex:none;place-items:center;font-weight:700;display:grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.photo-tile{position:relative}.photo-delete{color:#fff;cursor:pointer;background:#0009;border:0;border-radius:50%;place-items:center;width:30px;height:30px;font-size:1.2rem;line-height:1;display:grid;position:absolute;top:4px;right:4px}.photo-delete:hover{background:#c0392b}.photo-confirm{color:#fff;text-align:center;background:#000000b8;border-radius:12px;flex-wrap:wrap;place-content:center;gap:6px;padding:6px;font-size:.8rem;font-weight:600;display:flex;position:absolute;inset:0}.photo-confirm span{width:100%}.btn.danger-solid{color:#fff;background:#c0392b;border-color:#c0392b}.kv{grid-template-columns:minmax(120px,40%) 1fr;gap:6px 12px;display:grid}.kv dt{color:var(--text-2)}.kv dd{margin:0;font-weight:500}.admin{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.admin-side{border-right:1px solid var(--line);background:#f3eee4;height:100vh;padding:18px 12px;position:sticky;top:0;overflow-y:auto}.menu-group{margin-bottom:10px}.menu-title{font:700 .68rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--text-2);padding:8px 12px 4px}.menu-link{color:var(--text);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-weight:500;text-decoration:none;display:flex}.menu-link svg{color:var(--accent-strong);flex:none}@media (hover:hover){.menu-link:hover{background:#fff9}}.menu-link.active{box-shadow:var(--shadow);color:var(--accent-strong);background:#fff;font-weight:600}.admin-mbar,.admin-tabs,.admin-sheet{display:none}.logo-full{mix-blend-mode:multiply;width:min(300px,80%);height:auto;margin:0 auto;display:block}.logo-type{mix-blend-mode:multiply;width:calc(100% - 24px);max-width:200px;height:auto;margin:6px 12px 22px;display:block}@media (width<=860px){.logo-type{width:100%;max-width:220px;margin:4px auto 10px}}.admin main{min-width:0;padding:24px 28px 64px}@media (width<=860px){.admin{grid-template-rows:auto 1fr;grid-template-columns:1fr;align-content:start}.admin-side{display:none}.admin main{padding:16px 16px calc(96px + env(safe-area-inset-bottom))}.admin-mbar{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#f3eee4f0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex;position:sticky;top:0}.admin-mbar img{mix-blend-mode:multiply;width:auto;height:34.5px;display:block}.admin-tabs{z-index:30;border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:#fff;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 18px #3c321e0f}.admin-tabs a,.admin-tabs button{min-height:52px;color:var(--text-2);font:600 .7rem var(--sans);cursor:pointer;background:0 0;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;text-decoration:none;display:flex}.admin-tabs a.active,.admin-tabs button.active{color:var(--accent-strong);background:var(--accent-soft)}.admin-sheet{z-index:40;background:#2b2a2661;animation:.15s ease-out fade;display:block;position:fixed;inset:0}.admin-sheet .sheet{max-height:86vh;padding:8px 12px calc(24px + env(safe-area-inset-bottom));background:#f7f3eb;border-radius:20px 20px 0 0;animation:.2s ease-out rise;position:absolute;bottom:0;left:0;right:0;overflow-y:auto}.admin-sheet .sheet-head{background:#f7f3eb;justify-content:space-between;align-items:center;padding:8px 4px 4px 12px;display:flex;position:sticky;top:-8px}.admin-sheet .menu-link{padding:12px;font-size:1.02rem}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:.6;transform:translateY(24px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.admin-sheet,.admin-sheet .sheet{animation:none}}.chart-box{height:280px;position:relative}.legend{color:var(--text-2);flex-wrap:wrap;gap:16px;font-size:.85rem;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.qr-sheet{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.qr-card{text-align:center;break-inside:avoid;border:1px dashed #bbb;border-radius:8px;padding:10px}.qr-card img{width:100%;max-width:160px}.print-only{display:none}@media print{.no-print,.topbar,.savebar,.admin-side,.admin-mbar,.admin-tabs,.admin-sheet{display:none!important}.print-only{display:block}body{background:#fff}.admin{display:block}.card,.stat,.table-wrap{box-shadow:none}.page,.admin main{max-width:none;padding:0}}.home-section{flex-direction:column;gap:10px;display:flex}.section-title{font:700 .74rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-strong);margin:10px 2px 0}.grid.cols2{grid-template-columns:1fr 1fr;gap:10px}.tile.compact{flex-direction:column;align-items:flex-start;gap:10px;min-height:112px;padding:14px}.tile.compact .label{font-size:.98rem;line-height:1.25}.grid.cols2>.tile.compact:last-child:nth-child(odd){flex-direction:row;grid-column:span 2;align-items:center;min-height:72px}.milkings{gap:10px;display:grid}.milking{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);flex-direction:column;align-items:center;gap:4px;min-width:0;padding:16px 8px 14px;text-decoration:none;display:flex;position:relative}.milking:active{transform:scale(.98)}.milking .icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-strong);border-radius:12px;place-items:center;margin-bottom:4px;display:grid}.milking .name{font-size:.98rem;font-weight:600}.milking .time{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:.8rem}.milking .count{color:var(--text-2);font-size:.8rem;line-height:1.25}.milking.now{border:2px solid var(--accent);background:#fffaf1;padding:15px 7px 13px}.milking.done .icon{color:#fff;background:#2e7d32}.milking.done .count{color:#2e6b34;font-weight:600}.now-chip{background:var(--accent);color:var(--on-accent);letter-spacing:.04em;white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.7rem;font-weight:700;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.steps-list{margin:0;padding:0;list-style:none}.steps-list li{color:var(--text-2);padding:0 0 14px 30px;position:relative}.steps-list li:before{content:"";border:2px solid var(--line);background:var(--surface);border-radius:50%;width:12px;height:12px;position:absolute;top:4px;left:6px}.steps-list li:after{content:"";background:var(--line);width:2px;position:absolute;top:20px;bottom:0;left:12px}.steps-list li:last-child:after{display:none}.steps-list li.done{color:var(--text)}.steps-list li.done:before{background:#2e7d32;border-color:#2e7d32}.money-lines>.spread{border-bottom:1px solid var(--line);align-items:flex-start;padding:8px 0}.money-lines>.spread.total{border-bottom:0;border-top:2px solid var(--text)}.money-lines .amt{font-variant-numeric:tabular-nums;white-space:nowrap}.money-details{border-top:1px solid var(--line);padding-top:14px}.money-details>summary{cursor:pointer;padding:2px 0}.money-details[open]{padding-bottom:6px}@media (width<=700px){.table-cards{box-shadow:none;background:0 0;border:0;overflow:visible;max-height:none!important}.table-cards table,.table-cards tbody,.table-cards tr,.table-cards td{width:100%;display:block}.table-cards thead{display:none}.table-cards tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:1fr 1fr;gap:10px 14px;margin-bottom:12px;padding:14px 16px;display:grid}.table-cards td{overflow-wrap:anywhere;white-space:normal;border:0;min-width:0;padding:0;text-align:left!important}.table-cards td[data-label]:not([data-label=""]):before{content:attr(data-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);margin-bottom:2px;font-size:.7rem;font-weight:700;display:block}.table-cards td:first-child{border-bottom:1px solid var(--line);grid-column:1/-1;padding-bottom:8px;font-size:1.05rem;font-weight:600}.table-cards td:first-child:before{display:none!important}.table-cards td.card-wide,.table-cards td[data-label=""],.table-cards td[colspan]{grid-column:1/-1}.table-cards td[data-label=""]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.table-cards td[data-label=""] .btn{flex:1}.table-cards td[data-label=""]:empty{display:none}.table-cards tr[data-collapsible]>td:first-child{cursor:pointer;-webkit-tap-highlight-color:transparent;padding-right:30px;position:relative}.table-cards tr[data-collapsible]>td:first-child:after{content:"";border-right:2px solid var(--accent-strong);border-bottom:2px solid var(--accent-strong);width:9px;height:9px;transition:transform .15s;position:absolute;top:6px;right:4px;transform:rotate(45deg)}.table-cards tr[data-collapsible][data-open]>td:first-child:after{top:11px;transform:rotate(-135deg)}.table-cards tr[data-collapsible]:not([data-open])>td:nth-child(n+4){display:none}.table-cards tr[data-collapsible]:not([data-open])>td:first-child{border-bottom:1px solid var(--line)}.table-cards tr[data-collapsible]>td:first-child:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}.table-cards tr[data-alert=red]{border-left:5px solid var(--red)}.table-cards tr[data-alert=amber]{border-left:5px solid #c98a1c}.table-cards tr[data-collapsible]:not([data-open])>td[data-pin]{display:block}.table-cards[data-alerts]:before{content:"⚠ " attr(data-alerts);background:var(--red-soft);color:var(--red);border-radius:999px;margin-bottom:10px;padding:4px 12px;font-size:.85rem;font-weight:700;display:inline-block}}@media (width>=701px){.table-cards tr[data-alert=red]>td:first-child{box-shadow:inset 4px 0 0 var(--red)}.table-cards tr[data-alert=amber]>td:first-child{box-shadow:inset 4px 0 #c98a1c}}.tile.alert-red{border-left:5px solid var(--red)}.tile.alert-amber{border-left:5px solid #c98a1c}
