:root{--bg: #f2f2f7;--surface: #ffffff;--surface-2: #ececef;--surface-inset: #f2f2f7;--text: #000000;--text-muted: #6b6b70;--text-faint: #a1a1a6;--accent: #007aff;--accent-strong: #0a6ee0;--accent-soft: #e8f1ff;--on-accent: #ffffff;--positive: #248a3d;--positive-soft: #e7f6eb;--negative: #d70015;--negative-soft: #ffe9ea;--warning: #b25000;--warning-soft: #fff2e5;--border: rgba(60, 60, 67, .14);--border-strong: rgba(60, 60, 67, .24);--separator: rgba(60, 60, 67, .18);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 6px 20px rgba(0, 0, 0, .08);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .14);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 26px;--radius-pill: 999px;--page-max: 640px;--gap: 12px;--pad: 16px;--tabbar-height: 64px;--safe-bottom: env(safe-area-inset-bottom, 0px);--spring: cubic-bezier(.34, 1.56, .64, 1);--ease: cubic-bezier(.32, .72, 0, 1)}[data-theme=dark]{--bg: #000000;--surface: #1c1c1e;--surface-2: #2c2c2e;--surface-inset: #121214;--text: #ffffff;--text-muted: #98989f;--text-faint: #6b6b70;--accent: #0a84ff;--accent-strong: #409cff;--accent-soft: #0b2545;--on-accent: #ffffff;--positive: #30d158;--positive-soft: #0e2f18;--negative: #ff453a;--negative-soft: #3a1210;--warning: #ff9f0a;--warning-soft: #3a2707;--border: rgba(84, 84, 88, .5);--border-strong: rgba(84, 84, 88, .75);--separator: rgba(84, 84, 88, .55);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: 0 6px 20px rgba(0, 0, 0, .55);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .65)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text)}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;transition:background-color .2s var(--ease),color .2s var(--ease)}h1,h2,h3{margin:0;letter-spacing:-.02em;font-weight:700}h1{font-size:30px;letter-spacing:-.035em}h2{font-size:21px}h3{font-size:17px}.app-shell{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}.app-main{flex:1;width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--pad);padding-bottom:calc(var(--tabbar-height) + var(--safe-bottom) + 24px);display:flex;flex-direction:column;gap:var(--gap)}.app-main>*{animation:rise .32s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--gap);margin-bottom:2px}.page-head__subtitle{color:var(--text-muted);font-size:14px;margin:4px 0 0}.card{background:var(--surface);border-radius:var(--radius-lg);padding:var(--pad);box-shadow:var(--shadow-sm)}.card--flush{padding:0;overflow:hidden}.card__title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;color:var(--text-muted);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.card>h3{text-transform:uppercase;letter-spacing:.03em;font-size:15px}.metric{font-size:30px;font-weight:700;letter-spacing:-.035em;font-variant-numeric:tabular-nums}.metric--positive{color:var(--positive)}.metric--negative{color:var(--negative)}.stat-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--separator)}.stat-row:last-child{border-bottom:none}.stat-row span{color:var(--text-muted);font-size:15px}.stat-row__label{display:flex;flex-direction:column;gap:2px}.stat-row__label .field-hint{font-size:12px;line-height:1.3}.stat-row strong,.stat-row .amount{font-variant-numeric:tabular-nums;font-weight:600}.stat-row--link{color:inherit;text-decoration:none;cursor:pointer;margin:0 calc(var(--pad) * -1);padding-left:var(--pad);padding-right:var(--pad);transition:background-color .15s var(--ease)}.stat-row--link:after{content:"";width:8px;height:8px;flex:none;align-self:center;border-right:2px solid var(--text-faint);border-bottom:2px solid var(--text-faint);transform:rotate(-45deg)}.stat-row--link:active{background:var(--surface-2)}.field-hint{color:var(--text-muted);font-size:14px;margin:0}.error-text{color:var(--negative);background:var(--negative-soft);border-radius:var(--radius-md);padding:12px 14px;font-size:15px;margin:0}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;background:var(--surface-2);color:var(--text-muted)}.badge--positive{background:var(--positive-soft);color:var(--positive)}.badge--negative{background:var(--negative-soft);color:var(--negative)}.badge--warning{background:var(--warning-soft);color:var(--warning)}.form{display:flex;flex-direction:column;gap:16px}label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}input,select,textarea{width:100%;padding:15px 16px;border-radius:var(--radius-md);border:1px solid transparent;background:var(--surface);color:var(--text);font-size:17px;font-weight:500;font-family:inherit;text-transform:none;letter-spacing:normal;box-shadow:var(--shadow-sm);transition:border-color .18s var(--ease),box-shadow .18s var(--ease);-moz-appearance:none;appearance:none;-webkit-appearance:none}select{background-image:linear-gradient(45deg,transparent 50%,var(--text-faint) 50%),linear-gradient(135deg,var(--text-faint) 50%,transparent 50%);background-position:calc(100% - 19px) calc(50% + 2px),calc(100% - 13px) calc(50% + 2px);background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:40px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.filters{display:grid;grid-template-columns:1fr 1fr;gap:10px}.select-field,.stepper-field{display:flex;flex-direction:column;gap:7px}.select-field__label{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.select-field__validity{position:absolute;opacity:0;width:1px;height:1px;padding:0;margin:-1px;pointer-events:none}.select-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:15px 16px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-size:17px;font-weight:500;text-align:left;box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .12s var(--ease),border-color .18s var(--ease)}.select-trigger:active{transform:scale(.99);border-color:var(--accent)}.select-trigger.is-empty .select-trigger__value{color:var(--text-faint)}.select-trigger__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-trigger__chevron{flex:none;width:8px;height:8px;border-right:2px solid var(--text-faint);border-bottom:2px solid var(--text-faint);transform:rotate(45deg) translate(-2px,-2px)}.select-trigger:disabled{opacity:.5;cursor:default}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;background:#0006;animation:fade .2s var(--ease) both}.sheet{width:100%;max-width:var(--page-max);max-height:82dvh;display:flex;flex-direction:column;gap:10px;padding:8px var(--pad) calc(var(--pad) + var(--safe-bottom));background:var(--bg);border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-lg);animation:sheet-in .32s var(--spring) both}@keyframes sheet-in{0%{transform:translateY(100%)}}.sheet__grip{width:36px;height:5px;margin:0 auto 2px;border-radius:var(--radius-pill);background:var(--border-strong)}.sheet__title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:0 2px}.sheet__list{overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--surface);border-radius:var(--radius-lg)}.sheet__option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:14px 16px;border:none;border-bottom:1px solid var(--separator);background:transparent;color:var(--text);font-size:17px;text-align:left;cursor:pointer}.sheet__option:last-child{border-bottom:none}.sheet__option:active{background:var(--surface-2)}.sheet__option-body{display:flex;flex-direction:column;gap:2px;min-width:0}.sheet__option-label{font-weight:500}.sheet__option-hint{font-size:13px;color:var(--text-muted)}.sheet__option.is-selected .sheet__option-label{color:var(--accent);font-weight:650}.sheet__check{flex:none;width:7px;height:13px;border-right:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);transform:rotate(45deg);margin-bottom:3px}.sheet__empty{padding:18px 16px;color:var(--text-muted)}.perm-list{margin-top:12px;border-top:1px solid var(--separator)}.perm-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--separator)}.perm-row:last-child{border-bottom:none}.perm-row__body{display:flex;flex-direction:column;gap:2px;min-width:0}.perm-row__title{font-size:15px;font-weight:500}.perm-row__hint{font-size:12.5px;color:var(--text-muted);line-height:1.3}.perm-mark{flex:none;width:28px;text-align:center;font-size:17px;font-weight:700}.perm-mark.is-on{color:var(--positive)}.perm-mark.is-off{color:var(--text-faint)}.switch{flex:none;position:relative;display:inline-flex;cursor:pointer}.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.switch__track{width:51px;height:31px;padding:2px;border-radius:var(--radius-pill);background:var(--surface-2);transition:background-color .25s var(--ease)}.switch__thumb{display:block;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 5px #00000047;transition:transform .25s var(--spring)}.switch input:checked+.switch__track{background:var(--positive)}.switch input:checked+.switch__track .switch__thumb{transform:translate(20px)}.switch input:disabled+.switch__track{opacity:.5}.stepper{display:flex;align-items:center;gap:8px}.stepper__btn{flex:none;width:52px;height:52px;border:none;border-radius:var(--radius-md);background:var(--surface);color:var(--accent);font-size:26px;line-height:1;font-weight:500;box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .12s var(--spring)}.stepper__btn:active:not(:disabled){transform:scale(.92)}.stepper__btn:disabled{color:var(--text-faint);cursor:default}.stepper__input{flex:1;text-align:center;font-variant-numeric:tabular-nums;font-weight:600}.stepper__input::-webkit-outer-spin-button,.stepper__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper__input{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.checkbox-field{flex-direction:row;align-items:center;gap:10px;font-weight:500;color:var(--text);text-transform:none;letter-spacing:normal;font-size:16px}.checkbox-field input{width:22px;height:22px;flex:none;accent-color:var(--accent);box-shadow:none}button{font-family:inherit}a{color:var(--accent);text-decoration:none}.actions-major{display:flex;flex-direction:column;gap:10px}.action-major{display:flex;align-items:center;gap:14px;width:100%;padding:18px;border:none;border-radius:var(--radius-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);cursor:pointer;text-align:left;transition:transform .18s var(--spring),box-shadow .18s var(--ease)}.action-major:active{transform:scale(.975);box-shadow:none}.action-major__icon{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent)}.action-major__icon svg{width:24px;height:24px}.action-major__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.action-major__title{display:block;font-size:17px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;line-height:1.2}.action-major__hint{display:block;color:var(--text-muted);font-size:13px;line-height:1.35;text-transform:none;letter-spacing:normal}.action-major:after{content:"";width:9px;height:9px;flex:none;border-right:2px solid var(--text-faint);border-bottom:2px solid var(--text-faint);transform:rotate(-45deg)}.action-major--accent{background:var(--accent);color:var(--on-accent)}.action-major--accent .action-major__icon{background:#ffffff38;color:var(--on-accent)}.action-major--accent .action-major__hint{color:#ffffffd9}.action-major--accent:after{border-color:#ffffffb3}.action-major--danger .action-major__icon{background:var(--negative-soft);color:var(--negative)}.quick-action-button,.btn-primary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:17px 18px;border:none;border-radius:var(--radius-lg);background:var(--accent);color:var(--on-accent);font-size:17px;font-weight:700;cursor:pointer;transition:transform .18s var(--spring),opacity .15s var(--ease)}.quick-action-button:active,.btn-primary:active{transform:scale(.975)}.quick-action-button:disabled,.btn-primary:disabled{opacity:.45;cursor:default;transform:none}.btn-secondary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px 18px;border:none;border-radius:var(--radius-lg);background:var(--surface-2);color:var(--accent);font-size:17px;font-weight:600;cursor:pointer;transition:transform .18s var(--spring)}.btn-secondary:active{transform:scale(.975)}.link-button{background:none;border:none;padding:8px 0;color:var(--accent);font-size:16px;font-weight:600;cursor:pointer;transition:opacity .15s var(--ease)}.link-button:active{opacity:.5}.link-button.is-danger{color:var(--negative)}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;border-radius:var(--radius-pill);border:none;background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .18s var(--spring)}.icon-button:active{transform:scale(.9)}.segmented{position:relative;display:flex;padding:3px;background:var(--surface-2);border-radius:var(--radius-sm);isolation:isolate;margin-top:10px}.segmented+*{margin-top:12px}.segmented__thumb{position:absolute;top:3px;bottom:3px;z-index:-1;border-radius:calc(var(--radius-sm) - 3px);background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .28s var(--ease),width .28s var(--ease)}.segmented button{flex:1;padding:8px 12px;border:none;border-radius:calc(var(--radius-sm) - 3px);background:transparent;color:var(--text-muted);font-size:14px;font-weight:600;cursor:pointer;transition:color .2s var(--ease)}.segmented button.is-active{color:var(--text)}.list{display:flex;flex-direction:column;gap:10px}.list-item{display:flex;align-items:center;gap:12px;padding:15px 16px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);text-decoration:none;color:inherit;transition:transform .18s var(--spring),background-color .15s var(--ease)}.list-item:active{transform:scale(.985);background:var(--surface-2)}.list-item__body{flex:1;min-width:0}.list-item__title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item__meta{color:var(--text-muted);font-size:14px}.group-list{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.group-list__item{display:flex;align-items:center;gap:12px;padding:15px 16px;color:inherit;text-decoration:none;cursor:pointer;border:none;background:transparent;width:100%;text-align:left;font-size:16px;transition:background-color .15s var(--ease)}.group-list__item+.group-list__item{border-top:1px solid var(--separator)}.group-list__item:active{background:var(--surface-2)}.group-list__item--link:after{content:"";width:8px;height:8px;flex:none;border-right:2px solid var(--text-faint);border-bottom:2px solid var(--text-faint);transform:rotate(-45deg)}.journal-item{display:flex;flex-direction:column;gap:4px;padding:15px 16px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.journal-item.is-reversed{opacity:.5}.journal-item__head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.journal-item__actions{display:flex;gap:18px;margin-top:4px}.section-title{margin:10px 0 0;padding:0 4px;color:var(--text-muted);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.action-tile{display:flex;flex-direction:column;gap:2px;padding:15px;min-height:78px;justify-content:center;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--text);transition:transform .18s var(--spring)}.action-tile:active{transform:scale(.975)}.action-tile__title{font-weight:650;font-size:16px;line-height:1.25}.action-tile__hint{color:var(--text-muted);font-size:13px;line-height:1.3}.action-tile--wide{grid-column:1 / -1}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;justify-content:center;padding:6px 6px calc(6px + var(--safe-bottom));background:color-mix(in srgb,var(--surface) 80%,transparent);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--separator)}.tabbar__inner{display:flex;width:100%;max-width:var(--page-max)}.tabbar__item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;border-radius:var(--radius-sm);text-decoration:none;color:var(--text-faint);font-size:10px;font-weight:600;line-height:1.15;text-align:center;transition:color .2s var(--ease),transform .18s var(--spring)}.tabbar__item:active{transform:scale(.92)}.tabbar__item.is-active{color:var(--accent)}.tabbar__icon{display:block;width:24px;height:24px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;background:#0006;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);padding:10px;animation:fade .22s var(--ease)}@keyframes fade{0%{opacity:0}}.modal{width:100%;max-width:var(--page-max);background:var(--bg);border-radius:var(--radius-xl);padding:22px 18px calc(18px + var(--safe-bottom));box-shadow:var(--shadow-lg);max-height:90dvh;overflow-y:auto;animation:sheet .34s var(--ease)}@keyframes sheet{0%{transform:translateY(100%)}}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:skeleton 1.3s ease-in-out infinite}@keyframes skeleton{to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
