/* Campistas.club — extras del panel del camping (complementa panel.css; no lo sustituye) */
.page-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.page-intro h2 { margin: 0; font-size: 1.6rem; }
.page-intro p { margin: .2rem 0 0; color: var(--muted); font-size: .92rem; }
.kpi .v em { font-style: italic; color: var(--sun); }
.kpi .ico { width: 1rem; height: 1rem; }
.kpi .bar { height: 6px; background: rgba(0,0,0,.08); border-radius: 99px; overflow: hidden; margin-top: .4rem; }
.kpi .bar i { display: block; height: 100%; background: var(--sun); border-radius: 99px; }
.kpi.accent .bar { background: rgba(255,255,255,.18); }
.chart-wrap { padding: .4rem 1.4rem 1.2rem; }
.chart.tall { height: 240px; }
.chart .grid-l { stroke: var(--line); stroke-dasharray: 3 4; }
.chart .dot { fill: var(--pine); }
.chart .lbl-v { fill: var(--ink-2); font-weight: 600; }
.chart .bar.soft { fill: var(--moss-soft); }
.legend i.moss { background: var(--moss-soft); } .legend i.mid { background: var(--sun-soft); } .legend i.full { background: var(--berry-soft); } .legend i.blk { background: repeating-linear-gradient(45deg, var(--paper-3), var(--paper-3) 3px, var(--paper-2) 3px, var(--paper-2) 6px); } .legend i.hold { background: var(--sky-soft); }
.legend i.low { background: var(--moss-soft); } .legend i.high { background: var(--clay-soft); } .legend i.special { background: var(--berry-soft); } .legend i.none { background: var(--paper-2); }
.avail-cal td.c.hold { background: var(--sky-soft); color: #2F5F7A; }
.avail-cal td.c.over { outline: 2px solid var(--berry); }
.avail-cal td.c small { display: block; font-size: .58rem; font-weight: 500; opacity: .75; line-height: 1; }
.avail-cal td.c.past { opacity: .45; cursor: default; }
.avail-cal th.today { color: var(--pine); text-decoration: underline; text-underline-offset: 3px; }
.year-cal .g span.today { outline: 2px solid var(--pine); }
.year-cal .g span.overlap { outline: 2px solid var(--berry); }
.year-cal .g span.closed { background: repeating-linear-gradient(45deg, var(--paper-3), var(--paper-3) 3px, var(--paper-2) 3px, var(--paper-2) 6px); color: var(--ink-3); }
.season-list .lr { align-items: flex-start; }
.season-dot { width: 12px; height: 12px; border-radius: 4px; flex: none; margin-top: .3rem; }
.season-dot.low { background: var(--moss); } .season-dot.mid { background: var(--sun); } .season-dot.high { background: var(--clay); } .season-dot.special { background: var(--berry); }
.range-rows .rr { display: grid; grid-template-columns: 1fr auto 1fr auto; gap: .5rem; align-items: center; margin-bottom: .5rem; }
.range-rows .rr span { color: var(--muted); font-size: .85rem; }
.range-rows input { padding: .55rem .8rem; font-size: .9rem; }
.price-matrix { border-collapse: separate; border-spacing: 0; width: 100%; font-size: .88rem; }
.price-matrix th { position: sticky; top: 0; background: var(--paper-2); z-index: 1; }
.price-matrix th.season { text-align: center; }
.price-matrix th.season .k { display: block; font-size: .68rem; opacity: .7; letter-spacing: .06em; }
.price-matrix td.pt { font-weight: 600; white-space: nowrap; background: var(--card); position: sticky; left: 0; }
.price-matrix td.pt small { display: block; color: var(--muted); font-weight: 500; font-size: .76rem; }
.price-matrix td.cell { padding: .5rem .6rem; min-width: 236px; vertical-align: top; }
.price-matrix .pn { display: flex; align-items: center; gap: .4rem; margin-bottom: .4rem; }
.price-matrix .pn input { font-family: var(--font-display); font-size: 1.15rem; padding: .45rem .7rem; width: 110px; font-weight: 500; }
.price-matrix .sup { display: grid; grid-template-columns: repeat(5, minmax(38px, 1fr)); gap: .25rem; }
.price-matrix .sup label { font-size: .62rem; margin: 0; color: var(--muted); text-align: center; text-transform: uppercase; letter-spacing: .04em; }
.price-matrix .sup input { padding: .3rem .15rem; font-size: .78rem; text-align: center; border-radius: 6px; min-width: 0; }
.price-matrix input.changed { border-color: var(--clay); background: var(--clay-soft); }
.photo-grid .p.dragging { opacity: .4; }
.photo-grid .p.over { outline: 2px dashed var(--pine); outline-offset: 2px; }
.photo-grid .p .cap { position: absolute; left: 0; right: 0; bottom: 0; background: linear-gradient(transparent, rgba(27,33,29,.75)); color: #fff; font-size: .72rem; padding: 1.4rem .5rem .4rem; }
.photo-grid .p .cap input { background: transparent; border: 0; border-bottom: 1px dashed rgba(255,255,255,.4); color: #fff; padding: .1rem 0; font-size: .74rem; width: 100%; border-radius: 0; box-shadow: none; }
.photo-grid .p .cap input::placeholder { color: rgba(255,255,255,.55); }
.photo-grid .p .star { position: absolute; top: .4rem; left: .4rem; width: 26px; height: 26px; border-radius: 50%; border: 0; background: rgba(255,255,255,.85); color: var(--ink-3); cursor: pointer; display: grid; place-items: center; }
.photo-grid .p .star.on { color: var(--sun); background: var(--pine); }
.photo-grid .p .star .ico { width: 14px; height: 14px; }
.photo-grid .p .del .ico { width: 14px; height: 14px; }
.amen-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem 1.5rem; }
.amen-grid h5 { margin: 0 0 .5rem; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.amen-grid .chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.chip .ico { width: 14px; height: 14px; }
.chip.on .ico, .chip:has(input:checked) .ico { color: var(--sun); }
.map.small { height: 320px; border-radius: var(--r-md); border: 1px solid var(--line); overflow: hidden; }
.booking-head { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.booking-head .code { font-family: var(--font-display); font-size: 1.7rem; letter-spacing: .02em; }
.lines td.num, .lines th.num { text-align: right; font-variant-numeric: tabular-nums; }
.lines tr.total td { font-weight: 700; font-size: 1rem; border-top: 2px solid var(--line-2); }
.lines tr.neg td { color: var(--pine-2); }
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline li { position: relative; padding: 0 0 .9rem 1.4rem; border-left: 2px solid var(--line); margin-left: .4rem; font-size: .86rem; }
.timeline li::before { content: ''; position: absolute; left: -6px; top: .3rem; width: 10px; height: 10px; border-radius: 50%; background: var(--moss); border: 2px solid var(--card); }
.timeline li small { display: block; color: var(--muted); }
.timeline li:last-child { padding-bottom: 0; }
.veh-box { display: flex; gap: 1rem; align-items: center; background: var(--paper-2); border-radius: var(--r-md); padding: .9rem 1rem; }
.veh-box .dims { display: flex; gap: .8rem; font-size: .82rem; color: var(--ink-2); flex-wrap: wrap; }
.veh-box .dims b { font-weight: 700; }
.scan-box #reader { width: 100%; height: 100%; }
.scan-box #reader video { object-fit: cover; }
.scan-box .hint { position: absolute; left: 0; right: 0; bottom: .8rem; text-align: center; color: rgba(255,255,255,.85); font-size: .82rem; z-index: 2; }
.scan-result h3 { margin: 0 0 .3rem; }
.scan-result .tier { font-family: var(--font-display); font-style: italic; }
.scan-result .kv { margin: .8rem 0; }
.scan-result .sig { font-size: .8rem; color: var(--muted); }
.tier-P { color: var(--gold); }
.session-cal { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; }
.session-cal .d { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: .6rem .7rem; font-size: .8rem; min-height: 80px; }
.session-cal .d h6 { margin: 0 0 .35rem; font-size: .74rem; color: var(--muted); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.session-cal .d.today { border-color: var(--pine); }
.session-cal .s { display: flex; justify-content: space-between; align-items: center; gap: .3rem; padding: .3rem .4rem; border-radius: 6px; background: var(--moss-soft); margin-bottom: .25rem; }
.session-cal .s.full { background: var(--berry-soft); }
.session-cal .s.cancelled { background: var(--paper-2); text-decoration: line-through; opacity: .7; }
.session-cal .s .occ { font-weight: 700; font-size: .72rem; }
.session-cal .s form { display: inline; }
.session-cal .s button { border: 0; background: none; cursor: pointer; padding: 0; color: var(--ink-3); display: grid; }
.session-cal .s button .ico { width: 12px; height: 12px; }
.sim-box { background: var(--pine); color: #fff; border-radius: var(--r-lg); padding: 1.4rem; }
.sim-box h4 { color: #fff; margin: 0 0 .8rem; font-size: 1.15rem; }
.sim-box .kv dt { color: rgba(255,255,255,.65); } .sim-box .kv dd { color: #fff; }
.sim-box .big { font-family: var(--font-display); font-size: 2rem; }
.sim-box .save { color: var(--sun); font-family: var(--font-display); font-style: italic; }
.upsell { border: 2px dashed var(--clay); background: var(--clay-soft); border-radius: var(--r-lg); padding: 1.2rem 1.4rem; display: flex; gap: 1rem; align-items: center; }
.upsell .ico { color: var(--clay); width: 2rem; height: 2rem; flex: none; }
.review-item { padding: 1.2rem 1.4rem; border-bottom: 1px solid var(--line); }
.review-item:last-child { border-bottom: 0; }
.review-item .head { display: flex; gap: .8rem; align-items: center; margin-bottom: .5rem; }
.review-item .subs { display: flex; gap: .8rem; flex-wrap: wrap; font-size: .76rem; color: var(--muted); margin: .4rem 0; }
.review-item .subs b { color: var(--ink-2); }
.review-item .reply { background: var(--paper-2); border-left: 3px solid var(--moss); border-radius: 0 var(--r-sm) var(--r-sm) 0; padding: .7rem .9rem; margin-top: .7rem; font-size: .9rem; }
.review-item .reply small { display: block; color: var(--muted); margin-bottom: .2rem; }
.status-pill.green { background: var(--moss-soft); color: var(--pine-2); } .status-pill.amber { background: var(--sun-soft); color: #7A5A0E; } .status-pill.blue { background: var(--sky-soft); color: #2F5F7A; } .status-pill.red { background: var(--berry-soft); color: var(--berry); } .status-pill.teal { background: #D5EDE8; color: #1E5F55; } .status-pill.gray { background: var(--paper-3); color: var(--ink-3); }
.mini-stat { display: flex; flex-direction: column; gap: .1rem; }
.mini-stat b { font-family: var(--font-display); font-size: 1.4rem; font-weight: 500; }
.mini-stat small { color: var(--muted); font-size: .76rem; text-transform: uppercase; letter-spacing: .05em; }
.form-grid.three { grid-template-columns: repeat(3, 1fr); }
.form-grid.four { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 760px) { .form-grid, .form-grid.three, .form-grid.four { grid-template-columns: 1fr; } .price-matrix .sup { grid-template-columns: repeat(3, 1fr); } }
.check-list { display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; }
.help-box { background: var(--sun-soft); border-radius: var(--r-md); padding: .9rem 1.1rem; font-size: .88rem; color: #6E5210; display: flex; gap: .6rem; }
.help-box .ico { flex: none; margin-top: .1rem; }
.pending-banner { background: var(--pine); color: #fff; border-radius: var(--r-lg); padding: 1.3rem 1.5rem; display: flex; gap: 1rem; align-items: center; }
.pending-banner .ico { color: var(--sun); width: 2rem; height: 2rem; flex: none; }
.pending-banner h3 { color: #fff; margin: 0 0 .2rem; font-size: 1.15rem; }
.pending-banner p { margin: 0; color: rgba(255,255,255,.8); font-size: .9rem; }
.table td .sub { display: block; font-size: .78rem; color: var(--muted); }
.table td.actions .btn { margin-left: .2rem; }
.icon-pick { display: flex; flex-wrap: wrap; gap: .35rem; }
.icon-pick label { margin: 0; width: 38px; height: 38px; border: 1.5px solid var(--line); border-radius: var(--r-sm); display: grid; place-items: center; cursor: pointer; color: var(--ink-2); }
.icon-pick label:has(input:checked) { border-color: var(--pine); background: var(--pine); color: #fff; }
.icon-pick input { display: none; }
.pitch-card { display: flex; gap: 1rem; padding: 1rem 1.4rem; border-bottom: 1px solid var(--line); align-items: center; }
.pitch-card:last-child { border-bottom: 0; }
.pitch-card img { width: 96px; height: 72px; object-fit: cover; border-radius: var(--r-sm); flex: none; background: var(--paper-2); }
.pitch-card .meta { display: flex; gap: .8rem; flex-wrap: wrap; font-size: .8rem; color: var(--muted); margin-top: .2rem; }
.pitch-card .meta span { display: inline-flex; align-items: center; gap: .25rem; }
.pitch-card .meta .ico { width: 13px; height: 13px; }
.pitch-card .price { margin-left: auto; text-align: right; white-space: nowrap; }
.pitch-card .price b { font-family: var(--font-display); font-size: 1.4rem; font-weight: 500; display: block; }
.pitch-card .price small { color: var(--muted); }
.notice-item { padding: 1rem 1.4rem; border-bottom: 1px solid var(--line); display: flex; gap: 1rem; align-items: flex-start; }
.notice-item:last-child { border-bottom: 0; }
.notice-item .body { flex: 1; }
.notice-item .body p { margin: .2rem 0 0; font-size: .9rem; color: var(--ink-2); }
.dash-list .lr .avatar { flex: none; }
.dash-list .lr .who { min-width: 0; }
.dash-list .lr .who b, .dash-list .lr .who small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
.big-empty { padding: 3rem 1rem; text-align: center; }
.big-empty ol { text-align: left; display: inline-block; margin: 1rem auto 0; color: var(--ink-2); font-size: .92rem; }
.big-empty ol li { margin-bottom: .3rem; }
.week-picker { display: flex; gap: .3rem; }
.week-picker label { margin: 0; width: 38px; height: 38px; border-radius: 50%; border: 1.5px solid var(--line); display: grid; place-items: center; font-size: .78rem; font-weight: 700; cursor: pointer; }
.week-picker label:has(input:checked) { background: var(--pine); color: #fff; border-color: var(--pine); }
.week-picker input { display: none; }
body.panel-login { background: var(--paper); }
.col-7 { grid-column: span 7 !important; } .col-5 { grid-column: span 5 !important; } .col-9 { grid-column: span 9; }
@media (max-width: 1100px) { .col-7, .col-5, .col-9 { grid-column: span 12 !important; } }
/* Plano del camping */
.plan-box { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1.2rem; align-items: start; }
.plan-prev { display: block; border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; background: var(--paper-2); }
.plan-prev img { width: 100%; height: auto; display: block; }
@container (max-width: 620px) { .plan-box { grid-template-columns: 1fr; } }

/* ---------------------------------------------- Parcelas físicas (pitch_units) */
.unit-list { display: flex; flex-direction: column; }
.unit-row { display: flex; gap: .9rem; align-items: center; padding: .8rem 1.3rem; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.unit-row:last-child { border-bottom: 0; }
.unit-row .tagn { font-family: var(--font-display); font-size: 1.05rem; font-weight: 600; background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--r-sm); padding: .3rem .7rem; min-width: 74px; text-align: center; flex: none; }
.unit-row.free .tagn { background: var(--moss-soft); border-color: transparent; }
.unit-row.busy .tagn { background: var(--sun-soft); border-color: transparent; }
.unit-row.off .tagn { background: repeating-linear-gradient(45deg, var(--paper-3), var(--paper-3) 3px, var(--paper-2) 3px, var(--paper-2) 6px); color: var(--ink-3); }
.unit-row .info { flex: 1; min-width: 180px; font-size: .9rem; }
.unit-row .info .sub { display: block; font-size: .78rem; color: var(--muted); }
.unit-row .info .sub .ico { width: 12px; height: 12px; }
.unit-row .acts { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }
.unit-pick select + input { margin-top: .4rem; }

/* Ocupación por parcela */
.occ-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .7rem; }
.occ { border: 1px solid var(--line); border-radius: var(--r-md); padding: .7rem .8rem; background: var(--card); display: flex; flex-direction: column; gap: .15rem; font-size: .84rem; min-height: 92px; }
.occ .n { font-family: var(--font-display); font-weight: 600; font-size: 1.05rem; }
.occ small { color: var(--ink-2); font-size: .76rem; }
.occ .status-pill { align-self: flex-start; margin-top: .25rem; }
.occ.busy { border-color: var(--sun); background: var(--sun-soft); }
.occ.free { background: var(--paper-2); }
.occ.off { background: repeating-linear-gradient(45deg, var(--paper-3), var(--paper-3) 3px, var(--paper-2) 3px, var(--paper-2) 6px); color: var(--ink-3); }

/* ---------------------------------------------- Parte de trabajo (móvil primero) */
.work-list { display: flex; flex-direction: column; }
.work-card { border-bottom: 1px solid var(--line); padding: 1rem 1.3rem; }
.work-card:last-child { border-bottom: 0; }
.work-card.urgent { border-left: 4px solid var(--berry); }
.work-card.is-done { opacity: .62; }
.work-card.is-done .wc-text b { text-decoration: line-through; }
.wc-head { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; margin-bottom: .5rem; }
.wc-text { margin: 0 0 .4rem; font-size: .95rem; line-height: 1.45; }
.wc-meta { font-size: .8rem; color: var(--muted); display: flex; gap: .3rem; align-items: center; flex-wrap: wrap; }
.wc-meta .ico { width: 13px; height: 13px; }
.wc-photo { display: block; margin: .6rem 0; }
.wc-photo img { width: 100%; max-width: 260px; height: auto; border-radius: var(--r-sm); border: 1px solid var(--line); }
.wc-notes { background: var(--paper-2); border-left: 3px solid var(--moss); border-radius: 0 var(--r-sm) var(--r-sm) 0; padding: .55rem .8rem; margin: .6rem 0; font-size: .82rem; color: var(--ink-2); white-space: pre-line; }
.wc-actions { margin-top: .7rem; display: flex; flex-direction: column; gap: .5rem; }
.wc-actions.row { flex-direction: row; }
.wc-actions input[type=text] { font-size: .88rem; }
.wc-actions form { display: inline; }
.wc-actions .btn { min-height: 40px; }
.wl-title { margin: .2rem 0 .6rem; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }

/* Entregas de servicios del día */
.deliv-list { display: flex; flex-direction: column; gap: .6rem; margin-bottom: 1.2rem; }
.deliv { display: flex; gap: .9rem; align-items: center; border: 1px solid var(--line); border-radius: var(--r-md); padding: .8rem 1rem; background: var(--card); flex-wrap: wrap; }
.deliv.late { border-color: var(--clay); background: var(--clay-soft); }
.deliv .ic { width: 44px; height: 44px; border-radius: 50%; background: var(--paper-2); display: grid; place-items: center; flex: none; color: var(--pine); }
.deliv .d-info { flex: 1; min-width: 190px; display: flex; flex-direction: column; gap: .1rem; }
.deliv .d-info b { font-size: 1rem; }
.deliv .d-info small { font-size: .78rem; color: var(--muted); display: flex; gap: .3rem; align-items: center; flex-wrap: wrap; }
.deliv .d-info small .ico { width: 12px; height: 12px; }
.deliv .d-info .late-txt { color: var(--berry); font-weight: 600; }
.deliv .d-act { margin-left: auto; }
.deliv .d-act .btn { min-height: 44px; padding-left: 1.1rem; padding-right: 1.1rem; }

/* Selector Hoy / Mañana / Semana */
.seg.sm { display: inline-flex; gap: .2rem; background: var(--paper-2); border-radius: 99px; padding: .2rem; }
.seg.sm a { padding: .35rem .85rem; border-radius: 99px; font-size: .82rem; font-weight: 600; color: var(--ink-2); text-decoration: none; }
.seg.sm a.on { background: var(--pine); color: #fff; }

@media (max-width: 760px) {
  .work-card { padding: .9rem 1rem; }
  .wc-actions .btn, .deliv .d-act .btn { flex: 1; }
  .deliv .d-act { margin-left: 0; width: 100%; }
  .deliv .d-act form { display: block; }
  .deliv .d-act .btn { width: 100%; }
  .unit-row .acts { width: 100%; }
  .occ-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}
