:root{--color-bg:#0a0416;--color-bg-subtle:#0d061f;--color-surface:#110827;--color-text:#f5f3fa;--color-text-secondary:#b0a6c7;--color-text-disabled:#f5f3fa59;--color-border:#f5f3fa29;--color-border-strong:#f5f3fa;--color-accent:#c7fb5a;--color-accent-hover:#b3ef3a;--color-accent-bright:#c7fb5a;--color-accent-tint:#2b3a12;--color-accent-ink:#12210a;--color-violet:#5e10a0;--color-violet-bright:#9b4de0;--color-neon:#c7fb5a;--color-neon-ink:#12210a;--color-neon-glow:#c7fb5a73;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--color-safe:#c7fb5a;--color-safe-bg:#2b3a12;--color-warn:#ffd166;--color-warn-bg:#3a2c0c;--color-danger:#ff6b9a;--color-danger-bg:#3a1030;--color-cat-transport:#6fb8ff;--color-cat-lodging:#9b4de0;--color-cat-food:#ffd166;--color-cat-activity:#c7fb5a;--color-cat-shopping:#ff8fc7;--color-cat-other:#b7aed1;--font-sans:"Helvetica Neue", Helvetica, Arial, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-numeric:"Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:20px;--space-5:32px;--space-6:48px;--space-7:64px;--radius-sm:0px;--radius-md:2px;--radius-lg:2px;--radius-pill:2px;--shadow-card:none;--shadow-hover:none;--control-height:44px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.num{font-family:var(--font-numeric);font-variant-numeric:tabular-nums;font-weight:700}button,input,select,textarea{font-family:inherit}button,[role=button],input[type=checkbox],input[type=radio]{min-width:44px;min-height:44px}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.app-shell{background:var(--color-bg-subtle);flex-direction:column;min-height:100vh;display:flex}.app-top{z-index:10;position:sticky;top:0}.app-header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:2px solid var(--color-border-strong);display:flex}.offline-badge{color:#fff;text-align:center;padding:3px var(--space-2);text-transform:uppercase;letter-spacing:.08em;background:#c62828;font-size:10px;font-weight:700;line-height:1}.app-brand{letter-spacing:.04em;text-transform:uppercase;min-width:0;color:var(--color-text);font-size:1.1rem;font-weight:800;text-decoration:none}.app-main{padding:var(--space-5) var(--space-4);flex:1;width:100%;max-width:720px;margin:0 auto}@media (width<=480px){.app-main{padding:var(--space-4) var(--space-3)}}.card{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);box-shadow:none;padding:var(--space-5);margin-bottom:var(--space-4)}.card:hover{box-shadow:none}.card-title{margin:0 0 var(--space-1) 0;overflow-wrap:anywhere;font-size:1rem;font-weight:800}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow-wrap:normal;min-width:0;display:block;overflow:hidden}.card-subtitle{color:var(--color-text-secondary);overflow-wrap:anywhere;margin:0;font-size:.85rem}.empty-state{text-align:center;padding:var(--space-7) var(--space-4);color:var(--color-text-secondary);border:1px dashed var(--color-border-strong)}.page-header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.page-title{text-transform:uppercase;letter-spacing:.02em;flex:1;min-width:0;margin:0;font-size:1.4rem;font-weight:800}.budget-figure{font-size:2.2rem;font-weight:800}.budget-label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:700}.budget-bar-track{border-radius:var(--radius-sm);background:var(--color-bg-subtle);border:1px solid var(--color-border-strong);height:10px;margin:var(--space-2) 0;overflow:hidden}.budget-bar-fill{background:var(--color-safe-bg);height:100%;transition:width .32s var(--ease-out), background .2s var(--ease-out)}.budget-bar-fill.warn{background:var(--color-warn-bg)}.budget-bar-fill.danger{background:var(--color-danger)}.badge{align-items:center;gap:var(--space-1);padding:3px var(--space-3);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.03em;animation:badge-in .2s var(--ease-out) both;border:1px solid;font-size:.72rem;font-weight:700;display:inline-flex}@keyframes row-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes badge-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.badge-safe{background:var(--color-safe-bg);color:var(--color-safe)}.badge-warn{background:var(--color-warn-bg);color:var(--color-warn)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.tabs{border-bottom:2px solid var(--color-border-strong);margin-bottom:var(--space-6);-webkit-overflow-scrolling:touch;gap:0;display:flex;overflow-x:auto}.tab{padding:var(--space-3) var(--space-5);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;transition:color .16s var(--ease-out), border-color .2s var(--ease-in-out);border-bottom:3px solid #0000;margin-bottom:-2px;font-size:.8rem;font-weight:700;text-decoration:none}.tab-icon{display:none}.tab.active{color:var(--color-text);border-bottom-color:var(--color-accent)}.list-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border);animation:row-in .22s var(--ease-out) both;display:flex}@media (width<=480px){.list-row{flex-wrap:wrap}}.list-row+.list-row{margin-top:var(--space-2)}.list-row:last-child{border-bottom:none}.day-heading{color:var(--color-text);margin:var(--space-6) 0 var(--space-3) 0;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-border-strong);padding-bottom:var(--space-2);font-size:.85rem;font-weight:800}.day-heading:first-child{margin-top:0}.status-select{border-radius:var(--radius-sm);border:2px solid var(--color-border-strong);padding:2px var(--space-5) 2px var(--space-2);text-transform:uppercase;letter-spacing:.03em;background-color:var(--color-surface);appearance:none;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2IiB2aWV3Qm94PSIwIDAgMTAgNiI+PHBhdGggZD0iTTEgMWw0IDQgNC00IiBmaWxsPSJub25lIiBzdHJva2U9IiNmNWYzZmEiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=);background-position:calc(100% - 8px);background-repeat:no-repeat;background-size:8px 5px;font-size:.72rem;font-weight:700}.checkbox-row{align-items:center;gap:var(--space-3);display:flex}.checkbox-row input[type=checkbox]{appearance:none;border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;width:22px;min-width:22px;height:22px;min-height:22px;transition:border-color .16s var(--ease-out), background .16s var(--ease-out), box-shadow .2s var(--ease-out), transform .12s var(--ease-out);justify-content:center;align-items:center;display:inline-flex;position:relative}.checkbox-row input[type=checkbox]:active{transform:scale(.9)}.checkbox-row input[type=checkbox]:checked{background:var(--color-neon);border-color:var(--color-neon);box-shadow:0 0 0 4px var(--color-neon-glow)}.checkbox-row input[type=checkbox]:after{content:"";border-left:3px solid var(--color-neon-ink);border-bottom:3px solid var(--color-neon-ink);transform-origin:50%;width:12px;height:7px;transition:transform .22s var(--ease-out);margin-top:-2px;transform:rotate(-45deg)scale(0)}.checkbox-row input[type=checkbox]:checked:after{transform:rotate(-45deg)scale(1)}.pwa-status-stack{gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-subtle);flex-direction:column;display:flex}.pwa-banner{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);animation:row-in .22s var(--ease-out) both;flex-wrap:wrap;min-width:0;display:flex}.activity-row{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border);animation:row-in .22s var(--ease-out) both;flex-wrap:wrap;display:flex}.activity-row+.activity-row{margin-top:var(--space-2)}.activity-row:last-child{border-bottom:none}.activity-main{align-items:flex-start;gap:var(--space-4);flex:1;min-width:220px;display:flex}.time-badge{min-width:56px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-accent);color:var(--color-accent);letter-spacing:.02em;border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;font-size:.78rem;font-weight:700;display:inline-flex}.activity-content{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.activity-actions{align-items:center;gap:var(--space-3);flex-shrink:0;margin-left:auto;display:flex}@media (width<=480px){.activity-actions{width:100%;padding-left:calc(56px + var(--space-4));justify-content:space-between;margin-left:0}}@media (width<=360px){.activity-actions{flex-wrap:wrap;padding-left:0}}.packing-row{align-items:start;column-gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border);animation:row-in .22s var(--ease-out) both;grid-template-columns:1fr auto;display:grid}.packing-row+.packing-row{margin-top:0}.packing-row:last-child{border-bottom:none}.packing-row-main{min-width:0}.packing-row-delete{grid-area:1/2}.packing-row-checks{gap:var(--space-4);margin-top:var(--space-2);grid-column:1/-1;display:flex}@media (width<=480px){.packing-row-checks{gap:var(--space-3);flex-direction:column}}@media (width<=640px){.tabs{z-index:20;border-bottom:none;border-top:2px solid var(--color-border-strong);background:var(--color-surface);padding-bottom:env(safe-area-inset-bottom,0);margin-bottom:0;position:fixed;bottom:0;left:0;right:0;overflow-x:visible}.tab{padding:var(--space-2) var(--space-1);border-top:3px solid #0000;border-bottom:none;flex-direction:column;flex:1;align-items:center;gap:2px;min-height:56px;margin-top:-2px;margin-bottom:0;display:flex}.tab.active{border-top-color:var(--color-accent);border-bottom-color:#0000}.tab-icon{font-size:1.2rem;line-height:1;display:block}.tab-label{letter-spacing:0;text-overflow:ellipsis;max-width:100%;font-size:.65rem;overflow:hidden}.tab{min-width:0}.app-main{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}}.backup-links{align-items:center;gap:var(--space-2);margin-bottom:var(--space-5);color:var(--color-text-secondary);font-size:.78rem;display:flex}.expense-row{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border);animation:row-in .22s var(--ease-out) both;flex-wrap:wrap;display:flex}.expense-row+.expense-row{margin-top:var(--space-2)}.expense-row:last-child{border-bottom:none}.expense-row-main{flex:1;min-width:160px}.expense-row-amount{align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.expense-amount{color:var(--color-accent);font-size:1.1rem}@media (width<=480px){.expense-row-amount{justify-content:space-between;width:100%}}.packing-grid{padding:0 var(--space-4);column-gap:var(--space-5);grid-template-columns:1fr;display:grid}@media (width>=560px){.packing-grid{grid-template-columns:1fr 1fr}}.ui-btn{justify-content:center;align-items:center;gap:var(--space-2);font:inherit;cursor:pointer;transition:background .16s var(--ease-out), color .16s var(--ease-out), border-color .16s var(--ease-out), transform .12s var(--ease-out), opacity .16s var(--ease-out);display:inline-flex}.ui-btn:active:not(:disabled){transform:scale(.97)}.ui-btn:disabled{opacity:.5;cursor:not-allowed}.ui-btn:focus-visible{outline:2px solid var(--color-accent-bright);outline-offset:2px}.ui-btn--ghost,.ui-btn--primary{height:var(--control-height);padding:0 var(--space-4);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;font-size:.8rem}.ui-btn--ghost{border:2px solid var(--color-border-strong);color:var(--color-text);background:0 0;font-weight:700}.ui-btn--ghost:hover:not(:disabled){background:var(--color-text);color:var(--color-bg);border-color:var(--color-text)}.ui-btn--primary{background:var(--color-accent);border:2px solid var(--color-accent);color:var(--color-accent-ink);font-weight:800}.ui-btn--primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.ui-btn--icon{border-radius:var(--radius-sm);color:var(--color-text);background:0 0;border:2px solid #0000;padding:0}.ui-btn--icon:hover:not(:disabled){background:var(--color-surface);border-color:var(--color-border)}.ui-btn--fab{border:2px solid var(--color-accent);background:var(--color-accent);width:56px;height:56px;color:var(--color-accent-ink);border-radius:50%;padding:0;box-shadow:0 6px 20px #00000080}.ui-btn--fab:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.ui-input{box-sizing:border-box;width:100%;padding:0 var(--space-3);border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;text-transform:none;letter-spacing:normal;height:var(--control-height);font-size:.95rem;font-weight:400;display:block}.ui-input:focus{outline:2px solid var(--color-accent-bright);outline-offset:1px;border-color:var(--color-accent)}.ui-input::placeholder{color:var(--color-text-disabled)}.ui-select{appearance:none;padding-right:var(--space-6);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2IiB2aWV3Qm94PSIwIDAgMTAgNiI+PHBhdGggZD0iTTEgMWw0IDQgNC00IiBmaWxsPSJub25lIiBzdHJva2U9IiNmNWYzZmEiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=);background-position:calc(100% - 18px);background-repeat:no-repeat;background-size:10px 6px}.ui-textarea{height:auto;padding-top:var(--space-2);padding-bottom:var(--space-2);resize:vertical}.ui-progress{z-index:60;opacity:0;pointer-events:none;height:3px;transition:opacity .2s var(--ease-out);background:0 0;position:fixed;top:0;left:0;right:0}.ui-progress--visible{opacity:1}.ui-progress__fill{background:var(--color-accent);transform-origin:0;height:100%;transition:transform 80ms linear}.ui-field{gap:var(--space-1);min-width:0;margin-bottom:var(--space-4);text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-secondary);flex-direction:column;flex:1;font-size:.8rem;font-weight:700;display:flex}.ui-field__hint{text-transform:none;letter-spacing:normal;color:var(--color-text-secondary);font-size:.75rem;font-weight:400}.ui-field-row{gap:var(--space-3);align-items:flex-end;display:flex}@media (width<=480px){.ui-field-row{flex-direction:column;align-items:stretch;gap:0}}.ui-form-actions{gap:var(--space-2);display:flex}.ui-menu{position:relative}.ui-menu__trigger{width:var(--control-height);height:var(--control-height)}.ui-menu__list{right:0;top:calc(100% + var(--space-1));z-index:40;min-width:220px;padding:var(--space-1);background:var(--color-surface);border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);animation:ui-pop .14s var(--ease-out) both;transform-origin:100% 0;margin:0;list-style:none;position:absolute;box-shadow:0 10px 30px #0009}.ui-menu__item{width:100%;min-height:var(--control-height);padding:0 var(--space-3);text-align:left;border-radius:var(--radius-sm);color:var(--color-text);font:inherit;cursor:pointer;background:0 0;border:none;font-size:.9rem;display:block}.ui-menu__item:hover,.ui-menu__item:focus-visible{background:var(--color-bg-subtle);outline:none}@keyframes ui-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ui-fab-stack{right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));z-index:30;align-items:flex-end;gap:var(--space-3);pointer-events:none;flex-direction:column;display:flex;position:fixed}.ui-fab-stack>*,.ui-fab-stack__slot>*{pointer-events:auto}.ui-fab-stack__slot{align-items:flex-end;gap:var(--space-3);flex-direction:column;display:flex}.ui-fab--scrolltop{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text);display:none}.ui-fab--scrolltop.ui-fab--shown{animation:ui-fab-in .18s var(--ease-out) both;display:inline-flex}@keyframes ui-fab-in{0%{opacity:0;transform:translateY(8px)scale(.9)}to{opacity:1;transform:none}}.ui-fab--scrolltop:hover:not(:disabled){background:var(--color-text);color:var(--color-bg);border-color:var(--color-text)}@media (width<=640px){.ui-fab-stack{right:var(--space-3);bottom:calc(72px + var(--space-3) + env(safe-area-inset-bottom,0px));gap:var(--space-2)}.ui-btn--fab{width:48px;height:48px}.app-main{padding-bottom:calc(150px + env(safe-area-inset-bottom,0px))}}@media (prefers-reduced-motion:reduce){.ui-progress__fill{transition:none}}.ui-btn--link{padding:0 var(--space-2);color:var(--color-text-secondary);text-underline-offset:3px;background:0 0;border:none;font-size:.8rem;text-decoration:underline}.ui-btn--link:hover:not(:disabled){color:var(--color-text)}.ui-inline-form{gap:var(--space-2);margin-bottom:var(--space-3);align-items:center;display:flex}.ui-inline-form>.ui-input{flex:1;min-width:0}.ui-inline-form--wrap{flex-wrap:wrap}.ui-inline-form--end{align-items:flex-end}.ui-fab-panel{width:min(340px, calc(100vw - 2 * var(--space-4)));animation:ui-pop .16s var(--ease-out) both;transform-origin:100% 100%;margin:0;box-shadow:0 10px 30px #0009}.ui-fab--live:after{content:"";background:var(--color-accent-ink);border:2px solid var(--color-accent);border-radius:50%;width:10px;height:10px;position:absolute;top:4px;right:4px}.ui-btn--fab{position:relative}.ui-fab-panel{gap:var(--space-3);flex-direction:column;display:flex}.ui-fab-panel .card-subtitle{margin:0}.ui-row-actions{align-items:center;gap:var(--space-1);flex-shrink:0;display:flex}.ui-row-actions .ui-btn--icon{width:var(--control-height);height:var(--control-height);color:var(--color-text-secondary)}.ui-btn--danger:hover:not(:disabled){color:var(--color-danger)}.ui-menu__item>span{overflow-wrap:anywhere;min-width:0}@media (width<=360px){.ui-row-actions .ui-btn--icon{width:40px;height:40px}}
