/*
 * Shared component styles — used across all pages.
 * Include after theme.css:
 *   <link rel="stylesheet" href="/static/components.css?v=1" />
 */

/* ── Cards ── */
.card { border: 1px solid var(--aq-border); border-radius: 10px; padding: 10px; margin-bottom: 8px; }
.card-hdr { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.card-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: var(--aq-muted-fg); }
.card-toggle { font-size: 11px; color: var(--aq-muted-fg); cursor: pointer; background: none; border: none; padding: 0; }

/* ── Inputs ── */
.inp { width: 100%; padding: 7px 10px; font-size: 12px; border-radius: 6px; border: 1px solid hsl(240 5% 25%); background: hsl(240 5% 7%); color: var(--aq-fg); outline: none; font-family: 'SF Mono', 'Fira Code', monospace; }
.inp:focus { border-color: var(--aq-primary); box-shadow: 0 0 0 2px rgba(59,130,246,0.25); }
.inp::placeholder { color: hsl(240 5% 38%); font-family: sans-serif; text-transform: none; }
.inp-num { text-align: right; font-weight: 500; }
.inp-upper { text-transform: uppercase; }

/* ── Labels ── */
.lbl { font-size: 10px; color: var(--aq-muted-fg); margin-bottom: 3px; text-transform: uppercase; letter-spacing: 0.5px; }

/* ── Grid helpers ── */
.g2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.g3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.g4 { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 6px; }

/* ── Pill buttons ── */
.pill { display: inline-flex; align-items: center; padding: 4px 10px; font-size: 11px; font-weight: 500; border-radius: 6px; border: 1px solid var(--aq-border); background: none; color: var(--aq-fg); cursor: pointer; flex-shrink: 0; white-space: nowrap; transition: all 0.1s; }
.pill:hover { background: hsl(240 5% 15%); }
.pill.on { background: var(--aq-primary); border-color: var(--aq-primary); color: #fff; }

/* ── Route row ── */
.rrow { display: flex; align-items: center; padding: 7px 10px; border: 1px solid var(--aq-border); border-radius: 6px; margin-bottom: 4px; cursor: pointer; font-size: 11px; font-family: monospace; }
.rrow:hover { border-color: hsl(240 5% 35%); }
.rrow.sel { border-color: var(--aq-primary); }

/* ── Itinerary row ── */
.irow { display: flex; align-items: center; padding: 8px 10px; border: 1px solid var(--aq-border); border-radius: 6px; margin-bottom: 4px; cursor: pointer; font-size: 12px; }
.irow:hover { border-color: hsl(240 5% 35%); }
.irow.sel { border-color: var(--aq-primary); }

/* ── Segment row ── */
.srow { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--aq-border); border-radius: 6px; margin-bottom: 4px; font-size: 12px; }
.badge { background: hsl(240 5% 15%); border: 1px solid var(--aq-border); border-radius: 4px; padding: 3px 8px; font-family: monospace; font-weight: 500; font-size: 11px; }
.seg-m { flex: 1; text-align: right; font-size: 11px; color: var(--aq-muted-fg); background: hsl(240 5% 12%); border-radius: 4px; padding: 4px 10px; font-family: monospace; }

/* ── Summary boxes ── */
.sum-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; margin-bottom: 8px; }
.sum-box { background: hsl(240 5% 12%); border: 1px solid var(--aq-border); border-radius: 8px; padding: 8px 10px; text-align: center; }
.sum-box .val { font-size: 12px; font-weight: 500; }
.sum-box .lbl { font-size: 10px; color: var(--aq-muted-fg); margin: 0; }

/* ── Buttons ── */
.btn-p { display: inline-flex; align-items: center; gap: 6px; padding: 8px 20px; font-size: 12px; font-weight: 600; border-radius: 8px; border: none; background: var(--aq-primary); color: #fff; cursor: pointer; }
.btn-p:hover { opacity: 0.9; }
.btn-p:disabled { opacity: 0.4; cursor: not-allowed; }
.btn-s { display: inline-flex; align-items: center; gap: 4px; padding: 5px 12px; font-size: 11px; font-weight: 500; border-radius: 6px; border: 1px solid var(--aq-border); background: none; color: var(--aq-fg); cursor: pointer; }
.btn-s:hover { background: hsl(240 5% 15%); }

/* ── Input with inline clear button ── */
.inp-wrap { position: relative; display: block; }
.inp-wrap > .inp { padding-right: 26px; }
.inp-wrap > .inp-clear {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--aq-muted-fg);
    cursor: pointer;
    font-size: 13px;
    line-height: 1;
    padding: 2px;
    z-index: 1;
}
.inp-wrap > .inp-clear:hover { color: var(--aq-fg); }
.inp-wrap > .inp-clear.danger { color: #ef4444; }

/* ── Utilities ── */
.muted { color: var(--aq-muted-fg); }
.loading { text-align: center; color: var(--aq-muted-fg); font-size: 12px; padding: 12px; }
.xbtn { background: none; border: none; color: var(--aq-muted-fg); cursor: pointer; font-size: 14px; padding: 2px 4px; }
.xbtn:hover { color: var(--aq-fg); }

/* ── Fuel toggle ── */
.ftog { display: inline-flex; border-radius: 6px; overflow: hidden; border: 1px solid var(--aq-border); }
.ftog button { padding: 4px 10px; font-size: 11px; font-weight: 500; border: none; background: none; color: var(--aq-fg); cursor: pointer; }
.ftog button.on { background: var(--aq-primary); color: #fff; }

/* ── Spinner ── */
.spinner { display: inline-block; width: 12px; height: 12px; border: 2px solid var(--aq-border); border-top-color: var(--aq-primary); border-radius: 50%; animation: spin 0.6s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Wind colors ── */
.hw-pos { color: #22c55e; }
.hw-neg { color: #ef4444; }

/* ── Layout: panel + map ── */
.page-split { display: flex; flex: 1; min-height: 0; }
.panel { width: 400px; flex-shrink: 0; overflow-y: auto; border-right: 1px solid var(--aq-border); background: var(--aq-bg); padding: 10px; }
.panel-narrow { width: 360px; }
.map-area { flex: 1; min-height: 0; position: relative; }
.map-area iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; }

/* Prevent iOS Safari zoom on input focus (requires font-size >= 16px) */
@media (max-width: 768px) {
    .inp, .inp:focus, input, select, textarea { font-size: 16px !important; }
}

@media (max-width: 768px) {
    .page-split { flex-direction: column; }
    .panel, .panel-narrow { width: 100%; flex: 1; border-right: none; }
    .map-area { height: 40vh; flex-shrink: 0; }
}
