*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-height:100svh}*,:before,:after{-webkit-touch-callout:none}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text}#root{height:var(--app-height,100svh);overflow:hidden}h1,h2,h3,h4,p,figure{margin:0}ul,ol{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;position:relative}.tap{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}input,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img,svg{max-width:100%;display:block}body{background:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-body,"Manrope"), system-ui, sans-serif;transition:background-color .2s,color .2s}h1,h2,h3{font-family:var(--font-display,var(--font-body,"Manrope")), system-ui, sans-serif}.card{background:var(--color-bg-card);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}html{-webkit-tap-highlight-color:transparent;overscroll-behavior:none}body{overscroll-behavior:none}button,a,img,svg{-webkit-touch-callout:none}input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}.app-shell__content{overscroll-behavior:contain}:root{--header-height:70px;--tab-bar-height:90px;--nav-rail-width:84px;--sidebar-width:264px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}.app-shell{flex-direction:column;height:100%;display:flex}.app-shell__header{height:calc(var(--header-height) + var(--safe-top));padding-top:var(--safe-top);flex-shrink:0;justify-content:space-between;align-items:center;padding-left:16px;padding-right:16px;display:flex}.app-shell__content{flex:1;padding:0 16px;overflow-y:auto}.app-shell__tab-bar{height:calc(var(--tab-bar-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);border-top:var(--border-width) solid var(--color-border);flex-shrink:0;grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.app-shell--persistent-nav{flex-direction:row}.app-shell__main{flex-direction:column;flex:1;min-width:0;display:flex}.app-shell__content--wide{width:100%;max-width:1100px;margin:0 auto;padding:28px 32px}@media (width>=1000px){.content-columns{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:24px;display:grid}.progress-inline{display:none!important}}:root{--motion-ease:cubic-bezier(.22, .61, .36, 1);--motion-dist:8px;--motion-item-dur:.32s;--motion-stagger:45ms;--motion-route-dur:.26s;--motion-press:.94}html[data-theme=nightcity]{--motion-ease:cubic-bezier(.16, 1, .3, 1);--motion-dist:12px;--motion-item-dur:.22s;--motion-stagger:30ms;--motion-route-dur:.2s;--motion-press:.9}html[data-theme=fantasy]{--motion-ease:cubic-bezier(.34, 1.15, .64, 1);--motion-dist:6px;--motion-item-dur:.44s;--motion-stagger:72ms;--motion-route-dur:.34s;--motion-press:.965}html[data-theme=capybara]{--motion-ease:cubic-bezier(.34, 1.56, .64, 1);--motion-dist:10px;--motion-item-dur:.42s;--motion-stagger:60ms;--motion-press:.92}html[data-theme=nature]{--motion-ease:cubic-bezier(.25, .8, .3, 1);--motion-dist:7px;--motion-item-dur:.38s;--motion-stagger:55ms;--motion-press:.95}@keyframes route-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes item-in{0%{opacity:0;transform:translateY(var(--motion-dist))}to{opacity:1;transform:translateY(0)}}@keyframes sheet-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes check-pop{0%{transform:scale(0)}60%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.35}}.anim-route{animation:route-in var(--motion-route-dur) var(--motion-ease) both}.anim-sheet{animation:sheet-up var(--motion-route-dur) var(--motion-ease) both}.anim-drawer{animation:drawer-in .24s var(--motion-ease) both}.anim-overlay{animation:.2s both overlay-in}.anim-check{animation:check-pop .3s var(--motion-ease) both;transform-origin:50%}.anim-pulse{animation:1.1s ease-in-out infinite rec-pulse}.stagger>*{animation:item-in var(--motion-item-dur) var(--motion-ease) backwards}.stagger>:first-child{animation-delay:calc(var(--motion-stagger) * 0)}.stagger>:nth-child(2){animation-delay:calc(var(--motion-stagger) * 1)}.stagger>:nth-child(3){animation-delay:calc(var(--motion-stagger) * 2)}.stagger>:nth-child(4){animation-delay:calc(var(--motion-stagger) * 3)}.stagger>:nth-child(5){animation-delay:calc(var(--motion-stagger) * 4)}.stagger>:nth-child(6){animation-delay:calc(var(--motion-stagger) * 5)}.stagger>:nth-child(7){animation-delay:calc(var(--motion-stagger) * 6)}.stagger>:nth-child(8){animation-delay:calc(var(--motion-stagger) * 7)}.stagger>:nth-child(9){animation-delay:calc(var(--motion-stagger) * 8)}.stagger>:nth-child(10){animation-delay:calc(var(--motion-stagger) * 9)}.stagger>:nth-child(n+11){animation-delay:calc(var(--motion-stagger) * 10)}button:not(:disabled){transition:transform .13s var(--motion-ease), background-color .15s ease, box-shadow .18s ease, opacity .15s ease, color .15s ease, filter .15s ease}button:not(:disabled):active{transform:scale(var(--motion-press))}a{transition:transform .13s var(--motion-ease), color .15s ease}a:active{transform:scale(calc(.5 + var(--motion-press) * .5))}.tappable{transition:transform .15s var(--motion-ease), box-shadow .2s var(--motion-ease)}.tappable:active{transform:scale(calc(.5 + var(--motion-press) * .5))}@media (hover:hover) and (pointer:fine){.tappable:hover{box-shadow:var(--shadow-card-strong,var(--shadow-card));transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}[data-theme=nightcity] .card,[data-theme=circus] .card,[data-theme=constructor] .card,[data-theme=fantasy] .card,[data-theme=pixel] .card{position:relative}[data-theme=nightcity] body:before{content:"";z-index:1;pointer-events:none;background:repeating-linear-gradient(0deg, color-mix(in srgb, var(--color-text-primary) 7%, transparent) 0 1px, transparent 1px 3px);animation:8s linear infinite scanline-drift;position:fixed;inset:0}@keyframes scanline-drift{0%{background-position:0 0}to{background-position:0 3px}}[data-theme=nightcity] .card:before,[data-theme=nightcity] .card:after{content:"";pointer-events:none;border-color:var(--color-accent);opacity:.55;width:10px;height:10px;position:absolute}[data-theme=nightcity] .card:before{border-top:2px solid;border-left:2px solid;top:-1px;left:-1px}[data-theme=nightcity] .card:after{border-bottom:2px solid;border-right:2px solid;bottom:-1px;right:-1px}[data-theme=nightcity] .app-shell__tab-bar a[aria-current=page]{text-shadow:0 0 12px var(--color-accent)}[data-theme=circus] body:before{content:"";z-index:3;pointer-events:none;background:repeating-linear-gradient(90deg, var(--color-accent) 0 16px, var(--color-time-badge-bg) 16px 32px);height:7px;position:fixed;top:0;left:0;right:0}[data-theme=circus] body:after{content:"";z-index:3;pointer-events:none;background-image:radial-gradient(circle, var(--color-time-badge-bg) 0 2.5px, transparent 3px);background-repeat:repeat-x;background-size:26px 8px;height:8px;animation:2.6s ease-in-out infinite garland-twinkle;position:fixed;top:7px;left:0;right:0}@keyframes garland-twinkle{0%,to{opacity:1;filter:drop-shadow(0 0 3px var(--color-time-badge-bg))}50%{opacity:.55;filter:none}}[data-theme=constructor] body:before{content:"";z-index:0;pointer-events:none;opacity:.5;background-image:radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--color-border-strong) 70%, transparent) 0 4px, transparent 5px), radial-gradient(circle at 50% 58%, color-mix(in srgb, var(--color-bg-card) 80%, transparent) 0 4px, transparent 5px);background-size:30px 30px;position:fixed;inset:0}[data-theme=constructor] .card{box-shadow:inset 0 2px 0 #fff9, 0 5px 0 color-mix(in srgb, var(--color-border-strong) 75%, transparent), var(--shadow-card)}[data-theme=constructor] .card:before{content:"";pointer-events:none;background:var(--color-border-strong);width:12px;height:7px;box-shadow:20px 0 0 var(--color-border-strong);border-radius:4px 4px 2px 2px;position:absolute;top:-5px;left:16px}[data-theme=pixel] body:before{content:"";z-index:0;pointer-events:none;background-image:linear-gradient(90deg, color-mix(in srgb, var(--color-text-primary) 8%, transparent) 2px, transparent 2px), linear-gradient(0deg, color-mix(in srgb, var(--color-text-primary) 8%, transparent) 2px, transparent 2px), linear-gradient(90deg, #ffffff1a 2px, transparent 2px);background-position:0 0,0 0,2px 2px;background-size:32px 32px,32px 32px,32px 32px;position:fixed;inset:0}[data-theme=pixel] .card{box-shadow:inset 2px 2px 0 #ffffff73, inset -2px -2px 0 #00000047, var(--shadow-card)}[data-theme=pixel] .tap,[data-theme=pixel] .checkbox{box-shadow:inset 2px 2px #ffffff59,inset -2px -2px #00000038}[data-theme=pixel] .tap:active,[data-theme=pixel] .checkbox:active{box-shadow:inset -2px -2px #ffffff59,inset 2px 2px #00000038}[data-theme=pixel] #root *,[data-theme=pixel] #root :before,[data-theme=pixel] #root :after{transition-timing-function:steps(3,end)!important;animation-timing-function:steps(4,end)!important}[data-theme=pixel] h1:after{content:"";vertical-align:-.12em;background:var(--color-accent);width:.5em;height:1em;margin-left:.25em;animation:1s steps(2,end) infinite pixel-caret;display:inline-block}@keyframes pixel-caret{0%,49%{opacity:1}50%,to{opacity:0}}[data-theme=fantasy] body:before{content:"";z-index:0;pointer-events:none;opacity:.5;background-image:repeating-linear-gradient(45deg, color-mix(in srgb, var(--color-border-strong) 8%, transparent) 0 1px, transparent 1px 7px), repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-border-strong) 6%, transparent) 0 1px, transparent 1px 11px);position:fixed;inset:0}[data-theme=fantasy] .card:before{content:"";pointer-events:none;background:linear-gradient(90deg, transparent, var(--color-border-strong) 20%, var(--color-border-strong) 80%, transparent);opacity:.7;height:1px;position:absolute;top:5px;left:10px;right:10px}[data-theme=nature] body:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(60vw 50vh at 8% -5%, color-mix(in srgb, var(--color-list-meals) 14%, transparent), transparent 70%), radial-gradient(50vw 40vh at 105% 105%, color-mix(in srgb, var(--color-time-badge-bg) 12%, transparent), transparent 70%);animation:14s ease-in-out infinite nature-breathe;position:fixed;inset:0}@keyframes nature-breathe{0%,to{opacity:.75}50%{opacity:1}}[data-theme=nature] .card{background-image:radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--color-list-meals) 12%, transparent) 0, transparent 90px)}[data-theme=capybara] .anim-route .card{animation:.32s cubic-bezier(.2,1.3,.5,1) both capy-drop}@keyframes capy-drop{0%{transform:translateY(-6px)}to{transform:translateY(0)}}[data-theme=amethyst] .app-shell__tab-bar a[aria-current=page]{text-shadow:0 0 14px color-mix(in srgb, var(--color-accent) 55%, transparent)}[data-theme=constructor] .checkbox{border-radius:4px!important}[data-theme=constructor] .checkbox:before{content:"";background:var(--color-border-strong);border-radius:3px 3px 1px 1px;width:10px;height:6px;position:absolute;top:-4px;left:50%;transform:translate(-50%)}[data-theme=pixel] .checkbox{border-width:2px!important;border-radius:0!important}[data-theme=fantasy] .checkbox[data-shape=square]{transform:rotate(45deg);border-radius:2px!important}[data-theme=fantasy] .checkbox[data-shape=square]>svg{transform:rotate(-45deg)}[data-theme=circus] .checkbox{border-radius:50%!important}[data-theme=circus] .checkbox[aria-checked=true]{box-shadow:0 0 10px var(--color-time-badge-bg)}[data-theme=capybara] .checkbox{box-shadow:2px 2px 0 var(--color-border-strong)}[data-theme=nightcity] .checkbox[aria-checked=true]{box-shadow:0 0 10px var(--color-accent)}[data-theme=circus] .progress-track{position:relative;overflow:visible!important}[data-theme=circus] .progress-track:after{content:"";pointer-events:none;background-image:radial-gradient(circle, var(--color-time-badge-bg) 0 2px, transparent 2.5px);background-repeat:repeat-x;background-size:12px 100%;position:absolute;inset:-2px 0}[data-theme=pixel] .progress-track{position:relative}[data-theme=pixel] .progress-track:after{content:"";pointer-events:none;background-image:repeating-linear-gradient(90deg, transparent 0 7px, var(--color-bg-card-alt) 7px 9px);position:absolute;inset:0}[data-theme=constructor] .progress-track{background-size:10px 100%;background-image:radial-gradient(circle, color-mix(in srgb, var(--color-border-strong) 45%, transparent) 0 1.5px, transparent 2px)!important}[data-theme=nightcity] .progress-track>div{box-shadow:0 0 8px var(--color-accent)}[data-theme=circus] .sticker:before,[data-theme=circus] .sticker:after{content:"";background:var(--color-bg-card-alt);pointer-events:none;border-radius:50%;width:12px;height:12px;position:absolute;top:50%;transform:translateY(-50%)}[data-theme=circus] .sticker:before{left:-7px}[data-theme=circus] .sticker:after{right:-7px}[data-theme=pixel] .sticker{box-shadow:3px 3px 0 var(--color-border-strong)!important;border-radius:0!important}[data-theme=nature] .sticker:after{content:"";background:var(--color-list-meals);opacity:.8;pointer-events:none;border-radius:0 100%;width:10px;height:12px;position:absolute;top:-5px;right:10px}[data-theme=constructor] .sticker:after{content:"";background:var(--color-border-strong);pointer-events:none;border-radius:4px 4px 1px 1px;width:11px;height:6px;position:absolute;top:-4px;left:14px}@media (prefers-reduced-motion:reduce){[data-theme=nightcity] body:before,[data-theme=circus] body:after,[data-theme=nature] body:before,[data-theme=pixel] h1:after,[data-theme=capybara] .anim-route .card{animation:none!important}}
