:root{--paper: #f7f5f0;--card: #ffffff;--ink: #141414;--muted: #6b6760;--line: #e4e0d8;--accent: #1f6feb;--accent-ink: #fff;--danger: #c2261d;--love: #e0245e;--blue: #2aa9e0;--green: #3cb54a;--yellow: #f6c90e;--red: #e5322d;--radius: 14px;--shadow: 0 1px 2px rgba(0,0,0,.05), 0 2px 8px rgba(0,0,0,.04);color-scheme:light}@media(prefers-color-scheme:dark){:root{--paper: #121212;--card: #1c1c1c;--ink: #f2f0eb;--muted: #a29d94;--line: #2e2c29;--accent: #4c8dff;--shadow: none;color-scheme:dark}.brand img,.login-logo,.splash img{filter:invert(1) hue-rotate(180deg)}}*{box-sizing:border-box}html,body{margin:0;background:var(--paper);color:var(--ink)}body{font:15px/1.45 Inter,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}h1,h2{font-family:Archivo Black,Inter,sans-serif;font-weight:400;letter-spacing:.2px}h1{font-size:26px;margin:8px 0 12px}h2{font-size:17px;margin:22px 0 10px}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 11px;min-height:40px}textarea{width:100%;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.splash{display:grid;place-items:center;height:100vh}.splash img{width:220px;opacity:.8}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;padding:8px 16px;padding-top:max(8px,env(safe-area-inset-top));background:var(--card);border-bottom:1px solid var(--line)}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:3px;background:linear-gradient(90deg,var(--blue),var(--green),var(--yellow),var(--red))}.brand img{height:36px;display:block}.topnav{display:flex;gap:4px;flex:1}.topnav a{color:var(--muted);padding:8px 12px;border-radius:999px;font-weight:600}.topnav a.on{color:var(--ink);background:var(--paper)}.me-btn{border:0;background:none;padding:0;cursor:pointer;margin-left:auto}.page{max-width:1040px;margin:0 auto;padding:16px 16px 96px}.tabbar{display:none}.offline{background:var(--yellow);color:#000;text-align:center;font-size:13px;padding:4px}@media(max-width:720px){.topnav{display:none}.tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:10;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;padding:8px 0 6px;font-size:11px;color:var(--muted);font-weight:600}.tabbar a.on{color:var(--ink)}.tabbar .ico{font-size:20px;line-height:1.1}h1{font-size:22px}}.card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);color:inherit;margin-bottom:12px}a.card:hover{border-color:var(--muted)}.stack>.card{margin-bottom:8px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.right{text-align:right}.muted{color:var(--muted)}.small{font-size:13px}.strong{font-weight:600}.pre{white-space:pre-wrap;margin:0}.empty{color:var(--muted);padding:24px;text-align:center;border:1px dashed var(--line);border-radius:var(--radius)}.btn{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 16px;font-weight:600;cursor:pointer;min-height:40px;display:inline-flex;align-items:center;gap:6px;color:var(--ink)}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.45;cursor:default}.link-btn{border:0;background:none;color:var(--muted);cursor:pointer;font-size:12px;padding:4px 6px}.avatar{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;color:#fff;font-weight:700;font-size:11px;background:#777;flex:none;border:2px solid var(--card)}.toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%);background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:12px;z-index:50;max-width:calc(100vw - 32px)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.page-head h2{margin:0}.back{display:inline-block;margin-bottom:8px;font-weight:600}.form label{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-weight:600;font-size:13px}.form label input,.form label select,.form label textarea{font-weight:400;font-size:15px}.form .row label{flex:1;min-width:140px}.attn{border-left:4px solid var(--yellow)}ul.plain{padding-left:18px}.login{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center}.login-logo{width:min(420px,90vw)}.dev-login{display:flex;flex-direction:column;gap:6px;margin-top:24px}.hello{margin-top:4px}.hero{position:relative;overflow:hidden;padding:20px}.hero:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--blue),var(--green),var(--yellow),var(--red))}.hero-logo{float:right;max-width:160px;max-height:80px}.hero-when{display:flex;gap:10px;align-items:baseline;color:var(--muted)}.countdown{font-family:Archivo Black;color:var(--ink);font-size:18px}.hero-title{font-family:Archivo Black;font-size:28px;margin:6px 0}.empty-hero{text-align:center}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media(max-width:720px){.two-col{grid-template-columns:1fr;gap:0}}.row-card{display:flex;align-items:center;gap:12px}.date-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;width:48px;height:52px;border-radius:10px;background:var(--paper);border:1px solid var(--line);flex:none}.date-chip span{font-size:11px;text-transform:uppercase;color:var(--muted);font-weight:700}.date-chip b{font-size:20px;line-height:1}.feed{list-style:none;padding:0;margin:0}.feed li{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}.like-count{color:var(--love);font-weight:700;min-width:40px}.filters{margin:8px 0 16px}.search{width:100%;margin-bottom:8px}.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:13px;font-weight:600;min-height:34px}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.chips .sep{width:1px;height:22px;background:var(--line);margin:0 4px}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.theme-card{margin:0;display:flex;flex-direction:column;gap:6px}.theme-card.archived,.archived{opacity:.55}.theme-top{display:flex;justify-content:space-between;align-items:center}.theme-title{font-family:Archivo Black;font-size:18px;color:var(--ink)}.theme-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:auto}.likers{display:inline-flex}.likers .avatar+.avatar{margin-left:-6px}.cat{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:6px;background:var(--paper)}.cat-cuisine{color:#0b7a8a}.cat-concept{color:#7c3aed}.cat-ingredient{color:#2f8a3a}.cat-other{color:var(--muted)}.like{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 12px;cursor:pointer;color:var(--love);font-weight:700;min-height:34px}.like.on{background:var(--love);color:#fff;border-color:var(--love)}.like.big{font-size:17px;padding:6px 16px}.done-badge{font-size:12px;font-weight:700;color:#2f8a3a}.lead{font-size:17px}.notes{padding-left:18px;margin:8px 0 12px}.notes li{margin:2px 0}.likers-line{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:8px 0 12px}.status{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--paper);border:1px solid var(--line)}.s-planning{color:#b45309}.s-menu_locked{color:var(--accent)}.s-done{color:#2f8a3a}.s-cancelled{color:var(--muted)}.archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.archive-card{margin:0;text-align:center}.archive-card img{width:100%;height:90px;object-fit:contain;margin-bottom:6px}.logo-ph{height:90px;display:grid;place-items:center;font-family:Archivo Black;font-size:40px;color:var(--line)}.dinner-head{display:flex;gap:16px;align-items:flex-start}.dinner-head h1{margin:4px 0}.dinner-logo{width:180px;max-height:100px;object-fit:contain}@media(max-width:720px){.dinner-head{flex-wrap:wrap}.dinner-logo{width:140px}}.coming-soon{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}@media(max-width:720px){.coming-soon{grid-template-columns:repeat(2,1fr)}}.soon{margin:0;text-align:center;font-weight:700;color:var(--muted);border-style:dashed;box-shadow:none}.soon small{display:block;font-weight:400;font-size:11px}.guest-group-label{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--muted);margin:10px 0 4px}.guest,.person{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}.guest select{min-height:34px;padding:4px 8px}.add-guest{margin-top:12px}.add-guest input{flex:1;min-width:180px}.archive-text{white-space:pre-wrap;font:14px/1.5 Inter,sans-serif;margin:0;max-height:480px;overflow:auto}.comment{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.comment-meta{font-size:13px;color:var(--muted)}.comment-meta b{color:var(--ink)}.comment-body{white-space:pre-wrap}.comment-new{display:flex;gap:8px;align-items:flex-end;margin-top:10px}.c-starter{color:#0b7a8a}.c-main{color:#b45309}.c-side{color:#2f8a3a}.c-dessert{color:#db2777}.c-drink{color:#7c3aed}.c-other{color:var(--muted)}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.recipe-card{margin:0;padding:0;overflow:hidden;display:flex;flex-direction:column}.recipe-card img{width:100%;height:130px;object-fit:cover;display:block}.recipe-card-body{padding:10px 12px;display:flex;flex-direction:column;gap:4px}.recipe-hero{width:100%;max-height:280px;object-fit:cover;border-radius:10px;margin-bottom:10px}.recipe-cols{display:grid;grid-template-columns:1fr 1.4fr;gap:24px}@media(max-width:720px){.recipe-cols{grid-template-columns:1fr;gap:0}}.lines ul,.lines ol{padding-left:20px;margin:4px 0 10px}.lines li{margin:3px 0}.lines h3{font-size:14px;margin:10px 0 2px}.tag{font-size:12px;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:2px 9px}.allergens{color:var(--danger);font-size:13px;font-weight:600}.form .check,label.check{flex-direction:row!important;align-items:center;gap:8px;font-weight:500}.check input{min-height:0;width:18px;height:18px}.form-field{margin-bottom:10px}.field-label{display:block;font-weight:600;font-size:13px;margin-bottom:4px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:4px 0 14px;overflow-x:auto}.tabs a,.tabs .soon-tab{padding:10px 14px;font-weight:700;color:var(--muted);border-bottom:3px solid transparent;white-space:nowrap}.tabs a.on{color:var(--ink);border-color:var(--ink)}.tabs .soon-tab{opacity:.45;cursor:default;font-weight:500}.inspo summary{cursor:pointer}.dish-board{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:720px){.dish-board{grid-template-columns:1fr}}.dish-board h3{font-size:14px;text-transform:uppercase;letter-spacing:.5px;margin:4px 0 8px}.dish-card{margin-bottom:8px}.dish-card.s-dropped{opacity:.55}.dish-name{font-weight:700;font-size:16px;margin-top:4px}.dish-pair{font-style:italic;color:var(--muted)}.dish-actions{margin-top:8px}.small-btn{min-height:32px;padding:4px 12px;font-size:13px}.dropped summary{cursor:pointer;color:var(--muted);margin:6px 0}.arrange{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}@media(max-width:900px){.arrange{grid-template-columns:1fr}}.arrange-right{position:sticky;top:72px}.style-row label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}.style-row .check{flex-direction:row}.art-row{margin-top:10px}.art-thumb{height:48px;width:48px;object-fit:contain;background:#fff;border-radius:8px;border:1px solid var(--line)}.blocks{padding:8px 10px}.blk{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid var(--line)}.blk-main{flex:1;min-width:0}.blk-tools{display:flex;align-items:center;gap:2px;flex-wrap:wrap;justify-content:flex-end}.blk-tools select{min-height:30px;padding:2px 6px;font-size:12px;max-width:150px}.blk-dish{font-weight:600}.blk-heading .blk-input,.blk-input.blk-heading{font-style:italic}.blk-input{width:100%;min-height:32px;padding:4px 8px}.blk-cols{display:grid;grid-template-columns:1fr;gap:8px;margin:4px 0 8px 12px;padding-left:8px;border-left:3px solid var(--line)}.blk-col{min-width:0}.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:8px;width:30px;height:30px;cursor:pointer;color:var(--ink)}.icon-btn:disabled{opacity:.3;cursor:default}.add-blocks{margin:10px 0 6px}.preview{position:relative;width:100%;overflow:hidden;border-radius:6px;border:1px solid var(--line);background:#fff;margin-bottom:10px}.preview iframe{position:absolute;top:0;left:0;width:816px;height:1056px;border:0;transform-origin:top left;background:#fff}.diet-badges{display:inline-flex;gap:4px;flex-wrap:wrap;align-items:center}.badge{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;border:1px solid var(--line);background:var(--paper);white-space:nowrap}.badge.diet{color:#2f8a3a;border-color:#2f8a3a55}.badge.allergy{color:var(--danger);border-color:#c2261d55}.badge.dislike{color:#b45309;border-color:#b4530955}.badge.note{border-style:dashed}a.person{color:inherit}a.person:hover{background:var(--paper)}.person-head{display:flex;gap:16px;align-items:center}.person-head h1{margin:0}.person-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:720px){.person-grid{grid-template-columns:1fr}}.person-grid .card{margin:0}.person-grid h3,.form h3{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:14px 0 6px}.stat-row{display:flex;gap:10px}.stat{flex:1;background:var(--paper);border-radius:10px;padding:8px;text-align:center;display:flex;flex-direction:column}.stat b{font-family:Archivo Black;font-size:20px;font-weight:400}.stat span{font-size:11px;color:var(--muted);text-transform:uppercase}.dinner-line{padding:4px 0;border-bottom:1px solid var(--line)}.chip.danger-chip{background:var(--danger);border-color:var(--danger);color:#fff}.mt{margin-top:8px}.tiny{font-size:11px}.guest-name{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.theme-table{width:100%;border-collapse:collapse}.theme-table th{text-align:left;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;padding:6px 8px;border-bottom:2px solid var(--line)}.theme-table th.sortable button{border:0;background:none;color:inherit;font:inherit;cursor:pointer;padding:0;text-transform:inherit;letter-spacing:inherit}.theme-table td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}.theme-table tbody tr{cursor:pointer}.theme-table tbody tr:hover{background:var(--paper)}.theme-table .col-title a{color:var(--ink)}.theme-table .col-mine{text-align:right;white-space:nowrap;width:1%}.theme-table .col-votes{white-space:nowrap}.theme-table .row-meta{display:flex;gap:10px;align-items:center;margin-top:2px}.clamp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:520px}.score{font-family:Archivo Black;display:inline-block;min-width:34px}.score.pos{color:#2f8a3a}.score.neg{color:var(--danger)}.tally{font-size:12px;color:var(--muted);letter-spacing:-.3px}.to-vote{border-left:4px solid var(--yellow)}@media(max-width:720px){.theme-table .col-kind,.theme-table .col-added,.theme-table thead .col-mine{display:none}.clamp{max-width:60vw}}.votes{display:inline-flex;gap:4px}.vote-btn{border:1px solid var(--line);background:var(--card);border-radius:999px;min-height:34px;min-width:44px;padding:2px 8px;cursor:pointer;font-size:15px;display:inline-flex;align-items:center;gap:3px;color:var(--ink)}.vote-btn span{font-size:12px;font-weight:700}.vote-btn.on.v-up{background:#2f8a3a;border-color:#2f8a3a;color:#fff}.vote-btn.on.v-meh{background:#8a8378;border-color:#8a8378;color:#fff}.vote-btn.on.v-down{background:var(--danger);border-color:var(--danger);color:#fff}.votes.big .vote-btn{min-height:42px;min-width:58px;font-size:19px}.vote-line{display:inline-flex;align-items:center;gap:2px;margin-right:10px}.overview{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:14px;align-items:start}@media(max-width:860px){.overview{grid-template-columns:1fr}.overview-side{order:-1}}.overview-side .card h2,.overview-main .card h2{margin-top:0}.ready{border-top:4px solid var(--green)}.ready-head{display:flex;align-items:baseline;gap:8px}.countdown.big{font-size:26px}.checklist{list-style:none;padding:0;margin:10px 0 0}.checklist li{display:flex;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.checklist .tick{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;font-weight:800;border:2px solid var(--line);color:var(--muted);flex:none}.checklist li.done .tick{background:#2f8a3a;border-color:#2f8a3a;color:#fff}.heads-up{border-left:4px solid var(--yellow)}.heads-up.serious{border-left-color:var(--danger)}.hu-person{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}.hu-line{font-size:14px}.hu-kind{font-weight:700}.hu-line.k-allergen .hu-kind{color:var(--danger)}.hu-line.k-diet .hu-kind{color:#2f8a3a}.hu-line.k-dislike .hu-kind{color:#b45309}.menu-list{list-style:none;padding:0;margin:0}.menu-item{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.mi-main{display:flex;flex-direction:column;min-width:0}.mi-name{font-weight:700}.mi-desc{font-size:14px}.mi-pair{font-size:13px;font-style:italic;color:var(--muted)}.mi-meta{display:flex;gap:4px;align-items:center;flex:none}.menu-heading{font-style:italic;color:var(--muted);padding:10px 0 2px;font-size:14px}.clamp-notes{max-height:9.5em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,transparent);mask-image:linear-gradient(#000 70%,transparent)}.album-name{font-weight:700;margin-bottom:8px;word-break:break-word}.stack-links{display:flex;flex-direction:column;gap:8px}.guests-card .guest select{max-width:130px}.tiny-badges{gap:4px;margin-top:4px}.recipe-sheet{padding:20px}.recipe-header{display:flex;gap:16px;align-items:flex-start;border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:12px}.recipe-header h1{margin:4px 0}.recipe-thumb{width:160px;height:120px;object-fit:cover;border-radius:10px;flex:none}@media(max-width:720px){.recipe-thumb{display:none}}.recipe-facts{display:flex;gap:14px;flex-wrap:wrap;margin:6px 0;font-size:14px}.recipe-body{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1.35fr) minmax(0,.85fr);gap:20px}.allergen-line{margin-bottom:4px}@media(max-width:1000px){.recipe-body{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}.recipe-glance{grid-column:1 / -1}}@media(max-width:720px){.recipe-body{grid-template-columns:1fr}}.recipe-body h2{margin-top:0}.ingredients{width:100%;border-collapse:collapse;font-size:14px}.ingredients td{padding:4px;border-bottom:1px dotted var(--line);vertical-align:top}.ingredients td.amt{white-space:nowrap;font-weight:700;text-align:right;padding-right:8px;width:1%}.ing-head td{font-weight:800;text-transform:uppercase;font-size:12px;letter-spacing:.5px;padding-top:10px;border-bottom:1px solid var(--ink)}.ing-flag{font-size:10px;font-weight:700;border-radius:999px;padding:1px 6px;margin-left:6px;white-space:nowrap}.ing-flag.allergy{color:var(--danger);border:1px solid #c2261d55}.ing-flag.dislike{color:#b45309;border:1px solid #b4530955}.steps{padding-left:22px;margin:0}.steps li{margin:0 0 10px;line-height:1.5}.steps li.step-head{list-style:none;margin-left:-22px;font-weight:800;text-transform:uppercase;font-size:12px;letter-spacing:.5px}.recipe-notes{background:var(--paper);border-radius:10px;padding:10px 12px}.recipe-notes h3{margin:0 0 4px;font-size:13px}.glance{background:var(--paper);border-radius:12px;padding:12px}.glance-block{margin-bottom:12px}.glance h3{font-size:12px;text-transform:uppercase;letter-spacing:.5px;margin:0 0 6px;color:var(--muted)}.diet-grid{display:flex;flex-direction:column;gap:3px;font-size:13px}.diet-fit.yes{color:#2f8a3a;font-weight:600}.diet-fit.no{color:var(--muted)}.diet-fit small{font-size:11px}.timings{padding-left:16px;margin:6px 0 0;font-size:13px}@media print{.topbar,.tabbar,.no-print,.toast,.offline{display:none!important}body{background:#fff;color:#000}.page{padding:0;max-width:none}.recipe-sheet{border:0;box-shadow:none;padding:0}.recipe-body{grid-template-columns:1fr 1.4fr}.recipe-glance{grid-column:1 / -1}.glance{background:none;border:1px solid #999}}.tl-actions{margin-bottom:12px}.kitchen-setup label{display:flex;align-items:center;gap:4px;font-size:13px;font-weight:600}.kitchen-setup input{width:64px;min-height:34px}.courses{display:flex;flex-direction:column;gap:8px}.course{border:1px solid var(--line);border-radius:10px;padding:8px}.course-time{width:120px}.course-name{font-weight:700}.course-dishes{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.add-course{margin-top:10px}.unassigned{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}.unassigned .row{padding:3px 0}.conflicts{border-left:4px solid var(--danger)}.conflict{font-size:14px;padding:3px 0}.conflict.k-unplaced{color:var(--muted)}.gantt-card{overflow-x:auto}.gantt{min-width:760px}.g-head,.g-row,.g-overlay{display:grid;grid-template-columns:240px 1fr}.g-head{position:sticky;top:0;z-index:2;background:var(--card);border-bottom:1px solid var(--line);height:24px}.g-head .g-track{position:relative}.g-tick{position:absolute;transform:translate(-50%);font-size:11px;color:var(--muted);white-space:nowrap;top:4px}.g-tick:first-child{transform:none}.g-body{position:relative}.g-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.g-overlay .g-track{position:relative}.g-line{position:absolute;top:0;bottom:0;border-left:1px dashed var(--line)}.g-serve{position:absolute;top:0;bottom:0;border-left:2px solid var(--yellow)}.g-serve b{position:absolute;top:-2px;left:3px;font-size:10px;background:var(--yellow);color:#000;padding:0 4px;border-radius:4px;white-space:nowrap}.g-serve.arrive{border-left-color:var(--blue)}.g-serve.arrive b{background:var(--blue);color:#fff}.g-now{position:absolute;top:0;bottom:0;border-left:2px solid var(--danger)}.g-group{position:relative}.g-group-head{display:flex;justify-content:space-between;align-items:center;padding:14px 0 2px;font-weight:800;font-size:13px;position:relative;z-index:1;max-width:240px;gap:6px}.g-group-head .link-btn{pointer-events:auto}.g-row{min-height:30px;align-items:center;cursor:pointer;border-radius:6px;position:relative;z-index:1}.g-row:hover{background:color-mix(in srgb,var(--paper) 70%,transparent)}.g-row.done{opacity:.45}.g-label{display:flex;align-items:center;gap:6px;padding-right:8px;min-width:0}.g-task{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.g-who{display:inline-flex}.g-row .g-track{position:relative;height:22px}.g-bar{position:absolute;top:2px;bottom:2px;border-radius:5px;overflow:hidden;color:#111}.g-bar span{font-size:10px;font-weight:700;padding:0 4px;white-space:nowrap;line-height:18px}.g-bar.off{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.45) 0 4px,transparent 4px 8px)!important}.g-bar.clash{outline:2px solid var(--danger);outline-offset:1px}.g-empty{padding:4px 0 6px}.g-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;margin-top:10px;color:var(--muted)}.g-legend i{display:inline-block;width:14px;height:10px;border-radius:3px;vertical-align:middle}.g-legend .off-swatch{background:repeating-linear-gradient(45deg,#999 0 3px,transparent 3px 6px)}.prep-list{list-style:none;padding:0;margin:0}.prep-list li{padding:6px 0;border-bottom:1px solid var(--line);cursor:pointer}.prep-list li.done{opacity:.5;text-decoration:line-through}.task-form{border-left:4px solid var(--accent)}.kitchen-board{min-height:100vh;background:var(--paper);padding:16px 20px 40px;font-size:18px}.kb-top{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:14px}.kb-back{font-weight:700}.kb-clock{font-family:Archivo Black;font-size:44px;line-height:1}.kb-clock small{font-size:14px;color:var(--muted);font-family:Inter}.kb-next{flex:1;font-size:20px}.kb-photo{background:var(--yellow);color:#000;font-weight:800;font-size:22px;padding:14px 18px;border-radius:14px;margin-bottom:14px;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.01);box-shadow:0 0 0 6px #f6c90e59}}.kb-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:800px){.kb-cols{grid-template-columns:1fr}}.kb-cols h2{font-size:22px;margin:0 0 10px}.kb-task{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--card);border:2px solid var(--line);border-radius:16px;padding:14px 16px;margin-bottom:10px;cursor:pointer;color:var(--ink);font:inherit;min-height:76px}.kb-task.active{border-color:var(--green)}.kb-task.passive{border-style:dashed}.kb-task.late{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--card))}.kb-task.soon{opacity:.9}.kb-task.finished{opacity:.5}.kb-check{width:40px;height:40px;border-radius:12px;border:3px solid var(--muted);display:grid;place-items:center;font-size:26px;font-weight:900;flex:none;color:#fff}.kb-task.finished .kb-check{background:#2f8a3a;border-color:#2f8a3a}.kb-body{flex:1;display:flex;flex-direction:column;min-width:0}.kb-label{font-weight:800;font-size:20px}.kb-meta{color:var(--muted);font-size:15px}.kb-who{display:flex}.kb-done{margin-top:20px}.kb-done summary{cursor:pointer;color:var(--muted)}.party-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:14px}@media(max-width:860px){.party-grid{grid-template-columns:1fr}}.party-grid .card{margin:0}.ballot-link{display:flex;gap:6px;margin-bottom:8px}.ballot-link input{flex:1;font-size:13px}.qr-wrap{text-align:center;margin:12px 0}.qr{background:#fff;border-radius:10px}.ballot-cat h3{font-size:15px;margin:14px 0 6px}.ballot-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.ballot-option{text-align:left;border:2px solid var(--line);background:var(--card);border-radius:12px;padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;color:var(--ink);font:inherit;min-height:56px}.ballot-option.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--card))}.ballot-option:disabled{cursor:default}.bo-name{font-weight:700}.bo-desc{font-size:13px;color:var(--muted)}.bo-check{font-size:12px;font-weight:800;color:var(--accent)}.results{margin-top:14px}.podium{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media(max-width:720px){.podium{grid-template-columns:1fr}}.podium>p{grid-column:1 / -1;margin:0}.award{background:var(--paper);border-radius:14px;padding:12px;text-align:center}.award-head{font-weight:800;color:var(--muted);text-transform:uppercase;font-size:12px;letter-spacing:.5px}.award-winner{font-family:Archivo Black;font-size:19px;margin:6px 0}.tally{list-style:none;padding:0;margin:0;font-size:13px;text-align:left}.tally li{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:3px 0}.award-badge{display:inline-block;margin-left:6px;font-size:11px;font-weight:800;color:#b45309;background:#fdf2c8;border-radius:999px;padding:1px 8px;vertical-align:middle}.guest-page{max-width:560px;margin:0 auto;padding:20px 16px 60px;text-align:center}.guest-page .ballot{text-align:left}.guest-logo{width:min(320px,80vw);margin:10px auto;display:block}.guest-page h1{margin:4px 0}.name-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:12px}.name-btn{border:2px solid var(--line);background:var(--card);border-radius:12px;padding:14px 10px;font:inherit;font-weight:700;cursor:pointer;color:var(--ink)}.name-btn:disabled{opacity:.45;cursor:default}.thanks{font-size:20px;font-weight:800;margin-top:16px}.error{color:var(--danger);font-weight:600}.podium.guest{grid-template-columns:1fr}.quick-add{display:flex;gap:8px}.quick-add input{flex:1;min-width:0}.quick-preview{margin:4px 2px 8px;min-height:18px}.time-text{width:96px}.time-text.bad{outline:2px solid var(--danger)}.add-to-course{min-height:28px;padding:2px 6px;font-size:12px;border-style:dashed}.quick-task{margin:2px 0 6px;max-width:760px}.quick-task input{width:100%;min-height:32px;padding:4px 10px;font-size:13px;border-style:dashed;background:transparent}.quick-task input:focus{border-style:solid;background:var(--card)}.quick-task .quick-preview{margin:3px 4px 4px}.link-like{border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.g-task.link-like{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-who{border:0;background:none;cursor:pointer;padding:0 2px;display:inline-flex;align-items:center;color:var(--muted);font-size:11px;white-space:nowrap}.g-who.empty{border:1px dashed var(--line);border-radius:999px;padding:1px 6px}.g-row{cursor:default}.g-row .g-track{cursor:pointer}.assign-row{display:flex;flex-wrap:wrap;gap:4px;padding:4px 0 8px 8px;align-items:center;position:relative;z-index:1}.assign-row .chip{min-height:28px;padding:2px 10px}.g-dish-name{display:inline-flex;align-items:center;gap:4px}.kitchen-name-input{min-height:28px;padding:2px 8px;font-weight:700;width:170px}.headcount{color:var(--muted);margin:-6px 0 6px}.chef-row{display:flex;flex-wrap:wrap;gap:6px}.chef-chip{display:inline-flex;align-items:center;gap:2px;padding:2px 6px 2px 2px;border:1px solid var(--line);border-radius:999px}.chef-chip.out{opacity:.5}.chef-chip .link-btn{padding:2px 4px}.calendar-box{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:4px}.connection{padding:6px 0;border-bottom:1px solid var(--line)}.gr-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px;align-items:start}@media(max-width:860px){.gr-grid{grid-template-columns:1fr}.gr-side{order:-1}}.gr-quick{padding:10px 12px}.gr-quick select{max-width:160px}.gr-toolbar{margin:4px 0 10px}.gr-aisle h3{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:14px 0 4px}.gr-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid var(--line);background:var(--card)}.gr-row.s-bought,.gr-row.s-have{opacity:.6}.gr-row.s-bought .gr-name{text-decoration:line-through}.gr-check{width:34px;height:34px;border-radius:10px;border:2px solid var(--muted);background:var(--card);cursor:pointer;font-size:20px;font-weight:900;color:#fff;flex:none}.gr-check.on{background:#2f8a3a;border-color:#2f8a3a}.gr-main{flex:1;min-width:0;cursor:pointer}.gr-amt{font-weight:800}.gr-name{font-weight:600}.gr-have{border:1px solid var(--line);background:var(--card);color:var(--muted);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer;min-height:30px}.gr-have.on{background:var(--blue);border-color:var(--blue);color:#fff}.gr-edit{flex-basis:100%;background:var(--paper);border-radius:10px;padding:10px;margin-top:4px}.gr-edit label{font-size:12px}.gr-done{margin-top:12px}.gr-done summary{cursor:pointer;color:var(--muted);font-weight:700;padding:6px 0}.dish-plan{padding:8px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.dish-plan.home{opacity:.7}.dish-plan .qty{width:70px;min-height:30px;padding:2px 6px}label.inline,.scaler{display:inline-flex;align-items:center;gap:4px;font-weight:600}.scaler input{width:64px;min-height:30px;padding:2px 6px}.scaler .chip{min-height:28px;padding:2px 8px}
