.app{max-width:980px;margin:0 auto;padding:16px 16px 48px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0 16px;border-bottom:1px solid var(--border);margin-bottom:20px}.app-title{font-size:1.35rem;display:flex;align-items:center;gap:8px}.app-mark{font-size:1.4rem}.app-header-right{display:flex;align-items:center;gap:8px}.who{color:var(--text-dim);font-size:.85rem}.banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#4a2020;border:1px solid #7a3030;color:#ffd9d9;border-radius:8px;padding:10px 14px;margin-bottom:16px}.app-footer{margin-top:28px;color:var(--text-dim);font-size:.8rem;text-align:center}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.panel h2{font-size:1.05rem;margin-bottom:12px}.hint{color:var(--text-dim);font-size:.85rem;margin:8px 0}.error-line{color:#ff9a8f;font-size:.85rem;margin:8px 0}.pos strong,.pos{color:var(--green)}.neg strong,.neg{color:var(--red)}.field-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.field{display:flex;flex-direction:column}.field.grow,.grow{flex:1 1 160px;min-width:120px}.zip-field input{width:110px;letter-spacing:.08em}.button-row{display:flex;gap:8px;flex-wrap:wrap}.new-trip button[type=submit]{margin-top:14px}.manual-rate{margin-top:10px}.rate-card{margin-top:14px;background:var(--panel-2);border:1px solid var(--border);border-left:3px solid var(--blue);border-radius:8px;padding:12px 14px}.rate-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.rate-place{font-weight:600}.rate-county,.rate-meta{color:var(--text-dim);font-size:.8rem}.rate-amounts{text-align:right}.rate-big{font-size:1.6rem;font-weight:700;color:var(--blue);line-height:1.1}.rate-sub,.rate-travel{color:var(--text-dim);font-size:.8rem}.rate-breakdown{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.rate-breakdown span{background:#1f1f1f;border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:.78rem;color:var(--text-dim)}.rate-breakdown .approx{color:var(--amber)}.rate-source{display:inline-block;margin-top:10px;font-size:.75rem}.trip-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.trip-card{position:relative;text-align:left;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.trip-card:hover{border-color:var(--blue)}.trip-card-open{display:block;width:100%;text-align:left;background:none;border:0;border-radius:0;padding:0}.trip-card-open:hover:not(:disabled){background:none}.trip-card-delete{position:absolute;top:2px;right:2px;color:var(--text);opacity:.55;font-size:1.05rem;line-height:1;padding:9px 11px}.trip-card-delete:hover:not(:disabled){opacity:1}.trip-card-name{padding-right:28px;font-weight:600;margin-bottom:2px}.trip-card-meta{color:var(--text-dim);font-size:.78rem;margin-bottom:10px}.trip-card-numbers{display:flex;justify-content:space-between;gap:8px;font-weight:600;font-size:.9rem}.trip-card-numbers em,.day-numbers em,.total em{display:block;font-style:normal;font-weight:400;font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.trip-header .trip-title-row{display:flex;align-items:center;gap:8px;margin:8px 0 2px}.trip-header h1{font-size:1.4rem}.title-input{font-size:1.2rem;flex:1 1 240px}.trip-place,.trip-dates{color:var(--text-dim);font-size:.85rem;margin:2px 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.totals{display:flex;gap:24px;flex-wrap:wrap;margin:16px 0 8px}.total strong{font-size:1.5rem;font-weight:700}.trip-actions{margin-top:14px}.bar{height:8px;background:#1a1a1a;border:1px solid var(--border);border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:var(--blue);transition:width .25s}.bar-fill.over{background:var(--red)}.day-card{padding:14px 16px}.day-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.day-head h3{font-size:1rem}.day-rate{color:var(--text-dim);font-size:.78rem}.travel-pill{border-radius:999px;font-size:.78rem;padding:5px 12px;color:var(--text-dim)}.travel-pill.on{background:#24405e;border-color:var(--blue);color:#cfe3fb}.day-numbers{display:flex;gap:20px;flex-wrap:wrap;margin:12px 0 8px}.day-numbers strong{font-size:1.15rem}.provided{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0 4px;font-size:.8rem;color:var(--text-dim)}.provided-label{color:var(--text-dim)}.check{display:flex;align-items:center;gap:5px;margin:0;font-size:.8rem;color:var(--text)}.check input{margin:0;accent-color:var(--blue)}.expenses{margin-top:10px;border-top:1px solid var(--border)}.expense{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.meal-chip{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:999px;background:#333;color:var(--text-dim);white-space:nowrap}.meal-chip.breakfast{background:#3a3520;color:#e8d9a0}.meal-chip.lunch{background:#23402c;color:#b6e2c4}.meal-chip.dinner{background:#2a2b46;color:#c3c6f0}.meal-chip.incidental{background:#3b2c3f;color:#e3c4ea}.expense-desc{flex:1 1 140px;min-width:100px;font-size:.9rem}.expense-desc em{color:var(--text-dim)}.expense-amount{font-weight:600;font-variant-numeric:tabular-nums}.amount-input{width:96px}.add-expense{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.add-expense select{min-width:110px}.file-picked{border-color:var(--green);color:#b6e2c4}.receipt{display:inline-flex;align-items:center;gap:2px}.receipt-open{padding:0;width:38px;height:38px;overflow:hidden;display:grid;place-items:center}.receipt-open img{width:100%;height:100%;object-fit:cover}.receipt-open .doc{font-size:1.1rem}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px}.login-card h1{font-size:1.3rem}.login-sub{color:var(--text-dim);font-size:.85rem;margin:4px 0 20px}.login-card input{width:100%;margin-bottom:14px}.login-card button[type=submit]{width:100%;margin-top:4px}.login-error{color:#ff9a8f;font-size:.85rem;margin:0 0 10px}.login-note{color:var(--text-dim);font-size:.75rem;margin:16px 0 0;text-align:center}@media (max-width: 560px){.totals{gap:14px}.total strong{font-size:1.2rem}.add-expense .grow{flex-basis:100%}}:root{--bg: #1a1a1a;--panel: #242424;--panel-2: #2c2c2c;--border: #3a3a3a;--text: #f0f0f0;--text-dim: #a0a0a0;--blue: #4a90e2;--green: #27ae60;--red: #e74c3c;--amber: #e8a100;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.45}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s}button:hover:not(:disabled){background:#383838}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#3d7fcb}button.danger:hover:not(:disabled){background:var(--red);border-color:var(--red);color:#fff}button.ghost{background:transparent;border-color:transparent;color:var(--text-dim);padding:4px 8px}button.ghost:hover:not(:disabled){background:var(--panel-2);color:var(--text)}input,select{font:inherit;color:var(--text);background:#1f1f1f;border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--blue);outline-offset:1px}label{font-size:.8rem;color:var(--text-dim);display:block;margin-bottom:4px}a{color:var(--blue)}
