/* ===== APU · estilo NOCTURA HUNTER (luna / plata / oro + HUD) ===== */
:root{
  --black:#08080A; --graphite:#141418; --anthracite:#1c1c22; --charcoal:#33333b;
  --bone:#D8D4CE; --ivory:#EDEAE5; --muted:#7E7F86;
  --silver:#B0B3BC; --silver-rgb:176,179,188; --gold:#B8B0A4;
  --line:rgba(216,212,206,.10); --line2:rgba(216,212,206,.18);
  --glass:rgba(22,22,27,.72);
  --ok:#8FB996; --warn:#CDA24E; --bad:#C97A6B;
  --disp:'Cormorant Garamond',Georgia,serif;
  --body:'Inter',system-ui,sans-serif;
  --hud:'Orbitron',var(--body); --hud2:'Rajdhani',var(--body); --mono:'Share Tech Mono',monospace;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--black);color:var(--bone);font:400 15px/1.6 var(--body);-webkit-font-smoothing:antialiased;
  position:relative;overflow-x:hidden}
/* luna que respira */
body::before{content:"";position:fixed;top:-22vh;right:-12vw;width:60vw;height:60vw;max-width:680px;max-height:680px;border-radius:50%;
  background:radial-gradient(circle at 38% 38%, rgba(var(--silver-rgb),.16), rgba(var(--silver-rgb),.05) 42%, transparent 64%);
  filter:blur(8px);pointer-events:none;z-index:0;animation:breathe 14s var(--ease) infinite}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(120% 80% at 80% -10%, rgba(var(--silver-rgb),.05), transparent 55%)}
@keyframes breathe{0%,100%{opacity:.85}50%{opacity:1}}
#login,#app{position:relative;z-index:1}
a{color:var(--silver);text-decoration:none} a:hover{color:var(--ivory)}
.hide{display:none!important}
::selection{background:rgba(var(--silver-rgb),.25)}
::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--charcoal);border-radius:9px}

input,select,textarea{width:100%;background:rgba(8,8,10,.5);border:1px solid var(--line);border-radius:10px;color:var(--ivory);
  padding:11px 13px;font:400 14px var(--body);transition:border-color .25s,box-shadow .25s}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--line2);box-shadow:0 0 0 3px rgba(var(--silver-rgb),.07)}
label,.l{font:600 10px var(--hud2);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;border:1px solid var(--line2);border-radius:10px;
  background:rgba(var(--silver-rgb),.06);color:var(--ivory);font:500 13px var(--body);letter-spacing:.02em;padding:11px 16px;
  transition:box-shadow .4s var(--ease),border-color .3s,transform .15s,background .3s}
.btn:hover{border-color:rgba(var(--silver-rgb),.5);box-shadow:0 0 26px rgba(var(--silver-rgb),.14)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:linear-gradient(180deg,rgba(var(--silver-rgb),.18),rgba(var(--silver-rgb),.07));border-color:rgba(var(--silver-rgb),.4)}
.btn.ghost{background:transparent}
.btn.sm{padding:7px 11px;font-size:12px;border-radius:9px}
.btn.full{width:100%}

/* ===== LOGIN ===== */
.auth{max-width:380px;margin:14vh auto 0;text-align:center;padding:0 20px}
.auth .moon{width:60px;height:60px;border-radius:50%;margin:0 auto 22px;
  background:radial-gradient(circle at 38% 36%, #e9e6e1, #b9bcc4 45%, #4a4d55 100%);
  box-shadow:0 0 50px rgba(var(--silver-rgb),.35), inset -8px -8px 22px rgba(0,0,0,.45)}
.auth h1{font:800 30px/1 var(--hud);letter-spacing:.32em;color:var(--ivory);margin:0 0 8px;text-indent:.32em}
.auth p{color:var(--muted);font-size:12.5px;letter-spacing:.04em;margin:0 0 26px}
.card{background:var(--glass);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:18px;padding:24px;text-align:left}
.card input{margin-bottom:12px}
.err{color:var(--bad);font-size:12.5px;min-height:18px;margin-top:8px;text-align:center}

/* ===== APP SHELL ===== */
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:13px 18px;background:rgba(8,8,10,.7);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.brand{font:800 20px var(--hud);letter-spacing:.26em;color:var(--ivory);display:flex;align-items:center;gap:9px}
.brand .dot{width:7px;height:7px;border-radius:50%;background:var(--silver);box-shadow:0 0 12px var(--silver)}
.brand small{font:500 9px var(--hud2);letter-spacing:.28em;color:var(--muted);margin-left:2px}
.sp{flex:1}
.wrap{max-width:860px;margin:0 auto;padding:18px 16px 140px}

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:14px 0 6px}
.statcard{background:var(--graphite);border:1px solid var(--line);border-radius:13px;padding:13px 15px}
.statcard .n{font:700 22px var(--hud);color:var(--ivory);letter-spacing:.04em}
.statcard .k{font:600 9.5px var(--hud2);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:3px}

/* ===== CHAT ===== */
.chat{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.msg{display:flex;gap:11px;align-items:flex-start;animation:rise .35s var(--ease)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.msg .av{width:30px;height:30px;border-radius:50%;flex:none;margin-top:2px;
  background:radial-gradient(circle at 38% 36%, #e9e6e1, #b9bcc4 45%, #4a4d55 100%);
  box-shadow:0 0 16px rgba(var(--silver-rgb),.25), inset -3px -3px 8px rgba(0,0,0,.4)}
.bubble{background:var(--glass);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:4px 16px 16px 16px;
  padding:13px 16px;max-width:88%;color:var(--bone)}
.bubble b,.bubble strong{color:var(--ivory);font-weight:600}
.msg.me{justify-content:flex-end}
.msg.me .bubble{background:rgba(var(--silver-rgb),.10);border-radius:16px 16px 4px 16px;border-color:var(--line2);color:var(--ivory);max-width:80%}
.bubble em{color:var(--silver);font-style:normal;opacity:.9}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 4px 41px}
.chip{font:500 12.5px var(--body);color:var(--bone);background:rgba(216,212,206,.05);border:1px solid var(--line);
  border-radius:10px;padding:9px 13px;cursor:pointer;transition:border-color .2s,background .2s,box-shadow .3s,transform .12s;text-align:left}
.chip:hover{border-color:rgba(var(--silver-rgb),.5);background:rgba(var(--silver-rgb),.10);box-shadow:0 0 18px rgba(var(--silver-rgb),.12)}
.chip:active{transform:translateY(1px)}

/* ===== CARDS (APU / budget) ===== */
.panel{margin:4px 0 2px 41px;background:var(--graphite);border:1px solid var(--line);border-radius:15px;overflow:hidden}
.panel .ph{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px}
.panel .ph .t{font:600 13px var(--body);color:var(--ivory)}
.panel .ph .t small{display:block;font:600 9px var(--hud2);letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin-bottom:3px}
.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.tbl th{font:600 9px var(--hud2);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;padding:9px 14px;border-bottom:1px solid var(--line)}
.tbl td{padding:8px 14px;border-bottom:1px solid rgba(216,212,206,.05);color:var(--bone);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl td.r,.tbl th.r{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.tbl td.c,.tbl th.c{text-align:center;white-space:nowrap}
.tbl .grp td{background:rgba(216,212,206,.04);font-weight:600;color:var(--ivory);font-size:11.5px;letter-spacing:.02em}
.gtag{display:inline-block;font:600 8.5px var(--hud2);letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:5px;
  border:1px solid var(--line);color:var(--muted)}
.gtag.material{color:#9fb6c9;border-color:rgba(159,182,201,.3)}
.gtag.mano_obra{color:#cdb98a;border-color:rgba(205,185,138,.3)}
.gtag.equipo{color:#a8c0a0;border-color:rgba(168,192,160,.3)}
.gtag.herramienta_menor{color:#b9a0c0;border-color:rgba(185,160,192,.3)}
.totrow{display:flex;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--line);font-size:13px}
.totrow.grand{font:700 16px var(--hud);color:var(--ivory);letter-spacing:.03em;background:rgba(var(--silver-rgb),.06)}
.totrow .big{color:var(--ivory);font-weight:700}
.price-hero{padding:16px;display:flex;flex-wrap:wrap;gap:18px;align-items:baseline;border-top:1px solid var(--line)}
.price-hero .v{font:800 26px var(--hud);color:var(--ivory);letter-spacing:.02em}
.price-hero .s{font:400 11px var(--body);color:var(--muted);letter-spacing:.04em}

/* ===== INPUT DOCK ===== */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:6;background:linear-gradient(180deg,transparent,rgba(8,8,10,.92) 22%);
  padding:14px 16px;backdrop-filter:blur(6px)}
.dock .inner{max-width:860px;margin:0 auto}
.dock .row{display:flex;gap:9px}
.dock input{flex:1}
.mform{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:9px;background:var(--graphite);
  border:1px solid var(--line);border-radius:14px;padding:14px}
.mform .f label{display:block;margin-bottom:5px}
.mform .wide{grid-column:1/-1;display:flex;gap:9px}
.muted{color:var(--muted)} .small{font-size:12px}
.hudlabel{font:600 9px var(--hud2);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}

/* saved budgets list */
.blist{display:flex;flex-direction:column;gap:9px;margin-top:6px}
.bitem{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--graphite);border:1px solid var(--line);
  border-radius:13px;padding:13px 15px;cursor:pointer;transition:border-color .2s,background .2s}
.bitem:hover{border-color:var(--line2);background:rgba(var(--silver-rgb),.05)}
.bitem .c{font:700 13px var(--hud);color:var(--ivory);letter-spacing:.05em}
.bitem .m{font-size:11.5px;color:var(--muted);margin-top:2px}
.bitem .tot{font:700 14px var(--hud);color:var(--ivory)}
.toast{position:fixed;bottom:96px;left:50%;transform:translateX(-50%);z-index:9;background:var(--anthracite);
  border:1px solid var(--line2);border-radius:11px;padding:11px 18px;color:var(--ivory);font-size:13px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
@media(max-width:560px){.brand small{display:none}.wrap{padding-bottom:160px}.chips,.panel{margin-left:0}}
