:root{--color-bg: #f3f5f4;--color-surface: #ffffff;--color-ink: #17201c;--color-muted: #5e6964;--color-rule: #d5dbd8;--color-control: #848e89;--color-line: #1f6f5c;--color-signal: #b42318;--color-on-ink: #ffffff;--font-body: system-ui, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--text-caption: .8125rem;--text-body: 1rem;--text-sub: 1.1875rem;--text-title: 1.4375rem;--text-total: 1.75rem;--text-hero: 3rem;--radius-control: 6px;--icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");--icon-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h16v14H4zM4 10h16M8.5 3.5v4M15.5 3.5v4'/%3E%3C/svg%3E");--tab-height: 60px;color-scheme:light}@media (prefers-color-scheme: dark){:root{--color-bg: #0f1412;--color-surface: #171d1a;--color-ink: #e6ece9;--color-muted: #9aa7a1;--color-rule: #2c3531;--color-control: #647069;--color-line: #5cc2a3;--color-signal: #f0776a;--color-on-ink: #0f1412;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-ink);caret-color:var(--color-line);accent-color:var(--color-line);font-family:var(--font-body);font-size:var(--text-body);line-height:1.5;font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;word-break:keep-all;overflow-wrap:anywhere}::selection{background:color-mix(in srgb,var(--color-line) 28%,transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-line);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}button,input,select,textarea{font:inherit;color:inherit}button{-webkit-user-select:none;user-select:none;touch-action:manipulation}.app{max-width:480px;margin:0 auto;min-height:100dvh;padding:calc(16px + env(safe-area-inset-top)) 16px calc(var(--tab-height) + 24px + env(safe-area-inset-bottom))}.muted{color:var(--color-muted)}.screen-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 8px;margin-bottom:16px}.screen-header h1{margin:0;font-size:var(--text-title)}.cycle-label{display:grid;justify-items:end;margin:0;font-size:var(--text-caption);font-weight:600;line-height:1.35}.card{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-control);padding:16px;margin-bottom:12px}.error-banner{border-color:var(--color-signal);color:var(--color-signal)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;border-radius:var(--radius-control);border:1px solid var(--color-control);background:var(--color-surface);cursor:pointer}.button:active:not(:disabled){background:color-mix(in srgb,var(--color-ink) 8%,var(--color-surface))}.button-primary{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-on-ink);font-weight:600}.button-primary:active:not(:disabled){background:color-mix(in srgb,var(--color-ink) 82%,var(--color-bg))}.button-danger{color:var(--color-signal)}.button:disabled{background:var(--color-surface);border-color:var(--color-rule);color:var(--color-muted);cursor:default}.tab-bar{position:fixed;inset:auto 0 0 0;display:flex;justify-content:center;background:var(--color-surface);border-top:1px solid var(--color-rule);padding-bottom:env(safe-area-inset-bottom)}.tab-bar ul{display:flex;width:100%;max-width:480px;margin:0;padding:0;list-style:none}.tab-bar li{flex:1;min-width:0}.tab-bar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;height:var(--tab-height);padding:0;border:0;background:none;color:var(--color-muted);white-space:nowrap;font-size:var(--text-caption);line-height:1.2;cursor:pointer}.tab-bar button:active{background:color-mix(in srgb,var(--color-ink) 6%,transparent)}.tab-icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.tab-bar button[aria-current=page]{color:var(--color-ink);font-weight:700;box-shadow:inset 0 3px 0 var(--color-line)}.budget-summary{padding:12px 0 16px;border-top:2px solid var(--color-ink)}.budget-summary h2{margin:0;font-size:var(--text-body);font-weight:600}.summary-amount{margin:2px 0 4px;font-size:var(--text-total);font-weight:800;line-height:1.2;letter-spacing:-.01em}.budget-summary[data-short] .summary-amount{color:var(--color-signal)}.budget-summary .muted{margin:0;font-size:var(--text-caption)}.flow{margin-top:24px}.flow-heading{display:flex;justify-content:space-between;align-items:baseline;margin:0;padding-top:10px;border-top:2px solid var(--color-ink);font-size:var(--text-sub)}.budget-group{margin-top:16px}.budget-group header,.budget-group.is-empty{display:flex;justify-content:space-between;align-items:center;gap:12px}.budget-group h3{margin:0;font-size:var(--text-body);font-weight:700}.budget-group.is-empty .muted{margin:0;font-size:var(--text-caption);text-align:right}.group-total{font-weight:700}.inline-add{min-height:44px;min-width:44px;padding:0;text-align:right;border:0;background:none;color:var(--color-muted);font-weight:600;cursor:pointer}.inline-add:active{color:var(--color-ink)}.item-list{margin:4px 0 0;padding:0;list-style:none}.item-row{display:grid;grid-template-columns:1fr auto;gap:2px 12px;width:100%;min-height:44px;padding:10px 0;border:0;border-top:1px solid var(--color-rule);background:none;text-align:left;cursor:pointer}.item-row:active{background:color-mix(in srgb,var(--color-ink) 5%,transparent)}.item-name{font-weight:500}.item-status{margin-left:8px;font-size:var(--text-caption);font-weight:500;color:var(--color-muted)}.item-amount{text-align:right}.item-row[data-status=ended] .item-amount{text-decoration:line-through;text-decoration-thickness:1px;color:var(--color-muted)}.item-period,.item-detail{font-size:var(--text-caption);color:var(--color-muted)}.item-period{grid-column:1}.item-detail{grid-column:2;text-align:right}.duration-line{grid-column:1 / -1;position:relative;width:calc(var(--span) * 100%);min-width:48px;height:10px;margin-top:4px;background:linear-gradient(var(--color-rule),var(--color-rule)) center / 100% 2px no-repeat}.duration-line:before,.duration-line:after{content:"";position:absolute;z-index:1;top:1px;width:8px;height:8px;border-radius:50%;box-sizing:border-box}.duration-line:before{left:2px;width:4px;top:0;height:10px;border-radius:2px;background:var(--color-muted)}.duration-line:after{right:0;border:2px solid var(--color-muted);background:var(--color-bg)}.item-row[data-status=ended] .duration-line:after{background:var(--color-muted)}.duration-done{position:absolute;inset:4px auto 4px 4px;width:calc(var(--done) * (100% - 8px));background:var(--color-line)}.duration-done[data-current]:after{content:"";position:absolute;z-index:2;top:-4px;right:-5px;width:10px;height:10px;border-radius:50%;background:var(--color-line);box-shadow:0 0 0 2px var(--color-bg)}.cycle-route{margin:-4px 0 16px}.cycle-route-line{position:relative;display:block;height:12px;margin:0 6px;background:linear-gradient(var(--color-rule),var(--color-rule)) center / 100% 4px no-repeat}.cycle-route-line:before,.cycle-route-line:after{content:"";position:absolute;z-index:1;top:0;width:12px;height:12px;border-radius:50%;box-sizing:border-box}.cycle-route-line:before{left:-2px;width:4px;top:-2px;height:16px;border-radius:2px;background:var(--color-line)}.cycle-route-line:after{right:-6px;border:3px solid var(--color-muted);background:var(--color-bg)}.cycle-route-done{position:absolute;top:4px;left:0;height:4px;width:calc(var(--now) * 100%);background:var(--color-line)}.cycle-route-done:after{content:"";position:absolute;z-index:2;top:-5px;right:-7px;width:14px;height:14px;border-radius:50%;background:var(--color-line);box-shadow:0 0 0 3px var(--color-bg)}.cycle-route-today{display:block;width:max-content;margin:0 0 4px calc(6px + var(--now) * (100% - 12px));transform:translate(calc(var(--now) * -100%));font-size:var(--text-caption);font-weight:700;white-space:nowrap}.cycle-route-ends{display:flex;justify-content:space-between;margin-top:4px;font-size:var(--text-caption);font-weight:600;color:var(--color-muted)}.add-dock{position:sticky;bottom:calc(var(--tab-height) + env(safe-area-inset-bottom));margin:24px -16px 0;padding:8px 16px 12px;background:var(--color-bg);border-top:1px solid var(--color-rule)}@media (max-height: 560px){.add-dock{position:static}}.add-dock .button{width:100%}.form{display:grid;gap:16px}.field{display:grid;gap:4px}.field>span:first-child,.field legend{font-size:.9rem;font-weight:600}.field input,.field select,.field textarea{width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--color-control);border-radius:var(--radius-control);background:var(--color-surface)}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:var(--color-signal)}fieldset.field{margin:0;padding:0;border:0}.field legend{padding:0}.select{position:relative;display:block}.field .select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:44px}.select:after{content:"";position:absolute;top:50%;right:10px;width:24px;height:24px;margin-top:-12px;background:var(--color-muted);-webkit-mask:var(--icon-chevron) center / contain no-repeat;mask:var(--icon-chevron) center / contain no-repeat;pointer-events:none}.field input[type=month]::-webkit-calendar-picker-indicator{width:24px;height:24px;padding:0;background:var(--color-muted);-webkit-mask:var(--icon-calendar) center / contain no-repeat;mask:var(--icon-calendar) center / contain no-repeat;cursor:pointer}.field-group{display:grid;gap:8px}.choice-chips{display:flex;flex-wrap:wrap;gap:8px}.choice-chip{min-height:44px;max-width:100%;padding:0 14px;border:1px solid var(--color-control);border-radius:22px;background:var(--color-surface);overflow-wrap:anywhere;cursor:pointer}.choice-chip:active{background:color-mix(in srgb,var(--color-ink) 8%,var(--color-surface))}.choice-chip[aria-pressed=true]{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-on-ink);font-weight:600}.segmented{display:grid;grid-auto-columns:1fr;grid-auto-flow:column;border:1px solid var(--color-control);border-radius:var(--radius-control);background:var(--color-surface);overflow:hidden}.segmented label{position:relative;display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 4px;color:var(--color-muted);font-weight:600;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none}.segmented label+label{border-left:1px solid var(--color-control)}.segmented label:active{background:color-mix(in srgb,var(--color-ink) 6%,transparent)}.field .segmented input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;min-height:0;margin:0;opacity:0;cursor:pointer}.segmented label:has(input:checked){background:var(--color-ink);color:var(--color-on-ink)}.segmented label:has(input:focus-visible){outline:2px solid var(--color-line);outline-offset:-4px}.field-hint{font-size:.85rem;color:var(--color-muted)}.field-error{font-size:.85rem;color:var(--color-signal)}.form-actions{display:flex;gap:8px;flex-wrap:wrap}.form-actions .button-primary{flex:1}.form-danger{margin-top:16px;padding-top:16px;border-top:1px solid var(--color-rule)}.form-danger .button{width:100%}.sheet-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-8px 0 16px;padding-bottom:8px;border-bottom:2px solid var(--color-ink)}.sheet-bar h1{margin:0;font-size:var(--text-title)}.sheet-close{min-width:44px;min-height:44px;padding:0 4px;border:0;background:none;color:var(--color-ink);font-weight:600;cursor:pointer}.sheet-close:active{color:var(--color-muted)}.sheet{width:100%;max-width:480px;margin:auto auto 0;padding:0;border:0;border-radius:12px 12px 0 0;background:var(--color-surface);color:var(--color-ink)}.sheet::backdrop{background:#00000073}.sheet-body{padding:20px 16px calc(16px + env(safe-area-inset-bottom))}.sheet-body h2{margin:0 0 4px;font-size:var(--text-sub)}.sheet-body p{margin:0 0 16px}.sheet-actions{display:grid;gap:8px}.button-signal{background:var(--color-signal);border-color:var(--color-signal);color:var(--color-on-ink);font-weight:600}.button-signal:active:not(:disabled){background:color-mix(in srgb,var(--color-signal) 82%,var(--color-ink))}@media (prefers-reduced-motion: no-preference){.sheet[open]{animation:sheet-up .18s ease-out}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}}
