:root{--bg:#f5f3ef;--surface:#fff;--s2:#f0ede8;--border:#e2ddd6;--text:#1a1814;--muted:#8a8278;--green:#2a7a4b;--red:#c0392b;--amber:#b5700c;--blue:#1a5f7a;--purple:#6c3483;--radius:0.625rem;--mono:"DM Mono","Courier New",monospace;--sans:"DM Sans",sans-serif;}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;font-size:0.875rem;}
#loading{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:400;gap:0.75rem;}
.spin{width:1.375rem;height:1.375rem;border:2px solid var(--border);border-top-color:var(--text);border-radius:50%;animation:spin .7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}
#loading p{font-size:0.75rem;color:var(--muted);font-family:var(--mono);}
#auth-screen{position:fixed;inset:0;background:var(--bg);display:none;align-items:center;justify-content:center;z-index:300;padding:1.25rem;}
.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:0.875rem;padding:2rem 1.75rem;width:100%;max-width:min(95vw, 24rem);}
.auth-logo{font-family:var(--mono);font-size:0.75rem;color:var(--muted);margin-bottom:1.5rem;}
.auth-title{font-size:1.25rem;font-weight:500;margin-bottom:4px;}
.auth-sub{font-size:0.81rem;color:var(--muted);margin-bottom:1.25rem;}
.auth-tabs{display:flex;gap:0;margin-bottom:1.25rem;border-bottom:1px solid var(--border);}
.auth-tab{flex:1;padding:0.5rem;border:none;background:none;cursor:pointer;font-size:0.81rem;color:var(--muted);border-bottom:2px solid transparent;transition:all .15s;font-family:var(--sans);}
.auth-tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:500;}
.auth-err{background:#fde8e8;color:var(--red);border-radius:0.44rem;padding:0.56rem 0.75rem;font-size:0.75rem;margin-bottom:0.875rem;display:none;}
.auth-err.show{display:block;}
.auth-msg{background:#d4edda;color:var(--green);border-radius:0.44rem;padding:0.56rem 0.75rem;font-size:0.75rem;margin-bottom:0.875rem;display:none;}
.auth-msg.show{display:block;}
#sync-dot{position:fixed;bottom:0.625rem;left:0.875rem;z-index:201;font-size:0.69rem;font-family:var(--mono);display:flex;align-items:center;gap:0.31rem;color:var(--muted);background:var(--bg);padding:3px 0.5rem;border-radius:1.25rem;border:1px solid var(--border);}
.dot{width:0.44rem;height:0.44rem;border-radius:50%;background:var(--border);}
.dot.online{background:var(--green);}.dot.syncing{background:var(--amber);animation:pulse .7s infinite alternate;}.dot.error{background:var(--red);}
@keyframes pulse{from{opacity:1}to{opacity:.3}}
nav{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border);padding:0 0.5rem;display:flex;overflow-x:auto;align-items:center;}
nav::-webkit-scrollbar{display:none;}
nav button[data-tab]{flex-shrink:0;padding:0.69rem 0.69rem;border:none;background:none;cursor:pointer;font-family:var(--sans);font-size:0.75rem;color:var(--muted);border-bottom:2px solid transparent;transition:all .15s;white-space:nowrap;}
nav button[data-tab].active{color:var(--text);border-bottom-color:var(--text);font-weight:500;}
.logo{font-family:var(--mono);font-size:0.69rem;padding:0.69rem 0.625rem 0.69rem 0;color:var(--muted);align-self:center;flex-shrink:0;}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:0.375rem;flex-shrink:0;padding:0 4px;}
.nav-right span{font-size:0.69rem;color:var(--muted);font-family:var(--mono);}
.notif-bell{position:relative;padding:0.375rem 0.5rem;cursor:pointer;border:none;background:none;font-size:1rem;color:var(--muted);border-radius:0.375rem;transition:background .15s;line-height:1;}
.notif-bell:hover{background:var(--s2);}
.notif-badge{position:absolute;top:2px;right:2px;background:var(--red);color:#fff;font-size:0.56rem;font-family:var(--mono);border-radius:0.625rem;min-width:0.875rem;height:0.875rem;display:flex;align-items:center;justify-content:center;padding:0 3px;}
main{max-width:min(95vw, 42rem);margin:0 auto;padding:1.125rem 0.875rem 5rem;}
.section{display:none;}.section.active{display:block;}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:0.625rem;}
.card-sm{padding:0.69rem 0.81rem;}
.hero{background:var(--text);color:var(--bg);border-radius:var(--radius);padding:1.375rem;margin-bottom:0.625rem;}
.hero-label{font-size:0.69rem;opacity:.6;letter-spacing:.05em;text-transform:uppercase;margin-bottom:0.31rem;font-family:var(--mono);}
.hero-amount{font-family:var(--mono);font-size:2rem;font-weight:500;letter-spacing:-.02em;line-height:1;margin-bottom:1rem;}
.progress-label{display:flex;justify-content:space-between;font-size:0.69rem;opacity:.5;margin-bottom:0.31rem;font-family:var(--mono);}
.progress-bar{height:3px;background:rgba(255,255,255,.2);border-radius:2px;overflow:hidden;}
.progress-fill{height:100%;background:#fff;border-radius:2px;transition:width .6s;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0.625rem;margin-bottom:0.625rem;}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.625rem;margin-bottom:0.625rem;}
.metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:0.81rem;}
.metric-label{font-size:0.625rem;color:var(--muted);margin-bottom:3px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;}
.metric-value{font-family:var(--mono);font-size:1rem;font-weight:500;}
.metric-sub{font-size:0.625rem;color:var(--muted);margin-top:2px;}
.row{display:flex;justify-content:space-between;align-items:center;padding:0.5rem 0;border-bottom:1px solid var(--border);}
.row:last-child{border-bottom:none;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.625rem;margin-bottom:0.875rem;}
@media(max-width:35rem){.grid2{grid-template-columns:1fr;}.grid3{grid-template-columns:1fr 1fr;}.form-grid{grid-template-columns:1fr;}}
.field{display:flex;flex-direction:column;gap:4px;}
.field label{font-size:0.625rem;color:var(--muted);font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;}
.field input,.field select,.field textarea{padding:0.5rem 0.625rem;border:1px solid var(--border);border-radius:0.44rem;font-family:var(--sans);font-size:0.81rem;background:var(--surface);color:var(--text);outline:none;transition:border .15s;}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--text);}
.field.full{grid-column:1/-1;}
.field textarea{resize:vertical;min-height:3.5rem;}
.btn{padding:0.5rem 0.94rem;border-radius:0.44rem;font-family:var(--sans);font-size:0.81rem;cursor:pointer;transition:all .15s;font-weight:500;border:1px solid var(--border);background:none;color:var(--text);}
.btn:hover{background:var(--s2);}
.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text);}
.btn-primary:hover{opacity:.88;}
.btn-sm{padding:4px 0.625rem;font-size:0.69rem;}
.btn-danger{color:var(--red);border-color:transparent;padding:3px 0.44rem;font-size:0.75rem;}
.btn-danger:hover{background:#fde8e8;border-color:var(--red);}
.btn-green{color:var(--green);border-color:var(--green);}
.btn-green:hover{background:#d4edda;}
.btn-row{display:flex;gap:0.5rem;flex-wrap:wrap;margin-top:4px;}
.sec-hdr{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:0.81rem;}
.sec-title{font-family:var(--mono);font-size:0.625rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);}
.sec-total{font-family:var(--mono);font-size:1.31rem;font-weight:500;}
.badge{display:inline-block;padding:2px 0.44rem;border-radius:1.25rem;font-size:0.625rem;font-family:var(--mono);}
.badge-green{background:#d4edda;color:var(--green);}.badge-red{background:#fde8e8;color:var(--red);}
.badge-amber{background:#fef3cd;color:var(--amber);}.badge-blue{background:#d6eaf8;color:var(--blue);}
.badge-gray{background:var(--s2);color:var(--muted);}.badge-purple{background:#e8daef;color:var(--purple);}
.preview{background:var(--s2);border-radius:0.5rem;padding:0.69rem 0.81rem;margin-bottom:0.81rem;}
.preview-row{display:flex;justify-content:space-between;font-size:0.81rem;padding:2px 0;}
.preview-divider{border:none;border-top:1px solid var(--border);margin:0.375rem 0;}
.preview-total{font-weight:500;}
.inv-item{padding:0.69rem 0;border-bottom:1px solid var(--border);}
.inv-item:last-child{border-bottom:none;}
.inv-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px;}
.inv-name{font-size:0.81rem;font-weight:500;max-width:65%;line-height:1.3;}
.inv-qty{font-family:var(--mono);font-size:0.875rem;font-weight:500;}
.toast{position:fixed;bottom:1.375rem;left:50%;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:0.56rem 1.125rem;border-radius:1.25rem;font-size:0.81rem;z-index:999;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap;}
.toast.show{opacity:1;}
.empty{text-align:center;padding:1.75rem 1rem;color:var(--muted);font-size:0.81rem;}
.toggle-check{display:flex;align-items:center;gap:0.31rem;font-size:0.75rem;color:var(--muted);cursor:pointer;}
.toggle-check input{accent-color:var(--text);}
.filter-bar{display:flex;gap:0.5rem;align-items:center;margin-bottom:0.81rem;flex-wrap:wrap;}
.filter-bar label{font-size:0.625rem;color:var(--muted);font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;}
.filter-bar input[type=month]{padding:0.31rem 0.56rem;border:1px solid var(--border);border-radius:0.44rem;font-size:0.75rem;background:var(--surface);color:var(--text);outline:none;}
.chart-wrap{position:relative;margin-top:4px;}
.chip{display:inline-flex;align-items:center;gap:3px;padding:3px 0.56rem 3px 0.625rem;background:var(--s2);border:1px solid var(--border);border-radius:1.25rem;font-size:0.69rem;margin:2px;}
.chip button{border:none;background:none;cursor:pointer;color:var(--muted);font-size:0.81rem;line-height:1;padding:0 0 0 2px;}
.chip button:hover{color:var(--red);}
.divider{border:none;border-top:1px solid var(--border);margin:0.75rem 0;}
.collapsible-body{display:none;}.collapsible-body.open{display:block;}
.edit-panel{display:none;background:var(--s2);border-radius:0.5rem;padding:0.875rem;margin-top:0.625rem;}
.edit-panel.open{display:block;}
.cost-total{display:flex;justify-content:space-between;font-size:0.81rem;font-weight:500;padding-top:0.5rem;border-top:1px solid var(--border);margin-top:4px;}
.asset-row{display:flex;justify-content:space-between;align-items:center;padding:0.625rem 0;border-bottom:1px solid var(--border);}
.asset-row:last-child{border-bottom:none;}
.asset-right{text-align:right;}
.asset-value{font-family:var(--mono);font-size:0.875rem;font-weight:500;}
.asset-change{font-size:0.69rem;font-family:var(--mono);margin-top:1px;}
.price-note{opacity:.5;font-size:0.625rem;color:var(--muted);font-family:var(--mono);}
.debt-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:0.625rem;overflow:hidden;}
.debt-header{display:flex;justify-content:space-between;align-items:flex-start;padding:0.875rem 0.875rem 0;}
.debt-name{font-size:0.875rem;font-weight:500;margin-top:4px;}
.debt-meta{font-size:0.69rem;color:var(--muted);margin-top:2px;}
.debt-amounts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.5rem;padding:0.75rem 0.875rem;}
.debt-amount-box{background:var(--s2);border-radius:0.44rem;padding:0.5rem 0.625rem;}
.debt-amount-label{font-size:0.625rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-family:var(--mono);}
.debt-amount-value{font-family:var(--mono);font-size:0.81rem;font-weight:500;margin-top:2px;}
.debt-progress{height:0.25rem;background:var(--border);border-radius:2px;margin:0 0.875rem 0.75rem;overflow:hidden;}
.debt-progress-fill{height:100%;border-radius:2px;transition:width .4s;}
.debt-actions{display:flex;gap:0.5rem;padding:0 0.875rem 0.75rem;flex-wrap:wrap;}
.debt-expand{display:none;padding:0.875rem;border-top:1px solid var(--border);}
.debt-expand.open{display:block;}
.payment-row{display:flex;justify-content:space-between;align-items:center;padding:0.375rem 0;border-bottom:1px solid var(--border);font-size:0.75rem;}
.payment-row:last-child{border-bottom:none;}
.notif-item{display:flex;gap:0.625rem;padding:0.75rem 0;border-bottom:1px solid var(--border);align-items:flex-start;}
.notif-item:last-child{border-bottom:none;}
.notif-icon{width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0.875rem;flex-shrink:0;margin-top:1px;}
.notif-body{flex:1;}
.notif-text{font-size:0.81rem;line-height:1.4;}
.notif-time{font-size:0.625rem;color:var(--muted);font-family:var(--mono);margin-top:3px;}
.notif-unread{background:var(--s2);}
.friend-row{display:flex;justify-content:space-between;align-items:center;padding:0.625rem 0;border-bottom:1px solid var(--border);}
.friend-row:last-child{border-bottom:none;}
.friend-avatar{width:2rem;height:2rem;border-radius:50%;background:var(--s2);display:flex;align-items:center;justify-content:center;font-size:0.75rem;font-weight:500;color:var(--muted);flex-shrink:0;}
.txt-green{color:var(--green);}.txt-red{color:var(--red);}.txt-muted{color:var(--muted);}
.txt-blue{color:var(--blue);}.txt-purple{color:var(--purple);}
.mb8{margin-bottom:0.5rem;}.mb14{margin-bottom:0.875rem;}.fw500{font-weight:500;}.mono{font-family:var(--mono);}

body.dark{--bg:#111210;--surface:#1a1917;--s2:#232220;--border:#2e2c29;--text:#f0ede8;--muted:#6b6760;--green:#3a9b60;--red:#d94f3d;--amber:#c97f18;--blue:#2a7fa8;--purple:#8b45a8;}
body.dark .hero{background:#f0ede8;color:#1a1814;}
body.dark .auth-card{background:var(--surface);}
body.dark nav{background:var(--surface);}
body.dark .card{background:var(--surface);}
body.dark .metric{background:var(--surface);}
body.dark .preview{background:var(--s2);}
body.dark .edit-panel{background:var(--s2);}
body.dark .debt-card{background:var(--surface);}
body.dark .debt-amount-box{background:var(--s2);}
body.dark .auth-screen{background:var(--bg);}
body.dark #loading{background:var(--bg);}
body.dark .field input,body.dark .field select,body.dark .field textarea{background:var(--s2);color:var(--text);border-color:var(--border);}
body.dark #sync-dot{background:var(--s2);border-color:var(--border);}
body.dark .notif-unread{background:var(--s2);}
body.dark .toast{background:var(--text);color:var(--bg);}

.negocio-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:0.75rem;overflow:hidden;}
.negocio-header{padding:0.875rem 1rem;display:flex;justify-content:space-between;align-items:flex-start;}
.negocio-icon{width:2.375rem;height:2.375rem;border-radius:0.625rem;display:flex;align-items:center;justify-content:center;font-size:1.125rem;flex-shrink:0;margin-right:0.625rem;}
.negocio-title{font-size:0.875rem;font-weight:500;}
.negocio-sub{font-size:0.69rem;color:var(--muted);margin-top:2px;}
.negocio-metrics{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.5rem;padding:0 1rem 0.75rem;}
.negocio-metric{background:var(--s2);border-radius:0.5rem;padding:0.5rem 0.625rem;}
.negocio-metric-label{font-size:0.625rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-family:var(--mono);}
.negocio-metric-value{font-family:var(--mono);font-size:0.81rem;font-weight:500;margin-top:2px;}
.negocio-actions{padding:0 1rem 0.75rem;display:flex;gap:0.5rem;flex-wrap:wrap;}

.pin-dot{width:0.875rem;height:0.875rem;border-radius:50%;border:2px solid var(--border);transition:background .15s;}
.pin-dot.filled{background:var(--text);border-color:var(--text);}
.pin-btn{padding:1rem;border:1px solid var(--border);border-radius:0.625rem;background:var(--surface);font-family:var(--sans);font-size:1.25rem;cursor:pointer;transition:all .1s;color:var(--text);}
.pin-btn:hover{background:var(--s2);}
.pin-btn:active{transform:scale(0.94);}

/* Realized / Unrealized */
.realized-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.625rem;margin-bottom:0.625rem;}
.realized-card{border-radius:var(--radius);padding:0.875rem 1rem;position:relative;overflow:hidden;}
.realized-card.real{background:linear-gradient(135deg,#1a5f2a 0%,#2a7a4b 100%);color:#fff;}
.realized-card.unreal{background:var(--surface);border:1px dashed var(--border);}
.realized-label{font-size:0.625rem;text-transform:uppercase;letter-spacing:.06em;font-family:var(--mono);opacity:0.8;margin-bottom:2px;}
.realized-amount{font-size:1.125rem;font-weight:600;font-family:var(--mono);}
.realized-sub{font-size:0.625rem;opacity:0.7;margin-top:3px;font-family:var(--mono);}
.realized-breakdown{margin-top:6px;font-size:0.6rem;opacity:0.7;font-family:var(--mono);line-height:1.5;}

/* Weekly summary */
.weekly-summary{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:0.625rem;}
/* Dashboard drag-and-drop */
.dash-block{position:relative;}
.dash-block.db-hidden{display:none;}
.dw-row{display:flex;align-items:center;gap:0.5rem;padding:0.35rem 0.5rem;border-radius:0.375rem;background:var(--surface);border:1px solid var(--border);cursor:grab;user-select:none;touch-action:none;}
.dw-row:active{cursor:grabbing;}
.dw-row.drag-over{border-color:var(--text);background:var(--s2);}
.dw-row.dragging{opacity:0.4;}
.dw-handle{font-size:0.9rem;color:var(--muted);flex-shrink:0;cursor:grab;}
.dw-check{width:1rem;height:1rem;accent-color:var(--text);flex-shrink:0;cursor:pointer;}
.dw-label{font-size:0.8rem;flex:1;}
.weekly-summary .ws-title{font-size:0.75rem;font-weight:600;margin-bottom:0.5rem;display:flex;align-items:center;gap:0.375rem;}
.weekly-summary .ws-row{display:flex;justify-content:space-between;font-size:0.75rem;padding:3px 0;border-bottom:1px solid var(--s2);}
.weekly-summary .ws-row:last-child{border-bottom:none;}
.weekly-summary .ws-trend{font-size:0.625rem;color:var(--muted);margin-top:6px;font-style:italic;}

/* Negocio evolution chart */
.negocio-chart-wrap{padding:0 1rem 0.75rem;}
.negocio-chart-wrap canvas{width:100%;height:7.5rem;}

/* Accrual badge */
.badge-blue{background:rgba(26,95,122,0.15);color:#1a5f7a;}
/* 50/30/20 Rule */
.rule-bar{height:0.5rem;border-radius:0.25rem;overflow:hidden;display:flex;margin:0.375rem 0;}
.rule-bar div{height:100%;transition:width .4s;}
.rule-legend{display:flex;gap:0.75rem;flex-wrap:wrap;margin-top:0.375rem;}
.rule-legend-item{display:flex;align-items:center;gap:0.25rem;font-size:0.69rem;font-family:var(--mono);}
.rule-dot{width:0.5rem;height:0.5rem;border-radius:50%;flex-shrink:0;}
.rule-alert{font-size:0.69rem;color:var(--red);margin-top:0.25rem;font-family:var(--mono);}

/* Tags */
.tag{display:inline-flex;align-items:center;gap:2px;padding:1px 0.44rem;background:var(--s2);border:1px solid var(--border);border-radius:1rem;font-size:0.6rem;font-family:var(--mono);color:var(--muted);margin:1px 2px;}
.tag-input-wrap{display:flex;flex-wrap:wrap;gap:4px;border:1px solid var(--border);border-radius:0.44rem;padding:0.375rem 0.5rem;min-height:2.25rem;align-items:center;cursor:text;background:var(--surface);transition:border .15s;}
.tag-input-wrap:focus-within{border-color:var(--text);}
.tag-input-wrap input{border:none;outline:none;font-size:0.81rem;background:transparent;color:var(--text);min-width:5rem;flex:1;padding:0;font-family:var(--sans);}
.tag-remove{border:none;background:none;cursor:pointer;color:var(--muted);font-size:0.75rem;padding:0 0 0 2px;line-height:1;}
.tag-remove:hover{color:var(--red);}

/* Forecast */
.forecast-row{display:flex;justify-content:space-between;align-items:center;padding:0.375rem 0;border-bottom:1px solid var(--s2);font-size:0.75rem;}
.forecast-row:last-child{border-bottom:none;}
.forecast-neg{color:var(--red);font-weight:500;}
.forecast-pos{color:var(--green);}
.forecast-event{font-size:0.625rem;color:var(--muted);font-family:var(--mono);}
.forecast-scroll{max-height:25rem;overflow-y:auto;}

/* Cost per hour */
.cost-hour{font-size:0.6rem;color:var(--amber);font-family:var(--mono);margin-top:1px;}
