@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body,h1,h2,h3,p,ul,figure{margin:0}ul{padding:0;list-style:none}img,svg,canvas{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:root{--bg: #fbf7f2;--surface: #ffffff;--ink: #1f1a17;--muted: #6f655d;--line: #ece4da;--accent: #e8552d;--accent-deep: #c63f1b;--accent-soft: #fdebe4;--alert: #e03131;--alert-soft: #fdecec;--ok: #1f9d55;--ok-soft: #e5f6ec;--radius-sm: 10px;--radius: 16px;--radius-lg: 24px;--shadow-sm: 0 1px 2px rgb(31 26 23 / .06), 0 2px 8px rgb(31 26 23 / .04);--shadow: 0 10px 30px -12px rgb(31 26 23 / .18);--surface-2: #f6f1eb;--surface-3: #efe7de;--line-strong: #d6cabc;--placeholder: #a99e93;--inverse-bg: #1f1a17;--inverse-fg: #ffffff;--inverse-hover: #3a322d;--dark-bg: #1f1a17;--side-bg: #1f1a17;--overlay: rgb(31 26 23 / .45);--ok-ink: #146c3b;--alert-ink: #a61e1e;--warn-soft: #fbefd6;--warn-ink: #9a5b00;--info-soft: #e2eef6;--info-ink: #2f5f7f;--money-soft: #ebe7fb;--money-ink: #4b3aa8;--accent-ink: #8a2f13;--skeleton-a: #f3ede6;--skeleton-b: #faf6f1;--font: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif}html[data-theme=dark]{color-scheme:dark;--bg: #15110f;--surface: #1f1a17;--surface-2: #272019;--surface-3: #332a23;--ink: #f4ede6;--muted: #b3a79c;--line: #3a3029;--line-strong: #52463c;--placeholder: #7d7168;--accent: #f26a40;--accent-deep: #ff8f6b;--accent-soft: #3a2218;--alert: #ff5f5f;--alert-soft: #3b1c1c;--ok: #34c77a;--ok-soft: #173024;--inverse-bg: #f4ede6;--inverse-fg: #1f1a17;--inverse-hover: #ffffff;--dark-bg: #2d2520;--side-bg: #0f0c0a;--overlay: rgb(0 0 0 / .6);--ok-ink: #7fe0a8;--alert-ink: #ff9d9d;--warn-soft: #37290f;--warn-ink: #f0c060;--info-soft: #16293a;--info-ink: #8cc2e6;--money-soft: #26213f;--money-ink: #b3a6ff;--accent-ink: #ffb699;--skeleton-a: #272019;--skeleton-b: #332a23;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow: 0 12px 30px -12px rgb(0 0 0 / .6)}.light-scope{color-scheme:light;--bg: #fbf7f2;--surface: #ffffff;--ink: #1f1a17;--muted: #6f655d;--line: #ece4da;--accent: #e8552d;--accent-deep: #c63f1b;--accent-soft: #fdebe4;--alert: #e03131;--alert-soft: #fdecec;--ok: #1f9d55;--ok-soft: #e5f6ec;--shadow-sm: 0 1px 2px rgb(31 26 23 / .06), 0 2px 8px rgb(31 26 23 / .04);--shadow: 0 10px 30px -12px rgb(31 26 23 / .18);--surface-2: #f6f1eb;--surface-3: #efe7de;--line-strong: #d6cabc;--placeholder: #a99e93;--inverse-bg: #1f1a17;--inverse-fg: #ffffff;--inverse-hover: #3a322d;--dark-bg: #1f1a17;--side-bg: #1f1a17;--overlay: rgb(31 26 23 / .45);--ok-ink: #146c3b;--alert-ink: #a61e1e;--warn-soft: #fbefd6;--warn-ink: #9a5b00;--info-soft: #e2eef6;--info-ink: #2f5f7f;--money-soft: #ebe7fb;--money-ink: #4b3aa8;--accent-ink: #8a2f13;--skeleton-a: #f3ede6;--skeleton-b: #faf6f1;color:var(--ink)}body{min-height:100dvh;font-family:var(--font);font-size:16px;line-height:1.5;color:var(--ink);background:var(--bg)}.title{font-size:clamp(1.5rem,3vw,2rem);font-weight:800;letter-spacing:-.02em;line-height:1.15}.subtitle{color:var(--muted)}.label{font-size:.85rem;font-weight:700;color:var(--ink)}.hint{font-size:.85rem;color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:10px 20px;border:1.5px solid transparent;border-radius:999px;font-weight:700;font-size:.95rem;text-decoration:none;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s,transform .1s,box-shadow .15s}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:3px solid rgba(232,85,45,.35);outline-offset:2px}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 8px 18px -10px #e8552de6}.btn-primary:hover:not(:disabled){background:var(--accent-deep)}.btn-dark{background:var(--inverse-bg);color:var(--inverse-fg)}.btn-dark:hover:not(:disabled){background:var(--inverse-hover)}.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--ink)}.btn-ghost:hover:not(:disabled){border-color:var(--line-strong)}.btn-danger{background:transparent;border-color:transparent;color:var(--alert)}.btn-danger:hover:not(:disabled){background:var(--alert-soft)}.btn-block{width:100%}.btn-sm{min-height:38px;padding:6px 14px;font-size:.88rem}.field{display:grid;gap:6px}.input{width:100%;min-height:48px;padding:11px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-size:1rem;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--placeholder)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px #e8552d1f}.input.invalid{border-color:var(--alert)}.error-text{font-size:.85rem;color:var(--alert);font-weight:600}.alert{padding:12px 14px;border-radius:var(--radius-sm);font-size:.92rem;font-weight:600;background:var(--alert-soft);color:var(--alert-ink);overflow-wrap:anywhere}.alert-info{background:var(--accent-soft);color:var(--accent-ink)}.alert-ok{display:flex;align-items:center;gap:6px;background:var(--ok-soft);color:var(--ok-ink)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.page{width:100%;max-width:1080px;margin-inline:auto;padding:28px 20px 64px}@media(max-width:640px){.page{padding:16px 14px 72px}}.page.page--embedded{max-width:none;margin:0;padding:4px 0 64px}.backdrop{position:fixed;inset:0;z-index:40;background:var(--overlay);animation:fade-in .15s ease}.modal{position:fixed;inset:0;z-index:41;display:grid;place-items:center;padding:16px;pointer-events:none;overflow-y:auto}.modal__panel{pointer-events:auto;display:grid;gap:16px;width:100%;max-width:420px;max-height:calc(100dvh - 32px);overflow-y:auto;padding:24px;border-radius:var(--radius-lg);background:var(--surface);box-shadow:0 30px 60px -20px #1f1a1773;animation:pop-in .18s cubic-bezier(.2,.9,.3,1.2)}.modal__panel--wide{max-width:560px}.modal__panel h2{font-size:1.25rem;font-weight:800}.modal__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}}@keyframes shimmer{to{background-position:-200% 0}}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg,var(--skeleton-a) 25%,var(--skeleton-b) 50%,var(--skeleton-a) 75%) 0 0/200% 100%;animation:shimmer 1.2s infinite linear}.skeleton-stack{display:grid;gap:12px}.skeleton--line{height:14px;border-radius:999px}.skeleton--title{height:26px;width:40%;border-radius:10px}.skeleton--card{height:120px}.skeleton--block{height:260px}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.empty{display:grid;justify-items:center;gap:10px;padding:48px 24px;text-align:center}.empty__icon{font-size:2.6rem}.empty h2{font-size:1.25rem;font-weight:800}.empty .subtitle{max-width:44ch;margin-bottom:6px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:.8rem;font-weight:700}.chip--ok{background:var(--ok-soft);color:var(--ok-ink)}.chip--off{background:var(--alert-soft);color:var(--alert-ink)}.chip--accent{background:var(--accent-soft);color:var(--accent-deep)}select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:36px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.pw-wrap{position:relative;display:block}.pw-wrap>.input{padding-right:92px}.pw-toggle{position:absolute;top:50%;right:8px;transform:translateY(-50%);padding:6px 10px;border:0;border-radius:8px;background:transparent;color:var(--accent-deep);font-size:.82rem;font-weight:800;cursor:pointer}.pw-toggle:hover{background:var(--accent-soft)}.pw-toggle:focus-visible{outline:3px solid rgba(232,85,45,.35);outline-offset:1px}@media(max-width:860px){body:has(.tabbar) .page{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}body:has(.tabbar) .savebar,body:has(.atabbar) .savebar{bottom:calc(66px + env(safe-area-inset-bottom,0px))}}
