:root{--bg: #0f1720;--bg2: #16212e;--card: #1b2836;--card2: #22303f;--line: #2c3d4e;--txt: #e8eef4;--muted: #8ea3b7;--accent: #38bdac;--accent-d: #2a9587;--danger: #ef6a6a;--warn: #f2b45a;--ok: #57c98a;--radius: 16px;--shadow: 0 6px 24px rgba(0, 0, 0, .28);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--txt);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}.app{max-width:720px;margin:0 auto;padding:0 16px calc(96px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:20;background:linear-gradient(180deg,var(--bg) 70%,rgba(15,23,32,0));padding:calc(14px + env(safe-area-inset-top)) 0 10px;display:flex;align-items:center;gap:12px}.topbar h1{font-size:20px;margin:0;font-weight:700;letter-spacing:-.2px}.topbar .sub{color:var(--muted);font-size:13px}.spacer{flex:1}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:14px}.card.link{cursor:pointer;transition:transform .08s ease,border-color .15s}.card.link:active{transform:scale(.99)}.card.link:hover{border-color:var(--accent-d)}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.muted{color:var(--muted)}.small{font-size:13px}.big{font-size:26px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}h2{font-size:15px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:22px 4px 10px}.bar{height:9px;background:var(--bg2);border-radius:99px;overflow:hidden;margin-top:10px}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-d));border-radius:99px}.bar.over>i{background:linear-gradient(90deg,var(--warn),var(--danger))}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--card2);color:var(--muted);border:1px solid var(--line)}.chip.contratista{color:#7cc7ff}.chip.volquete{color:var(--warn)}.chip.material{color:var(--accent)}.chip.mano_obra{color:#c9a6ff}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:12px;font-size:15px;font-weight:700;padding:13px 18px;cursor:pointer;background:var(--accent);color:#06231f;transition:filter .12s;display:inline-flex;align-items:center;gap:8px;justify-content:center}.btn:active{filter:brightness(.92)}.btn.block{width:100%}.btn.ghost{background:var(--card2);color:var(--txt);border:1px solid var(--line)}.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--line);padding:8px 12px;font-size:13px}.fab{position:fixed;right:max(18px,calc(50% - 342px));bottom:calc(20px + env(safe-area-inset-bottom));z-index:30;width:58px;height:58px;border-radius:50%;background:var(--accent);color:#06231f;font-size:30px;border:none;box-shadow:0 8px 24px #38bdac59;cursor:pointer;display:flex;align-items:center;justify-content:center}label.field{display:block;margin-bottom:14px}label.field span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}input,select,textarea{width:100%;background:var(--bg2);border:1px solid var(--line);color:var(--txt);border-radius:12px;padding:13px 14px;font-size:16px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-d);border-color:transparent}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:40;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--card);border-radius:22px 22px 0 0;padding:20px 18px calc(24px + env(safe-area-inset-bottom));width:100%;max-width:720px;max-height:88vh;overflow-y:auto;box-shadow:0 -10px 40px #0006}@media(min-width:560px){.sheet-bg{align-items:center}.sheet{border-radius:22px;max-height:80vh}}.sheet h3{margin:0 0 16px;font-size:18px}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:100%;max-width:360px;text-align:center}.logo{width:64px;height:64px;border-radius:18px;background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.logo b{width:34px;height:34px;border-radius:50%;background:var(--accent);display:block}.empty{text-align:center;color:var(--muted);padding:48px 20px}.err{color:var(--danger);font-size:14px;margin:8px 0}.list-item{padding:12px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border-bottom:none}
