@font-face{font-family:Bricolage Grotesque;src:url(/fonts/BricolageGrotesque-VariableFont_opsz_wdth_wght.ttf) format("truetype");font-weight:200 800;font-stretch:75% 100%;font-display:swap}@font-face{font-family:Hanken Grotesk;src:url(/fonts/HankenGrotesk-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-display:swap}:root{--paper: #F3ECDD;--paper-raised: #FBF6EC;--paper-sunken: #EADFCB;--paper-white: #FEFCF7;--ink: #221D16;--ink-2: #5B5245;--ink-3: #8C8170;--line: #DDD0B8;--line-strong: #CBBC9F;--terracotta: #C75B3F;--terracotta-deep: #A8472E;--terracotta-soft: #F3DDD2;--basil: #3F6B4E;--basil-deep: #2F5640;--basil-soft: #DBE6DC;--amber: #E2A02E;--amber-deep: #B97E1B;--amber-soft: #F6E7C6;--grape: #6E5BB5;--grape-deep: #564499;--grape-soft: #E3DCEF;--sky: #5E7BB0;--sky-deep: #46618F;--sky-soft: #DBE2EE;--yes: var(--basil);--yes-soft: var(--basil-soft);--maybe: var(--amber);--maybe-soft: var(--amber-soft);--no: #BF4A35;--no-soft: #F1D8D0;--info: var(--sky);--info-soft: var(--sky-soft);--font-display: "Bricolage Grotesque", "Hanken Grotesk", system-ui, sans-serif;--font-text: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--size-display: 56px;--size-h1: 34px;--size-h2: 24px;--size-h3: 19px;--size-body: 16px;--size-sm: 14px;--size-xs: 12.5px;--lh-tight: 1.04;--lh-snug: 1.18;--lh-body: 1.5;--weight-reg: 400;--weight-med: 500;--weight-sb: 600;--weight-bold: 700;--weight-x: 800;--track-tight: -.02em;--track-eyebrow: .08em;--r-sm: 10px;--r-md: 16px;--r-lg: 22px;--r-xl: 28px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(58,42,18,.06);--shadow-md: 0 6px 18px rgba(70,50,22,.09);--shadow-lg: 0 16px 40px rgba(70,50,22,.12);--shadow-pop: 0 22px 60px rgba(60,42,18,.18);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--s-16: 64px;--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-soft: cubic-bezier(.4, 0, .2, 1);--dur-fast: .13s;--dur: .22s;--dur-slow: .38s}:root{font-family:var(--font-text);line-height:var(--lh-body);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;--page-max: 1280px}*{box-sizing:border-box}body{margin:0;background:var(--paper);background-image:radial-gradient(720px 480px at 12% -8%,color-mix(in srgb,var(--terracotta) 13%,transparent),transparent 70%),radial-gradient(680px 520px at 100% 18%,color-mix(in srgb,var(--amber) 12%,transparent),transparent 72%),radial-gradient(760px 600px at 50% 116%,color-mix(in srgb,var(--basil) 11%,transparent),transparent 72%);background-attachment:fixed;min-height:100vh}h1{font-family:var(--font-display);font-weight:var(--weight-x);font-size:var(--size-h1);line-height:var(--lh-snug);letter-spacing:var(--track-tight);color:var(--ink);margin:0 0 var(--s-5)}h2{font-family:var(--font-text);font-weight:var(--weight-x);font-size:var(--size-h2);line-height:var(--lh-snug);letter-spacing:-.012em;color:var(--ink);margin:0 0 var(--s-3)}h3{font-family:var(--font-text);font-weight:var(--weight-sb);font-size:var(--size-h3);line-height:var(--lh-snug);color:var(--ink);margin:0 0 var(--s-2)}p{margin:0 0 var(--s-3)}a{color:var(--terracotta-deep);font-weight:var(--weight-sb);text-decoration:none}a:hover{color:var(--terracotta);text-decoration:underline;text-underline-offset:3px}code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9em;background:var(--paper-sunken);padding:.1em .35em;border-radius:var(--r-sm)}.wordmark{font-family:var(--font-display);font-weight:var(--weight-x);font-size:var(--size-h3);letter-spacing:var(--track-tight);color:var(--ink)}.eyebrow{font-family:var(--font-text);font-weight:var(--weight-bold);font-size:var(--size-xs);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--ink-3)}button{font-family:var(--font-text);font-weight:var(--weight-sb);font-size:var(--size-sm);padding:.62rem 1.1rem;border:1.5px solid var(--line-strong);border-radius:var(--r-pill);background:var(--paper-white);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur) var(--ease-out),background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}button:hover{box-shadow:var(--shadow-sm);border-color:var(--ink-3)}button:active{transform:scale(.97);box-shadow:var(--shadow-sm)}button:focus-visible{outline:2px solid var(--terracotta);outline-offset:2px}button.primary{background:var(--ink);color:var(--paper-white);border-color:var(--ink);box-shadow:var(--shadow-md)}button.primary:hover{background:#2e271d;border-color:#2e271d;box-shadow:var(--shadow-lg)}button.brand{background:var(--terracotta);color:var(--paper-white);border-color:var(--terracotta);box-shadow:var(--shadow-md)}button.brand:hover{background:var(--terracotta-deep);border-color:var(--terracotta-deep);box-shadow:var(--shadow-lg)}button.confirm{background:var(--basil);color:var(--paper-white);border-color:var(--basil);box-shadow:var(--shadow-md)}button.confirm:hover{background:var(--basil-deep);border-color:var(--basil-deep)}button.danger{background:var(--no-soft);border-color:transparent;color:#9a3a28}button.danger:hover{background:color-mix(in srgb,var(--no) 24%,var(--paper-white));border-color:transparent}button:disabled{opacity:1;background:var(--paper-sunken);color:var(--ink-3);border-color:transparent;box-shadow:none;cursor:not-allowed;transform:none}input,select,textarea{font-family:var(--font-text);font-size:var(--size-body);color:var(--ink);padding:.6rem .7rem;border:1.5px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper-white);max-width:100%;transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}select,textarea{width:100%}input::placeholder,textarea::placeholder{color:var(--ink-3)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--terracotta);box-shadow:0 0 0 3px var(--terracotta-soft)}label{display:block;font-family:var(--font-text);font-size:var(--size-sm);font-weight:var(--weight-bold);color:var(--ink-2);margin-bottom:.3rem}.field{margin-bottom:var(--s-4)}.app-main{max-width:var(--page-max);margin:0 auto;padding:var(--s-8) var(--s-5) var(--s-12)}@media (min-width: 880px){.app-main{padding:var(--s-10) var(--s-10) var(--s-16)}}nav.top{background:color-mix(in srgb,var(--paper-raised) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding:var(--s-3) 0;position:sticky;top:0;z-index:10}nav.top .nav-inner{max-width:var(--page-max);margin:0 auto;padding:0 var(--s-5);display:flex;gap:var(--s-2);flex-wrap:wrap;align-items:center}@media (min-width: 880px){nav.top .nav-inner{padding:0 var(--s-10)}}nav.top a{font-family:var(--font-text);font-weight:var(--weight-sb);font-size:var(--size-sm);color:var(--ink-2);text-decoration:none;padding:.4rem .8rem;border-radius:var(--r-pill);display:inline-flex;align-items:center;gap:.4rem;transition:background var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}nav.top a svg{color:var(--ink-3);transition:color var(--dur) var(--ease-out)}nav.top a:hover svg,nav.top a.active svg{color:inherit}nav.top a:hover{background:var(--paper-sunken);color:var(--ink);text-decoration:none}nav.top a.active{background:var(--terracotta-soft);color:var(--terracotta-deep)}nav.top .spacer{flex:1}nav.top button{padding:.4rem .9rem;font-size:var(--size-sm)}.nav-links{display:flex;flex:1;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.nav-toggle{display:none;align-items:center;gap:.45rem;padding:.45rem .9rem;font-size:var(--size-sm);background:var(--paper-sunken);color:var(--ink);border:none;box-shadow:none}.nav-toggle:hover{background:var(--line);box-shadow:none}@media (max-width: 879px){.nav-toggle{display:inline-flex;margin-left:auto}.nav-links{display:none;flex-basis:100%;flex-direction:column;align-items:stretch;gap:var(--s-1);margin-top:var(--s-2);padding-top:var(--s-3);border-top:1px solid var(--line)}.nav-links.is-open{display:flex}.nav-links a,.nav-links>button{width:100%;justify-content:flex-start}.nav-links .spacer{display:none}.nav-user{padding:var(--s-2) .8rem 0}}.card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-6);margin-bottom:var(--s-5);box-shadow:var(--shadow-md)}.owe-card{margin-top:var(--s-5)}.owe-figure{font-size:var(--size-h3)}.owe-figure strong{color:var(--terracotta-deep)}.bank-details{margin-top:var(--s-3);display:flex;flex-direction:column;gap:var(--s-3)}.bank-fields{margin:0;display:flex;flex-direction:column;gap:var(--s-2)}.bank-field{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-2) var(--s-3) var(--s-2) var(--s-4);border-radius:var(--r-md);background:var(--paper-sunken);border:1px solid var(--line)}.bank-field>dt{margin:0;font-size:var(--size-xs);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--ink-3)}.bank-field>dd{margin:0;display:flex;align-items:center;gap:var(--s-3)}.bank-value{font-weight:var(--weight-sb);font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--ink)}.copy-button{padding:.34rem .7rem;font-size:var(--size-xs);border-radius:var(--r-pill);background:var(--paper-white);border:1.5px solid var(--line-strong);color:var(--ink);white-space:nowrap}.copy-button:hover{background:var(--terracotta);border-color:var(--terracotta);color:var(--paper-white)}.bank-details>.copy-button{align-self:flex-start}@media (max-width: 380px){.bank-field{flex-direction:column;align-items:flex-start;gap:var(--s-2)}.bank-field>dd{width:100%;justify-content:space-between}}.row{display:flex;gap:var(--s-3);align-items:center;flex-wrap:wrap}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--s-4);margin-bottom:var(--s-5)}.stat{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-2);background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-5);box-shadow:var(--shadow-md)}.stat-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--r-md)}.stat-value{font-family:var(--font-display);font-weight:var(--weight-x);font-size:var(--size-h1);line-height:1;letter-spacing:var(--track-tight);color:var(--ink)}.stat-label{font-size:var(--size-sm);color:var(--ink-3)}.muted{color:var(--ink-3);font-size:var(--size-sm)}.tag{display:inline-flex;align-items:center;gap:.35rem;background:var(--paper-sunken);color:var(--ink-2);border-radius:var(--r-pill);padding:.25rem .7rem;font-size:var(--size-xs);font-weight:var(--weight-sb);margin-right:.3rem}.badge-locked{background:var(--basil-soft);color:var(--basil-deep)}.badge-open{background:var(--amber-soft);color:var(--amber-deep)}.warn{background:var(--no-soft);border:1px solid color-mix(in srgb,var(--no) 30%,transparent);border-radius:var(--r-md);padding:.7rem .9rem;color:#9a3a28;font-size:var(--size-sm);margin-bottom:var(--s-4)}.meta-list{display:grid;gap:var(--s-3);margin:var(--s-4) 0 0}.meta-row{display:grid;grid-template-columns:6.5rem 1fr;gap:var(--s-2) var(--s-4);align-items:baseline}.meta-row>dt{font-size:var(--size-sm);font-weight:var(--weight-bold);color:var(--ink-2)}.meta-row>dd{margin:0;min-width:0}.meta-row>dd .muted{display:block;margin-top:2px}@media (max-width: 540px){.meta-row{grid-template-columns:1fr;gap:2px}}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.6rem;border-bottom:1px solid var(--line)}th{font-weight:var(--weight-bold);color:var(--ink-2);font-size:var(--size-sm)}ul.plain{list-style:none;padding:0;margin:0 0 var(--s-3)}ul.plain li{padding:.35rem 0;border-bottom:1px solid var(--line)}ul.plain li:last-child{border-bottom:none}.disclosure{border-top:1px solid var(--line);margin-top:var(--s-4);padding-top:var(--s-3)}.disclosure>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-1) 0;font-weight:var(--weight-sb);color:var(--ink)}.disclosure>summary::-webkit-details-marker{display:none}.disclosure-title{display:inline-flex;align-items:center;gap:var(--s-2)}.disclosure-title svg{color:var(--terracotta)}.disclosure-caret{color:var(--ink-3);transition:transform var(--dur) var(--ease-out)}.disclosure[open]>summary .disclosure-caret{transform:rotate(180deg)}.ingredient-list{margin-top:var(--s-2);margin-bottom:0;padding-left:var(--s-4)}.ingredient-list li{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);border-bottom-color:color-mix(in srgb,var(--line) 60%,transparent)}.ingredient-groups{margin-top:var(--s-3);display:flex;flex-direction:column;gap:var(--s-5)}.ingredient-group-label{font-family:var(--font-display);font-size:var(--size-body);font-weight:var(--weight-bold);color:var(--terracotta-deep);padding-bottom:var(--s-1);margin-bottom:var(--s-1);border-bottom:1px solid var(--line)}.ingredient-name{color:var(--ink)}.ingredient-qty{flex-shrink:0;font-size:var(--size-sm);font-weight:var(--weight-sb);color:var(--ink-2);background:var(--paper-sunken);border-radius:var(--r-pill);padding:.1rem .6rem}.recipe-head{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-3)}.recipe-group{margin-bottom:var(--s-8)}.recipe-group-head{margin-bottom:var(--s-3)}.recipe-group-count{font-weight:var(--weight-reg)}.recipe-list{padding:0 var(--s-5)}.recipe-row{border-top:1px solid var(--line)}.recipe-row.is-first{border-top:none}.recipe-row-head{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-4) 0;cursor:pointer}.recipe-row-caret{flex-shrink:0;color:var(--ink-3);transition:transform var(--dur) var(--ease-out);transform:rotate(-90deg)}.recipe-row-caret.is-open{transform:rotate(0)}.recipe-summary{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-3);flex-wrap:wrap}.recipe-summary-title{font-size:var(--size-h3);min-width:0}.recipe-summary-meta{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--s-2)}.recipe-summary-meta .tag{margin-right:0}.recipe-cuisine-note{font-size:var(--size-xs)}.recipe-summary-time{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--size-sm);white-space:nowrap}.rating-mark{display:inline-flex;align-items:center;gap:1px;color:var(--amber-deep)}.badge-tested{background:var(--sky-soft);color:var(--sky-deep)}.badge-hero{background:var(--terracotta-soft);color:var(--terracotta-deep)}.recipe-toolbar{margin-bottom:var(--s-5)}.recipe-search{display:flex;align-items:center;gap:var(--s-2);background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-pill);padding:0 var(--s-4);color:var(--ink-3)}.recipe-search input{flex:1;border:none;background:transparent;padding:.6rem 0;font-size:var(--size-body);color:var(--ink)}.recipe-search input:focus{outline:none}.recipe-filters{display:flex;align-items:center;gap:var(--s-2);margin-top:var(--s-3);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.recipe-filters::-webkit-scrollbar{display:none}.filter-chip{flex:0 0 auto;border:1px solid var(--line-strong);background:var(--paper-raised);color:var(--ink-2);border-radius:var(--r-pill);padding:.35rem .85rem;font-size:var(--size-sm);font-weight:var(--weight-sb);cursor:pointer;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.filter-chip.is-on{background:var(--terracotta-soft);border-color:var(--terracotta);color:var(--terracotta-deep)}.filter-clear{flex:0 0 auto;display:inline-flex;align-items:center;gap:.2rem;border:none;background:transparent;color:var(--ink-3);font-size:var(--size-sm);cursor:pointer}.recipe-count{margin:0 0 var(--s-3)}.recipe-empty{margin-top:var(--s-5)}.recipe-assign-row{margin-top:var(--s-2)}.import-step+.import-step{margin-top:var(--s-5)}.import-prompt{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--size-sm);color:var(--ink-2);background:var(--paper-sunken)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--s-4);background:#221d1673;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.modal-card{width:100%;max-width:420px;max-height:90vh;overflow-y:auto;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:var(--s-5)}.modal-head{align-items:center;margin-bottom:var(--s-2)}.modal-close{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--ink-3);padding:var(--s-1);cursor:pointer}.modal-card .calendar{padding:0;touch-action:auto}.cal-cell.is-disabled{opacity:.4;cursor:default}.assign-done{padding:var(--s-3) 0}.assign-done p{display:flex;align-items:center;gap:var(--s-2);color:var(--basil-deep)}.assign-done .row{margin-top:var(--s-4)}.recipe-row-detail{padding:0 0 var(--s-5) calc(16px + var(--s-3))}.recipe-row-editing{padding:var(--s-4) 0}.recipe-row-actions{margin-top:var(--s-5)}.recipe-view>*+*{margin-top:var(--s-4)}.recipe-chips{gap:var(--s-2)}.recipe-timeline{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4)}.recipe-when{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--size-sm);color:var(--ink-2)}.recipe-when svg{color:var(--ink-3)}.recipe-metadata{margin:0}.prose-block{white-space:pre-wrap;margin:var(--s-3) 0 0;line-height:var(--lh-body)}.flavour-table{margin:var(--s-3) 0}.flavour-table th:first-child{width:8rem}.flavour-element{font-weight:var(--weight-sb);vertical-align:top}.rating-control{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.rating-stars{display:inline-flex;gap:2px}.rating-star{padding:2px;border:none;background:transparent;box-shadow:none;color:var(--line-strong);border-radius:var(--r-sm)}.rating-star:hover{box-shadow:none;background:var(--paper-sunken)}.rating-star.is-on{color:var(--amber)}.rating-pill{display:inline-flex;align-items:center;border-radius:var(--r-pill);padding:.2rem .7rem;font-size:var(--size-sm);font-weight:var(--weight-sb)}.rating-pill.is-5{background:var(--basil-soft);color:var(--basil-deep)}.rating-pill.is-4{background:var(--sky-soft);color:var(--sky-deep)}.rating-pill.is-3{background:var(--amber-soft);color:var(--amber-deep)}.rating-pill.is-2{background:var(--terracotta-soft);color:var(--terracotta-deep)}.rating-pill.is-1{background:var(--no-soft);color:#9a3a28}.scaler{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;background:var(--paper-sunken);border-radius:var(--r-md);padding:var(--s-3) var(--s-4)}.scaler-label{font-weight:var(--weight-bold);color:var(--ink-2)}.stepper{display:inline-flex;align-items:center;gap:var(--s-2);background:var(--paper-white);border:1.5px solid var(--line-strong);border-radius:var(--r-pill);padding:3px}.stepper button{width:30px;height:30px;padding:0;border-radius:var(--r-pill)}.stepper-value{min-width:1.6rem;text-align:center;font-weight:var(--weight-bold);font-size:var(--size-body)}.scaler-hint{display:inline-flex;align-items:center;gap:var(--s-2)}.linkish{border:none;background:transparent;box-shadow:none;padding:0;font-size:var(--size-sm);color:var(--terracotta-deep);text-decoration:underline;text-underline-offset:2px}.linkish:hover{box-shadow:none;background:transparent;color:var(--terracotta)}ol.steps{list-style:none;margin:var(--s-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.step{display:flex;gap:var(--s-3);align-items:flex-start;padding:var(--s-3);border:1px solid transparent;border-radius:var(--r-md);cursor:pointer;line-height:var(--lh-body);transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.step:hover{background:var(--paper-sunken)}.step.is-active{background:var(--terracotta-soft);border-color:color-mix(in srgb,var(--terracotta) 35%,transparent)}.step-num{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:var(--r-pill);background:var(--paper-sunken);color:var(--ink-2);font-size:var(--size-sm);font-weight:var(--weight-bold)}.step.is-active .step-num{background:var(--terracotta);color:var(--paper-white)}.step-body{flex:1;min-width:0;padding-top:.15rem}.change-notes{width:100%;margin-top:var(--s-3)}.change-notes-actions{margin-top:var(--s-3)}.cook-page{max-width:720px}.back-link{display:inline-flex;align-items:center;gap:.4rem;border:none;background:transparent;box-shadow:none;padding:0;margin-bottom:var(--s-4);color:var(--ink-2);font-weight:var(--weight-sb);font-size:var(--size-sm)}.back-link:hover{box-shadow:none;background:transparent;color:var(--terracotta-deep)}.cook-title{margin-bottom:var(--s-1)}.cook-time{margin:0 0 var(--s-5)}.seg{display:inline-flex;gap:var(--s-1);background:var(--paper-sunken);border-radius:var(--r-pill);padding:4px}.seg button{border:none;background:transparent;box-shadow:none;color:var(--ink-2);padding:.5rem 1rem}.seg button:hover{box-shadow:none;background:color-mix(in srgb,var(--paper-white) 60%,transparent)}.seg button.seg-on{background:var(--paper-white);color:var(--ink);box-shadow:var(--shadow-sm)}.schedule-layout{display:grid;gap:var(--s-5);align-items:start}@media (min-width: 880px){.schedule-layout{grid-template-columns:2fr minmax(300px,1fr)}.schedule-rail{position:sticky;top:var(--s-5)}}.schedule-rail>.card{margin-bottom:0}.schedule-rail>.card+.card{margin-top:var(--s-5)}.calendar{padding:var(--s-5);touch-action:none}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-4)}.cal-nav{width:38px;height:38px;padding:0;border-radius:var(--r-pill)}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--s-1);margin-bottom:var(--s-2)}.cal-weekdays span{text-align:center;font-size:var(--size-xs);font-weight:var(--weight-bold);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--ink-3)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--s-1)}.cal-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;min-height:3.25rem;padding:.4rem 0;border:1.5px solid transparent;border-radius:var(--r-md);background:var(--paper-white);color:var(--ink);font-weight:var(--weight-med);-webkit-user-select:none;user-select:none}.cal-cell:hover{box-shadow:none;border-color:var(--line-strong)}.cal-cell.is-out{background:transparent;color:var(--ink-3);opacity:.55}.cal-cell.is-editable,.cal-cell.is-clickable{cursor:pointer}.cal-cell.is-today{border-color:var(--line-strong)}.cal-cell.is-today .cal-num{color:var(--terracotta-deep);font-weight:var(--weight-x)}.cal-cell.is-staged{background:var(--terracotta-soft);border-color:var(--terracotta)}.cal-cell.is-selected{background:var(--ink);border-color:var(--ink);color:var(--paper-white)}.cal-cell.is-selected .cal-num{color:var(--paper-white)}.cal-cell.is-available:not(.is-selected){border-color:var(--basil);background:color-mix(in srgb,var(--basil) 8%,var(--paper-white));box-shadow:inset 0 0 12px color-mix(in srgb,var(--basil) 22%,transparent)}.cal-cell.is-available:not(.is-selected):hover{border-color:var(--basil-deep);box-shadow:inset 0 0 14px color-mix(in srgb,var(--basil) 28%,transparent)}.cal-cell.is-available:not(.is-selected) .cal-num{color:var(--basil-deep);font-weight:var(--weight-bold)}.cal-num{font-size:var(--size-sm);line-height:1}.cal-dots{display:flex;gap:4px}.cal-dot{width:9px;height:9px;border-radius:var(--r-pill);background:var(--ink-3)}.cal-dot.is-guest{background:var(--terracotta)}.cal-dot.is-personal{background:var(--grape)}.cal-dot.is-locked{background:var(--basil)}.cal-legend{display:flex;flex-wrap:wrap;gap:var(--s-4);margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid var(--line);font-size:var(--size-xs);color:var(--ink-3)}.cal-legend span{display:inline-flex;align-items:center;gap:.4rem}.weekstrip{margin:var(--s-3) 0 var(--s-4)}.weekstrip .cal-head{margin-bottom:var(--s-3)}.weekstrip .cal-cell:disabled{cursor:default;background:transparent;border-color:transparent}.weekstrip .cal-cell:disabled .cal-num{color:var(--ink-3)}.weekstrip .cal-cell:disabled:hover{border-color:transparent;box-shadow:none}.night-head{gap:var(--s-2)}.night-date{flex:1;font-size:var(--size-h3)}.night-head .tag{margin-right:0}.night-rsvp{margin-top:var(--s-4)}.night-admin{margin-top:var(--s-5);padding-top:var(--s-5);border-top:1px solid var(--line)}.night-admin>.field:last-of-type{margin-bottom:var(--s-5)}.field-sub{margin-top:var(--s-3)}.night-actions button{flex:1}.attendee-list{list-style:none;margin:0 0 var(--s-2);padding:0;display:grid;gap:var(--s-2)}.attendee-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.attendee-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--weight-med)}.seg-sm{flex:none;padding:3px}.seg-sm button{padding:.32rem .7rem;font-size:var(--size-xs)}.price-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}@media (max-width: 420px){.price-grid{grid-template-columns:1fr}}.price-cell{display:flex;flex-direction:column;gap:var(--s-1);min-width:0}.price-cap{font-size:var(--size-xs);font-weight:var(--weight-med);color:var(--ink-3)}.price-cell .affixed{width:100%}.price-cell .affixed input{width:100%;min-width:0}.inline-save{display:flex;gap:var(--s-3);align-items:center}.inline-save input{flex:1;min-width:0}.inline-save button{flex:none}.affixed{display:inline-flex;align-items:center;padding-left:.7rem;border:1.5px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper-white);transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.affixed:focus-within{border-color:var(--terracotta);box-shadow:0 0 0 3px var(--terracotta-soft)}.affixed .affix{color:var(--ink-3)}.affixed input{border:none;background:transparent;padding-left:.3rem}.affixed input:focus{outline:none;border-color:transparent;box-shadow:none}.affixed-total input{width:5rem}.balance-list{padding:0 var(--s-5)}.balances-subhead{margin-top:var(--s-6)}.balance-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-4);padding:var(--s-4) 0;border-top:1px solid var(--line)}.balance-row:first-child{border-top:none}.balance-who{flex:1 1 11rem;min-width:0;display:flex;flex-direction:column;gap:2px}.balance-amount{display:flex;align-items:baseline;gap:var(--s-2);margin-left:auto}.balance-figure{font-family:var(--font-display);font-weight:var(--weight-x);font-size:var(--size-h3);letter-spacing:var(--track-tight)}.balance-amount.is-owing .balance-figure{color:var(--terracotta-deep)}.balance-amount.is-credit .balance-figure{color:var(--basil-deep)}.balance-amount.is-clear .balance-figure{color:var(--ink-3);font-size:var(--size-body);font-weight:var(--weight-sb)}.balance-tag{font-size:var(--size-xs);font-weight:var(--weight-sb);text-transform:uppercase;letter-spacing:var(--track-eyebrow);color:var(--ink-3)}.pay-actions,.pay-other{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-2)}.pay-actions button,.pay-other button{padding:.42rem .8rem;font-size:var(--size-sm)}@media (max-width: 540px){.balance-amount{margin-left:0}.pay-actions,.pay-other{flex-basis:100%}}.feedback-root{position:fixed;right:var(--s-5);bottom:var(--s-5);z-index:50;display:flex;flex-direction:column;align-items:flex-end;gap:var(--s-3)}.feedback-fab{display:inline-flex;align-items:center;gap:var(--s-2);padding:.7rem 1.05rem;border-radius:var(--r-pill);background:var(--ink);color:var(--paper-white);border:none;box-shadow:var(--shadow-lg);font-weight:var(--weight-sb)}.feedback-fab:hover{background:color-mix(in srgb,var(--ink) 86%,var(--terracotta));color:var(--paper-white)}.feedback-fab-label{font-size:var(--size-sm)}.feedback-panel{width:320px;max-width:calc(100vw - 2 * var(--s-5));background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:var(--s-5);animation:feedback-pop var(--dur) var(--ease-out)}@keyframes feedback-pop{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}.feedback-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-1)}.feedback-panel textarea{width:100%;resize:vertical}.feedback-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border-radius:var(--r-pill);background:var(--paper-sunken);color:var(--ink-2);border:none;box-shadow:none}.feedback-icon-btn:hover{background:var(--line);color:var(--ink)}.feedback-attach{display:inline-flex;align-items:center;gap:var(--s-2);width:100%;justify-content:center;margin-top:var(--s-3);background:var(--paper-sunken);color:var(--ink-2);border:1.5px dashed var(--line-strong);box-shadow:none;font-size:var(--size-sm)}.feedback-attach:hover{background:var(--paper-white);border-color:var(--terracotta);color:var(--ink)}.feedback-shot{position:relative;margin-top:var(--s-3);border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line)}.feedback-shot img{display:block;width:100%;max-height:150px;object-fit:cover;object-position:top}.feedback-shot-remove{position:absolute;top:var(--s-2);right:var(--s-2);background:color-mix(in srgb,var(--ink) 72%,transparent);color:var(--paper-white)}.feedback-shot-remove:hover{background:var(--ink);color:var(--paper-white)}.feedback-send{width:100%;justify-content:center;margin-top:var(--s-4)}.feedback-done{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--s-2);padding:var(--s-4) 0;color:var(--basil-deep)}.preview-banner{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--s-3);padding:var(--s-2) var(--s-4);background:var(--amber-soft);color:var(--amber-deep);font-size:var(--size-sm);font-weight:var(--weight-sb)}.preview-banner svg{vertical-align:text-bottom}.preview-banner button{padding:.25rem .7rem;background:var(--amber-deep);color:var(--paper-white);border:none;border-radius:var(--r-pill);font-size:var(--size-sm)}.a2hs{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + var(--s-4));transform:translate(-50%);z-index:60;width:320px;max-width:calc(100vw - 2 * var(--s-4));background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:var(--s-5);animation:feedback-pop var(--dur) var(--ease-out)}.a2hs-close{position:absolute;top:var(--s-2);right:var(--s-2);width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-pill);background:var(--paper-sunken);color:var(--ink-2);border:none;box-shadow:none}.a2hs-close:hover{background:var(--line);color:var(--ink)}.a2hs-title{display:block;margin-bottom:var(--s-1);padding-right:var(--s-5)}.a2hs-body{margin:0 0 var(--s-3);font-size:var(--size-sm);color:var(--ink-2)}.a2hs-ok{width:100%;justify-content:center}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
