:root{--bg: #08111f;--bg-soft: #0e1728;--panel: rgba(14, 23, 40, .84);--panel-strong: #101b2f;--line: rgba(255, 255, 255, .08);--text: #e8eefc;--muted: #8da0c8;--brand: #6de0ff;--brand-2: #8c7dff;--income: #3acb7d;--expense: #ff647c;--shadow: 0 18px 60px rgba(0, 0, 0, .34);--radius: 22px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at top left,rgba(109,224,255,.18),transparent 35%),radial-gradient(circle at top right,rgba(140,125,255,.18),transparent 28%),linear-gradient(180deg,#050913,#0a1220 55%,#050913);color:var(--text)}body{min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}#frontend-app{min-height:100vh}.shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{padding:28px 20px;border-right:1px solid var(--line);background:linear-gradient(180deg,#08111ff2,#08111fc7);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);display:flex;flex-direction:column;gap:30px}.brand{display:flex;align-items:center;gap:14px}.brand-mark{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#09101c;font-weight:900}.brand strong,.brand small,.sidebar-footer strong,.sidebar-footer small,.sidebar-footer span,.eyebrow,.subtitle,.panel-head p,.loading-card,.stat-card span,.transaction-row p,.muted{display:block}.brand strong{font-size:1.03rem}.brand small,.sidebar-footer small,.sidebar-footer span,.eyebrow,.subtitle,.panel-head p,.transaction-row p,.stat-card span,.muted{color:var(--muted)}.sidebar-nav{display:grid;gap:10px}.sidebar-nav button,.dropdown button{border:1px solid transparent;background:#ffffff08;color:var(--text);padding:12px 14px;border-radius:16px;text-align:left;transition:.2s ease}.sidebar-nav button.active,.sidebar-nav button:hover,.dropdown button:hover{border-color:#6de0ff3d;background:#6de0ff1a}.sidebar-footer{margin-top:auto;padding:16px;border-radius:18px;background:#ffffff08;border:1px solid var(--line)}.workspace{padding:28px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.eyebrow{margin:0 0 8px;text-transform:uppercase;letter-spacing:.24em;font-size:.72rem}h1,h2,h3,p{margin:0}.subtitle{margin-top:8px}.topbar-actions{display:flex;align-items:center;gap:16px;margin-left:auto}.notification-wrap,.bell-button,.account-wrap{position:relative}.bell-button{width:58px;height:58px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(180deg,#ffffff17,#ffffff08);color:var(--text);display:grid;place-items:center;position:relative}.bell-button.empty{background:linear-gradient(180deg,#ffffff0a,#ffffff04);color:#8da0c8b8;border-color:#8da0c82e}.bell-button.active,.gear-button:hover,.bell-button:hover{border-color:#6de0ff47;background:#6de0ff1f}.bell-button.empty:hover{background:#8da0c814;border-color:#8da0c83d}.bell-button.ringing .bell-icon{animation:bell-ring .9s ease;transform-origin:top center}.bell-icon{font-size:1.35rem;line-height:1}.notification-badge{position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:linear-gradient(135deg,var(--expense),#ff99a7);color:#fff;font-size:.72rem;font-weight:800;display:grid;place-items:center;border:2px solid #08111f}.notification-dropdown{position:absolute;right:0;top:calc(100% + 12px);width:min(380px,92vw);background:#0c1322fa;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:12px;z-index:30}.notification-dropdown-head{display:grid;gap:3px;padding:8px 10px 12px;margin-bottom:8px;border-bottom:1px solid var(--line)}.notification-dropdown-head small{color:var(--muted)}.notification-list{display:grid;gap:10px;max-height:280px;overflow:auto;padding-right:4px;scrollbar-width:thin;scrollbar-color:rgba(141,160,200,.55) transparent}.notification-list::-webkit-scrollbar{width:8px}.notification-list::-webkit-scrollbar-track{background:transparent}.notification-list::-webkit-scrollbar-thumb{border-radius:999px;background:#8da0c873;border:2px solid transparent;background-clip:padding-box}.notification-item{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px;border-radius:14px;background:#ffffff0a;border:1px solid var(--line)}.notification-item-body{display:grid;gap:4px;text-align:left;border:0;background:transparent;color:var(--text);padding:0}.notification-item-body strong,.notification-item-body span{display:block}.notification-item-body strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-item-body span{color:var(--muted);font-size:.92rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item-date{color:var(--muted);font-size:.78rem}.notification-read-button{border:0;border-radius:12px;background:#6de0ff24;color:#dff9ff;padding:9px 12px;font-weight:700}.notification-empty{padding:12px 10px;color:var(--muted)}.gear-button{width:58px;height:58px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(180deg,#ffffff17,#ffffff08);color:var(--text);font-size:1.5rem;margin-left:auto;display:grid;place-items:center}.dropdown{position:absolute;right:0;top:calc(100% + 12px);min-width:220px;background:#0c1322fa;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:10px;z-index:20}.dropdown-user{display:grid;gap:2px;padding:8px 10px 12px;margin-bottom:8px;border-bottom:1px solid var(--line)}.dropdown-user strong{font-size:.98rem}.dropdown-user small{color:var(--muted);word-break:break-word}.dropdown button{width:100%;margin-bottom:8px}.dropdown button:last-child{margin-bottom:0}.content{display:grid;gap:18px}.loading-card,.panel,.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.loading-card{padding:28px}.error-banner{padding:14px 18px;background:#ff647c1f;border:1px solid rgba(255,100,124,.28);border-radius:16px;color:#ffcad5}.success-banner{padding:14px 18px;background:#6ae79a1f;border:1px solid rgba(106,231,154,.28);border-radius:16px;color:#c9f7d9}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.stat-card{padding:20px}.stat-card strong{display:block;margin-top:16px;font-size:1.8rem;letter-spacing:-.03em}.stat-card.blue strong{color:#90d7ff}.stat-card.red strong{color:#ff8d9d}.stat-card.dark strong{color:#fff}.panel{padding:22px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.admin-form-card .panel-head{align-items:flex-start}.breadcrumb{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.14em}.admin-back-button{white-space:nowrap;background:linear-gradient(135deg,#6de0ff33,#8c7dff33);border-color:#6de0ff47;box-shadow:0 10px 22px #6de0ff14}.admin-back-button:hover{transform:translateY(-1px);border-color:#6de0ff6b}.transactions-head{align-items:flex-end;flex-wrap:wrap;gap:18px}.transactions-controls{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px}.toolbar-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.view-switch{display:inline-flex;align-items:center;padding:4px;border-radius:16px;background:#ffffff0a;border:1px solid var(--line)}.view-switch .ghost{border:0;background:transparent;padding:10px 14px;min-width:88px}.view-switch .ghost.active{background:#6de0ff24;color:#dff9ff}.toolbar-control{display:grid;gap:6px;min-width:168px}.toolbar-control span{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding-left:4px}.toolbar-control input,.toolbar-control select,.stack input,.stack select{background:#ffffff08;color:var(--text);border:1px solid var(--line);border-radius:14px;padding:12px 14px;min-height:46px;outline:none;transition:.2s ease}.toolbar-control select,.stack select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:#0e1728}.toolbar-control input:hover,.toolbar-control select:hover,.toolbar-control input:focus,.toolbar-control select:focus,.stack input:focus,.stack select:focus{border-color:#6de0ff42;box-shadow:0 0 0 3px #6de0ff14}.stack select option,.toolbar select option{background:#0e1728;color:var(--text)}.toolbar-control-filter{min-width:220px}.toolbar-control-search{min-width:260px}.toolbar-control-size{min-width:140px}.primary,.ghost{border-radius:14px;padding:12px 16px;border:1px solid transparent;transition:.2s ease}.primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#07111d;font-weight:800}.ghost{background:#ffffff0a;color:var(--text);border-color:var(--line)}.ghost.danger{color:#ff98a7}.month-nav-button{width:42px;height:42px;padding:0;display:grid;place-items:center;font-size:1.25rem;position:relative}.month-nav-button.loading{color:transparent;pointer-events:none}.month-nav-button.loading:after{content:"";width:14px;height:14px;border-radius:999px;border:2px solid rgba(233,244,255,.35);border-top-color:#fff;animation:spin .7s linear infinite;position:absolute}.icon-action{width:46px;height:46px;border-radius:14px;border:1px solid rgba(109,224,255,.3);background:linear-gradient(135deg,#6de0ff33,#8c7dff33);color:var(--text);font-size:1.6rem;font-weight:700;line-height:1;display:grid;place-items:center}.grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stack{display:grid;gap:14px}.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-hint{margin:-2px 0 4px;color:var(--muted);font-size:.92rem}label{display:grid;gap:8px;color:#d8e4ff}.label-title{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.required-mark{color:#ffb0bc;font-weight:700}input[type=checkbox]{accent-color:var(--brand);width:16px;height:16px;margin:0;flex:0 0 16px}.inline-options{display:flex;flex-wrap:wrap;gap:14px}.checkbox-option{display:inline-flex;align-items:center;gap:8px}.field-set,fieldset{border:1px solid var(--line);border-radius:16px;padding:14px}.fieldset legend{padding:0 8px;color:var(--muted)}.category-columns{display:grid;gap:18px;margin-top:18px}.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:999px;background:#ffffff0d;border:1px solid var(--line)}.chip button{border:0;background:transparent;color:#ffacb8;padding:0}.transactions{display:grid;gap:12px}.calendar-card{display:grid;gap:16px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.calendar-weekday{text-align:center;color:var(--muted);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;padding-bottom:6px}.calendar-cell{min-height:160px;padding:12px;border-radius:18px;background:#ffffff08;border:1px solid var(--line);display:grid;gap:10px;align-content:start}.calendar-cell.blank{background:transparent;border-style:dashed;opacity:.35}.calendar-cell.drop-target{border-color:#6de0ff8c;background:#6de0ff14;box-shadow:inset 0 0 0 1px #6de0ff24;transform:translateY(-1px)}.calendar-day-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.calendar-day-head strong{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;border:1px solid transparent;font-size:1rem}.calendar-cell.today .calendar-day-head strong{background:#6de0ff2e;border-color:#6de0ff57;color:#dff8ff;box-shadow:inset 0 0 0 1px #ffffff0a}.calendar-day-head span{color:var(--muted);font-size:.82rem}.calendar-items{display:grid;gap:8px}.calendar-item{position:relative;z-index:1;display:grid;gap:4px;width:100%;height:58px;padding:8px 38px 8px 10px;border-radius:12px;border:1px solid transparent;background:#08111fb8;color:var(--text);text-align:left;cursor:pointer;transition:.18s ease}.calendar-item.menu-open{z-index:25}.calendar-overflow-button{width:100%;height:28px;border:1px dashed rgba(71,214,127,.55);border-radius:999px;background:#47d67f14;color:#c9f7d8;display:grid;place-items:center;cursor:pointer;transition:.18s ease}.calendar-overflow-button:hover{background:#47d67f29;border-color:#47d67fe0;transform:translateY(-1px)}.calendar-overflow-icon{width:22px;height:22px;border-radius:999px;background:#2bbf5b;color:#0b1a12;display:grid;place-items:center;font-size:1rem;font-weight:900;line-height:1;box-shadow:0 0 0 3px #2bbf5b29}.calendar-item-top{display:flex;align-items:center;gap:8px;min-width:0}.calendar-menu-button{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:8px;border:1px solid var(--line);background:#ffffff0f;color:var(--text);display:grid;place-items:center;line-height:1;cursor:pointer;z-index:2}.calendar-menu-button:hover{border-color:#6de0ff42;background:#6de0ff1f}.calendar-menu{position:absolute;top:34px;right:8px;min-width:150px;padding:8px;border-radius:14px;background:#0c1322fa;border:1px solid var(--line);box-shadow:var(--shadow);z-index:30}.calendar-menu button{width:100%;border:0;border-radius:10px;background:#ffffff0a;color:var(--text);padding:9px 10px;text-align:left}.calendar-menu button:hover{background:#6de0ff1f}.calendar-menu button.danger{color:#ffb0bc}.calendar-menu button.danger:hover{background:#ff647c1f}.calendar-status{width:8px;height:8px;border-radius:999px;flex:0 0 8px}.calendar-status.paid{background:#3acb7d}.calendar-status.pending{background:#ffc45e}.calendar-item strong{order:2;flex:1;min-width:0;font-size:.9rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-item .amount{order:1;margin-right:auto;font-size:.96rem;letter-spacing:-.02em;white-space:nowrap}.calendar-item.income{background:#3acb7d24;border-color:#3acb7d38}.calendar-item.expense{background:#ff647c24;border-color:#ff647c38}.calendar-overflow-modal{width:min(760px,100%)}.calendar-overflow-list{display:grid;gap:10px;padding-top:4px}.calendar-item-expanded{height:auto;min-height:66px;padding:10px 42px 10px 14px}.calendar-overflow-modal .calendar-item-expanded strong{white-space:normal;overflow:visible;text-overflow:initial}.calendar-overflow-modal .calendar-item-expanded .calendar-item-top{align-items:flex-start}.calendar-overflow-modal .calendar-item-expanded .amount{white-space:nowrap}.calendar-item:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.05)}.calendar-item.dragging{opacity:.45;transform:scale(.98);box-shadow:0 10px 28px #00000038}.calendar-item.moved-success{animation:move-success-pulse 1.4s ease;box-shadow:0 0 0 1px #6de0ff59,0 10px 26px #6de0ff1f}.calendar-item:disabled{opacity:.7;cursor:wait}.calendar-empty{color:var(--muted);font-size:.92rem}@keyframes move-success-pulse{0%{transform:translateY(0) scale(1);box-shadow:0 0 #6de0ff00}30%{transform:translateY(-1px) scale(1.01);box-shadow:0 0 0 4px #6de0ff2e}to{transform:translateY(0) scale(1);box-shadow:0 0 #6de0ff00}}.transaction-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px;border-radius:18px;background:#ffffff08;border:1px solid var(--line)}.transaction-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.badge{border-radius:999px;padding:6px 10px;font-size:.8rem;font-weight:700}.badge.income{background:#3acb7d24;color:#8ef0b5}.badge.expense{background:#ff647c24;color:#ffb0bc}.amount{font-weight:800;letter-spacing:-.02em}.pagination-bar{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--muted)}.pagination-actions{display:flex;align-items:center;gap:10px}.chart-card{display:grid;gap:14px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bell-ring{0%{transform:rotate(0)}15%{transform:rotate(-14deg)}30%{transform:rotate(12deg)}45%{transform:rotate(-10deg)}60%{transform:rotate(8deg)}75%{transform:rotate(-4deg)}to{transform:rotate(0)}}.chart{width:100%;height:auto}.grid line{stroke:#ffffff14;stroke-width:1}.line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.line.income,.dot.income{stroke:var(--income);fill:var(--income)}.line.expense,.dot.expense{stroke:var(--expense);fill:var(--expense)}.months text{fill:var(--muted);font-size:12px}.chart-legend{display:flex;gap:16px;color:var(--muted)}.legend{display:inline-block;width:12px;height:12px;border-radius:999px;margin-right:8px}.legend.income{background:var(--income)}.legend.expense{background:var(--expense)}.admin-chart-card{display:grid;gap:18px}.admin-chart-body{display:grid;grid-template-columns:88px minmax(0,1fr);gap:14px;align-items:stretch}.admin-chart-axis{display:grid;grid-auto-rows:1fr;align-items:end;justify-items:end;padding:2px 0 28px;color:var(--muted);font-size:.82rem}.admin-chart-axis span{transform:translateY(6px)}.admin-chart-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;align-items:end;min-height:260px}.admin-chart-column{display:grid;gap:10px;justify-items:center;align-items:end}.admin-chart-bars{display:flex;align-items:end;gap:10px;height:190px}.admin-chart-bar-group{display:grid;justify-items:center;align-items:end;gap:6px;min-width:34px}.admin-chart-bar{width:18px;border-radius:999px 999px 4px 4px}.admin-chart-bar.income{background:linear-gradient(180deg,#4fa3ff,#1b73ff)}.admin-chart-bar.expense{background:linear-gradient(180deg,#ff7d8d,#e42f4d)}.admin-chart-label{color:var(--muted);font-size:.8rem}.admin-chart-bar-value{font-size:.72rem;line-height:1;white-space:nowrap;color:var(--muted);transform:translateY(2px)}.admin-chart-bar-value.income{color:#9bc8ff}.admin-chart-bar-value.expense{color:#ffb0bd}.admin-chart-legend{margin-top:0}@media(max-width:1180px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.summary-grid,.grid-two{grid-template-columns:1fr}}@media(max-width:760px){.workspace{padding:18px}.topbar,.toolbar,.panel-head,.transaction-row{flex-direction:column;align-items:stretch}.split{grid-template-columns:1fr}.transaction-meta{justify-content:flex-start}}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px}.auth-card{width:min(560px,100%);padding:30px;border-radius:28px;border:1px solid var(--line);background:#0e1728eb;box-shadow:var(--shadow);display:grid;gap:22px}.auth-form{gap:16px}.auth-form input{background:#ffffff08;color:var(--text);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.auth-form label.inline-options{display:flex;align-items:center;gap:10px}.auth-actions{display:flex;flex-wrap:wrap;gap:12px}.auth-actions .ghost,.auth-actions .auth-google{flex:1 1 180px;text-align:center;text-decoration:none}.modal-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:#030812b8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.modal-dialog{width:min(760px,100%);max-height:min(90vh,920px);overflow:auto}.notification-modal{width:min(620px,100%)}.recurrence-scope-modal{width:min(520px,100%)}.notification-modal-body{display:grid;gap:18px}.recurrence-scope-content{display:grid;gap:12px;color:var(--text);line-height:1.6}.recurrence-scope-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}.recurrence-scope-actions .ghost,.recurrence-scope-actions .primary{min-width:190px}.notification-modal-description{color:var(--text);line-height:1.6;white-space:pre-wrap}.notification-modal-meta{display:flex;flex-wrap:wrap;gap:12px;color:var(--muted);font-size:.92rem}.modal-dialog .panel-head{position:sticky;top:0;padding-top:0;background:linear-gradient(180deg,#0e1728fa,#0e1728eb);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:1}
