:root{--bg: #eaf6ff;--panel: #f8fcff;--ink: #102033;--line: #102033;--accent: #2374e1;--accent-2: #10b981;--danger: #d64550;--shadow: 6px 6px 0 #102033;--radius: 14px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;max-width:100%;font-family:Trebuchet MS,Segoe UI,sans-serif;color:var(--ink);background:radial-gradient(circle at 12% 16%,#b9dcff 0 8%,transparent 8.2%),radial-gradient(circle at 92% 82%,#8ec8ff 0 9%,transparent 9.2%),linear-gradient(165deg,#eaf6ff,#d8ecff 48%,#d2f3f0)}body{overflow-x:auto}button,input,textarea{font:inherit;color:inherit;border:none;outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:0;background:none}.app-shell{min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}.main-nav{display:grid;background:#eef7ff;border:3px solid var(--line);box-shadow:var(--shadow);z-index:20}.main-nav.top{grid-template-columns:repeat(7,1fr);position:sticky;top:10px;width:min(1120px,calc(100% - 20px));margin:10px auto}.main-nav.bottom{grid-template-columns:repeat(7,minmax(0,1fr));position:fixed;left:10px;right:10px;bottom:10px}.nav-btn{padding:12px 4px;border-right:2px solid var(--line);background:transparent;font-weight:800;cursor:pointer}.nav-btn:last-child{border-right:0}.nav-btn.active{background:var(--accent);color:#fff}.main-area{width:min(1120px,calc(100% - 20px));margin:0 auto 20px}.main-area.mobile-pad{padding-bottom:94px}.page-content{display:grid;gap:14px}.fade-in{animation:in .3s ease}@keyframes in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card{border:3px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--panel);overflow:visible}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;border-bottom:3px solid var(--line);flex-wrap:wrap}.card-head h3{margin:0}.card-body{padding:14px}.app-btn{border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);padding:10px 12px;font-weight:800;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.app-btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line)}.app-btn:disabled{cursor:not-allowed;opacity:.5}.app-btn-solid{background:var(--accent);color:#fff}.app-btn-ghost{background:#fff}.app-btn-danger{background:var(--danger);color:#fff}.app-input,.app-textarea,.dropdown-trigger,.config-key-box,.picker-trigger{width:100%;border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);padding:10px;background:#fff}.picker-trigger{text-align:left;font-weight:700;cursor:pointer}.config-key-box{font-weight:700;background:#eef7ff}.app-textarea{min-height:92px;resize:vertical}.dropdown{position:relative}.dropdown-trigger{display:flex;justify-content:space-between;align-items:center;cursor:pointer}.dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;border:3px solid var(--line);box-shadow:var(--shadow);background:#f4fbff;z-index:200}.dropdown-menu-up{top:auto;bottom:calc(100% + 4px)}.dropdown-item{width:100%;text-align:left;padding:10px;cursor:pointer;border-bottom:2px solid var(--line)}.dropdown-item:last-child{border-bottom:none}.dropdown-item.active,.dropdown-item:hover{background:#d9ecff}.picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000061;display:grid;place-items:center;z-index:120}.picker-panel{width:min(420px,calc(100% - 20px));border:3px solid var(--line);box-shadow:var(--shadow);background:#fff;padding:10px}.month-panel{width:min(400px,calc(100% - 20px))}.picker-head,.picker-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}.picker-foot{margin-top:10px;justify-content:flex-end}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:8px}.week-head span{text-align:center;font-weight:800}.day-cell{border:2px solid var(--line);background:#fff;min-height:34px;cursor:pointer;font-weight:700}.day-cell.empty{border-style:dashed;background:#f5f7fb;cursor:default}.day-cell.today{background:#d7f7e9}.day-cell.active{background:var(--accent);color:#fff}.month-grid{margin-top:10px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.month-cell{border:2px solid var(--line);background:#fff;min-height:42px;font-weight:700;cursor:pointer}.month-cell.active{background:var(--accent);color:#fff}.caret{transition:transform .2s ease}.caret.open{transform:rotate(180deg)}.segmented{display:flex;border:3px solid var(--line);box-shadow:3px 3px 0 var(--line)}.segment-item{flex:1;padding:10px;border-right:2px solid var(--line);background:#fff;font-weight:700;cursor:pointer}.segment-item:last-child{border-right:0}.segment-item.active{background:var(--accent-2);color:#fff}.row-gap{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row-wrap{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.row-between{display:flex;justify-content:space-between;align-items:center}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.toolbar-grid{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:8px;width:min(980px,100%)}.list{display:grid;gap:10px}.list-item{display:flex;justify-content:space-between;gap:12px;border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);padding:12px;background:#fff}.list-item h4,.list-item p{margin:0}.list-item p{margin-top:4px}.income-text{color:#078f52}.expense-text{color:#c22330}.balance-text{color:#1f66e5}.overview-row,.overview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.overview-row{grid-template-columns:repeat(2,1fr)}.metric{border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);background:#fff;padding:10px;display:grid;gap:6px}.metric strong{font-size:20px}.pagination{margin-top:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.jump-box{display:flex;gap:8px;align-items:center}.jump-box .app-input{width:90px}.chart-box{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden}.line-svg{width:100%;min-width:0;border:3px solid var(--line);background:#fff;display:block}.axis{stroke:var(--line);stroke-width:2}.axis-label{font-size:12px}.line-income,.line-expense{fill:none;stroke-width:3}.line-income{stroke:#0f9d58}.line-expense{stroke:#d72638}.dot-income{fill:#0f9d58}.dot-expense{fill:#d72638}.chart-legend{display:flex;gap:12px;margin-top:8px;align-items:center;flex-wrap:wrap}.legend{padding:4px 10px;border:2px solid var(--line);font-weight:700}.legend.income{background:#b7f3d6}.legend.expense{background:#ffb6b6}.pie-wrap h4{margin:0 0 8px}.pie-layout{display:flex;align-items:flex-start;gap:14px}.pie-svg{width:100%;max-width:260px;border:3px solid var(--line);background:#fff}.pie-legend{display:grid;gap:6px}.pie-item{display:flex;align-items:center;gap:8px}.swatch{width:12px;height:12px;border:2px solid var(--line)}.c0{fill:#5c95ff;background:#5c95ff}.c1{fill:#4ecdc4;background:#4ecdc4}.c2{fill:#ffd166;background:#ffd166}.c3{fill:#8a73ff;background:#8a73ff}.c4{fill:#ff7f8f;background:#ff7f8f}.c5{fill:#83d483;background:#83d483}.form-grid{display:grid;grid-template-columns:120px 1fr;gap:8px;align-items:center}.config-grid{display:grid;gap:10px;margin-top:10px}.config-item{display:grid;gap:8px;grid-template-columns:1fr 1fr}.status-tag{display:inline-flex;align-items:center;padding:4px 8px;border:2px solid var(--line);box-shadow:2px 2px 0 var(--line);font-weight:700}.tag-ok{background:#b7f3d6}.tag-stop{background:#ffb6b6}.tag-neutral{background:#edf3fa}.console-box{border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);background:#0b1b2e;color:#8ef6b0;padding:10px;min-height:220px;max-height:420px;overflow:auto;font-family:Consolas,monospace;white-space:pre-wrap}.console-box p{margin:0}.top-gap{margin-top:8px}.auth-page{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-box{width:min(460px,100%);border:3px solid var(--line);box-shadow:var(--shadow);background:var(--panel);padding:18px;display:grid;gap:12px}.auth-box h1{margin:0;font-size:36px;letter-spacing:1px}.auth-box p{margin:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000061;display:grid;place-items:center;z-index:50;animation:fade .24s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal-panel{width:min(660px,calc(100% - 24px));border:3px solid var(--line);box-shadow:var(--shadow);background:#fff;animation:pop .24s ease}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header,.modal-footer{padding:10px 12px;border-bottom:3px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}.modal-footer{border-bottom:none;border-top:3px solid var(--line);justify-content:flex-end}.modal-header h3{margin:0}.modal-body{padding:12px}.toast-wrap{position:fixed;top:16px;right:16px;display:grid;gap:8px;z-index:80;pointer-events:none}.toast{border:3px solid var(--line);box-shadow:var(--shadow);background:#fff;padding:8px 12px;font-weight:700}.toast-success{background:#b7f3d6}.toast-error{background:#ffb6b6}.cycle-item{align-items:stretch}.cycle-meta{display:grid;gap:6px}.cycle-actions{min-width:420px;align-self:flex-end;justify-content:flex-end}.task-dropdown{min-width:140px}@media (max-width: 1024px){.toolbar-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}.two-col{grid-template-columns:1fr}}@media (max-width: 767px){.nav-btn{padding:10px 2px;font-size:12px}.card-head{flex-direction:column;align-items:flex-start}.toolbar-grid,.overview-grid,.overview-row,.config-item,.form-grid{grid-template-columns:1fr}.list-item{flex-direction:column}.row-wrap{justify-content:flex-start}.cycle-actions{min-width:0;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px;align-self:auto}.task-dropdown,.cycle-actions .app-btn{width:100%}.pie-layout{flex-direction:column;align-items:flex-start}.pie-legend{margin-top:8px}.pagination{width:100%;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;padding-bottom:4px;-webkit-overflow-scrolling:touch}.jump-box{flex-shrink:0}.toast-wrap{top:10px;right:8px;left:8px}}.bills-page,.bills-page .card,.bills-page .card-body,.bills-page .list,.bills-page .list-item,.bills-page .toolbar-grid,.bills-page .pagination{min-width:0;max-width:100%}.bills-page .list-item>div{min-width:0}.bills-page .list-item h4,.bills-page .list-item p{word-break:break-word}
