:root{--ink-900: #1E2033;--ink-800: #2B2D42;--ink-700: #3A3D5C;--ink-500: #5C6078;--ink-400: #8D93A8;--ink-300: #B7BBC9;--peri-700: #4A50C4;--peri-600: #5B62E0;--peri-500: #6D75E8;--peri-300: #A9AEF2;--peri-100: #E9EAFB;--peri-050: #F3F4FD;--sun-600: #E8A317;--sun-500: #FDB833;--sun-200: #FDE7B0;--sun-100: #FEF3D6;--green-600: #1F9D6B;--green-100: #DFF3EA;--red-600: #DC4B57;--red-100: #FBE3E5;--amber-600: #D98410;--bg: #F5F6FB;--surface: #FFFFFF;--surface-2: #FBFBFE;--border: #E6E7F0;--shadow-sm: 0 1px 2px rgba(30, 32, 51, .06);--shadow-md: 0 4px 16px rgba(30, 32, 51, .08);--shadow-lg: 0 10px 34px rgba(30, 32, 51, .14);--text: var(--ink-800);--text-soft: var(--ink-500);--text-mute: var(--ink-400);--radius: 16px;--radius-sm: 10px;--radius-lg: 22px;--nav-h: 66px;--header-h: 58px;--maxw: 640px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);font-family:Poppins,system-ui,-apple-system,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit}ul{list-style:none}.app-shell{max-width:var(--maxw);margin:0 auto;min-height:100%;background:var(--bg);position:relative}.page{padding:16px 16px calc(var(--nav-h) + var(--safe-b) + 24px);animation:fade .2s ease}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.app-header{position:sticky;top:0;z-index:20;height:calc(var(--header-h) + var(--safe-t));padding-top:var(--safe-t);display:flex;align-items:center;justify-content:space-between;padding-left:16px;padding-right:16px;background:#f5f6fbdb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.app-header h1{font-size:19px;font-weight:600;letter-spacing:-.01em}.app-header .sub{font-size:12px;color:var(--text-mute);font-weight:500}.bottom-nav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:var(--maxw);z-index:30;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:#ffffffeb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--border)}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-mute);font-size:10.5px;font-weight:500;transition:color .15s}.bottom-nav a svg{width:23px;height:23px}.bottom-nav a.active{color:var(--peri-500)}.bottom-nav a.active .nav-icon{background:var(--peri-100)}.nav-icon{width:40px;height:28px;border-radius:999px;display:flex;align-items:center;justify-content:center;transition:background .15s}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px}.card.pad-lg{padding:20px}.card-title{font-size:13px;font-weight:600;color:var(--text-soft);text-transform:uppercase;letter-spacing:.03em}.section-title{font-size:15px;font-weight:600;margin:22px 2px 12px}.section-title:first-child{margin-top:6px}.stack{display:flex;flex-direction:column;gap:12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.row{display:flex;align-items:center;gap:10px}.row.between{justify-content:space-between}.spacer{flex:1}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 15px;box-shadow:var(--shadow-sm)}.stat .label{font-size:11.5px;color:var(--text-mute);font-weight:500}.stat .value{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-top:4px}.stat .value.sm{font-size:18px}.stat .meta{font-size:11px;color:var(--text-soft);margin-top:3px}.stat.accent{background:linear-gradient(135deg,var(--peri-600),var(--peri-500));border:none;color:#fff}.stat.accent .label,.stat.accent .meta{color:#ffffffd1}.stat.sun{background:linear-gradient(135deg,var(--sun-500),var(--sun-600));border:none;color:var(--ink-900)}.stat.sun .label,.stat.sun .meta{color:#1e2033b3}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--peri-100);color:var(--peri-700)}.badge.green{background:var(--green-100);color:var(--green-600)}.badge.red{background:var(--red-100);color:var(--red-600)}.badge.sun{background:var(--sun-100);color:var(--amber-600)}.badge.gray{background:#eef0f5;color:var(--ink-500)}.badge.ink{background:var(--ink-800);color:#fff}.dot{width:7px;height:7px;border-radius:50%;background:currentColor}.pill-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}.pill{white-space:nowrap;padding:7px 14px;border-radius:999px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-soft);cursor:pointer}.pill.active{background:var(--ink-800);color:#fff;border-color:var(--ink-800)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:12px 18px;border-radius:var(--radius-sm);border:1px solid transparent;font-weight:600;font-size:14px;cursor:pointer;transition:transform .08s,opacity .15s,background .15s}.btn:active{transform:scale(.97)}.btn.block{width:100%}.btn-primary{background:var(--peri-500);color:#fff}.btn-primary:hover{background:var(--peri-600)}.btn-ink{background:var(--ink-800);color:#fff}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-danger{background:var(--red-100);color:var(--red-600)}.btn-sun{background:var(--sun-500);color:var(--ink-900)}.btn.sm{padding:8px 13px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.fab{position:fixed;z-index:25;right:max(16px,calc(50% - var(--maxw)/2 + 16px));bottom:calc(var(--nav-h) + var(--safe-b) + 16px);width:56px;height:56px;border-radius:50%;border:none;background:var(--peri-500);color:#fff;box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;cursor:pointer}.fab:active{transform:scale(.94)}.fab svg{width:26px;height:26px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12.5px;font-weight:600;color:var(--text-soft)}.field input,.field select,.field textarea{padding:12px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);outline:none;transition:border .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--peri-500);box-shadow:0 0 0 3px var(--peri-100);background:#fff}.field textarea{resize:vertical;min-height:72px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help{font-size:11.5px;color:var(--text-mute)}.list-item{display:flex;align-items:center;gap:12px;padding:13px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .08s}.list-item:active{transform:scale(.99)}.avatar{width:42px;height:42px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;color:#fff;background:var(--peri-500)}.grow{flex:1;min-width:0}.list-item .title{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item .subtitle{font-size:12.5px;color:var(--text-mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chevron{color:var(--ink-300);flex-shrink:0}.money{font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.01em}.money.pos{color:var(--green-600)}.money.neg{color:var(--red-600)}.kanban{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 8px;scroll-snap-type:x mandatory;scrollbar-width:none}.kanban::-webkit-scrollbar{display:none}.kanban-col{flex:0 0 78%;max-width:300px;scroll-snap-align:start;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px}.kanban-col h3{font-size:12.5px;font-weight:600;color:var(--text-soft);display:flex;align-items:center;gap:6px;margin-bottom:10px;padding:2px 4px}.kanban-col .count{background:#eef0f5;color:var(--ink-500);border-radius:999px;font-size:11px;padding:1px 7px}.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 12px;margin-bottom:9px;box-shadow:var(--shadow-sm);cursor:pointer}.task-card:last-child{margin-bottom:0}.task-card .t-title{font-size:13.5px;font-weight:600;line-height:1.3}.task-card .t-meta{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}.prio{width:8px;height:8px;border-radius:50%;flex-shrink:0}.prio.high{background:var(--red-600)}.prio.medium{background:var(--sun-500)}.prio.low{background:var(--ink-300)}.move-btns{display:flex;gap:4px;margin-top:9px}.move-btns button{flex:1;padding:5px;border-radius:7px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);font-size:11px;font-weight:600;cursor:pointer}.move-btns button:disabled{opacity:.3}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#1e20336b;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}.sheet{width:100%;max-width:var(--maxw);max-height:92vh;overflow-y:auto;background:var(--bg);border-radius:22px 22px 0 0;padding:8px 16px calc(24px + var(--safe-b));animation:slideUp .22s cubic-bezier(.2,.9,.3,1)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:none}}.sheet-grip{width:40px;height:4px;border-radius:999px;background:var(--ink-300);margin:8px auto 14px}.sheet h2{font-size:18px;font-weight:600;margin-bottom:16px}.empty{text-align:center;padding:40px 20px;color:var(--text-mute)}.empty svg{width:44px;height:44px;opacity:.4;margin-bottom:10px}.empty p{font-size:14px}.loading{display:flex;align-items:center;justify-content:center;padding:60px 0;color:var(--text-mute)}.spinner{width:26px;height:26px;border:3px solid var(--peri-100);border-top-color:var(--peri-500);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress{height:6px;border-radius:999px;background:var(--peri-100);overflow:hidden}.progress>span{display:block;height:100%;background:var(--peri-500);border-radius:999px;transition:width .3s}.toast{position:fixed;bottom:calc(var(--nav-h) + var(--safe-b) + 20px);left:50%;transform:translate(-50%);z-index:60;background:var(--ink-900);color:#fff;padding:11px 18px;border-radius:999px;font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);animation:fade .2s;max-width:calc(var(--maxw) - 32px)}.toast.err{background:var(--red-600)}.divider{height:1px;background:var(--border);margin:4px 0}.text-soft{color:var(--text-soft)}.text-mute{color:var(--text-mute)}.small{font-size:12.5px}.center{text-align:center}.nav-brand{display:none}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head{margin-bottom:6px}.cal-wd{text-align:center;font-size:11px;font-weight:600;color:var(--text-mute)}.cal-day{aspect-ratio:1;border:1px solid transparent;border-radius:10px;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:13.5px;font-weight:500;color:var(--text);cursor:pointer;padding:0}.cal-day:hover{background:var(--peri-050)}.cal-day.today{color:var(--peri-700);font-weight:700;border-color:var(--peri-300)}.cal-day.sel{background:var(--ink-800);color:#fff;border-color:var(--ink-800)}.cal-dots{display:flex;gap:2px;height:5px}.cal-dot{width:5px;height:5px;border-radius:50%}.cal-dot.task{background:var(--peri-500)}.cal-dot.in{background:var(--green-600)}.cal-dot.out{background:var(--red-600)}.cal-day.sel .cal-dot{outline:1px solid rgba(255,255,255,.5)}.bell{position:relative;width:40px;height:40px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;background:var(--surface);border:1px solid var(--border);color:var(--ink-700)}.bell:active{transform:scale(.94)}.bell-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--red-600);color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}.notif-icon{width:40px;height:40px;border-radius:11px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--peri-100);color:var(--peri-700)}.notif-icon.red{background:var(--red-100);color:var(--red-600)}.notif-icon.sun{background:var(--sun-100);color:var(--amber-600)}.notif-icon.green{background:var(--green-100);color:var(--green-600)}@media (min-width: 900px){:root{--side-w: 250px;--content-max: 1080px}.app-shell{max-width:none;margin:0;padding-left:var(--side-w)}.app-header{height:66px;max-width:var(--content-max);margin:0 auto;padding:0 32px;background:#f5f6fbcc}.app-header h1{font-size:22px}.page{max-width:var(--content-max);margin:0 auto;padding:24px 32px 56px}.bottom-nav{top:0;bottom:0;left:0;width:var(--side-w);height:100vh;max-width:none;transform:none;padding:22px 14px;display:flex;flex-direction:column;align-items:stretch;gap:4px;border-top:none;border-right:1px solid var(--border);background:#ffffffe6}.bottom-nav a{flex-direction:row;justify-content:flex-start;gap:13px;font-size:14.5px;font-weight:500;padding:11px 14px;border-radius:12px}.bottom-nav a:hover{background:var(--surface-2);color:var(--text)}.bottom-nav a.active{background:var(--peri-100);color:var(--peri-700)}.bottom-nav a.active .nav-icon{background:none}.bottom-nav a svg{width:21px;height:21px}.nav-icon{width:auto;height:auto;background:none}.nav-brand{display:flex;align-items:center;gap:11px;padding:6px 12px 22px;margin-bottom:8px}.nav-brand-mark{width:42px;height:42px;border-radius:13px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--peri-600),var(--peri-500));box-shadow:var(--shadow-md)}.nav-brand-mark svg{width:24px;height:24px}.nav-brand-text{font-size:17px;font-weight:700;line-height:1.05;letter-spacing:-.01em}.nav-brand-text small{font-size:11.5px;font-weight:500;color:var(--text-mute)}.fab{right:40px;bottom:40px;width:60px;height:60px}.kanban{overflow-x:visible}.kanban-col{flex:1 1 0;max-width:none;min-width:0}.sheet-backdrop{align-items:center}.sheet{max-width:540px;max-height:88vh;border-radius:22px;padding:8px 24px 28px;animation:popIn .2s cubic-bezier(.2,.9,.3,1)}@keyframes popIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.toast{bottom:32px;left:auto;right:40px;transform:none}.stat .value{font-size:26px}}
