/* Let's wake app! Solo — the club app's look (app.css), a bit sportier: deep water blue, a teal accent,
   bolder titles. A park photo can go into --lw-solo-photo later. */
:root { --lw-brand: #0e5f86; --brand: #0e5f86; --lw-accent: #1aa3c8; --lw-deep: #0b2f4a;
  --bs-primary: #0e5f86; --bs-primary-rgb: 14, 95, 134; --bs-link-color: #0e5f86; --bs-link-color-rgb: 14, 95, 134; --bs-link-hover-color: #0b4a69; --bs-link-hover-color-rgb: 11, 74, 105; }
:root[data-bs-theme=dark] { --bs-link-color: #7fcbe6; --bs-link-color-rgb: 127, 203, 230; --bs-link-hover-color: #a9ddef; --bs-link-hover-color-rgb: 169, 221, 239; }
.lw-solo .lw-bar, .lw-solo .lw-bar::after { background: linear-gradient(100deg, var(--lw-deep), var(--lw-brand) 70%, var(--lw-accent)); }
.lw-solo .lw-bar::after { background: var(--lw-brand); }
@media (max-width: 1199.98px) {
  .lw-solo .lw-bar .navbar-collapse, .lw-solo .lw-bar .navbar-toggler { background: linear-gradient(160deg, var(--lw-deep), var(--lw-brand)); }
}
.lw-solo .lw-brand-name { letter-spacing: .02em; }
.lw-solo .lw-brand-name b { color: #9fe3f5; font-weight: 800; }
.lw-solo-mark { width: 28px; height: 28px; border-radius: 8px; background: url("icons/icon-192.png") center / cover; box-shadow: 0 0 0 1px rgba(255,255,255,.4); }
.lw-solo .lw-title { font-weight: 800; letter-spacing: -.01em; font-size: 1.65rem; }
body.lw-solo { background: linear-gradient(180deg, color-mix(in srgb, var(--lw-accent) 9%, #fff) 0, #fff 22rem) no-repeat, #fff; }
[data-bs-theme="dark"] body.lw-solo { background: linear-gradient(180deg, #0d2433 0, var(--bs-body-bg) 22rem) no-repeat, var(--bs-body-bg); }
/* map */
.lw-solo-mapwrap { position: relative; }
.lw-solo-map { height: 52vh; min-height: 300px; border-radius: .9rem; overflow: hidden; box-shadow: 0 4px 14px rgba(16, 50, 74, .12); z-index: 0; }
.lw-solo-map.is-adding { cursor: crosshair; outline: 3px dashed var(--lw-accent); outline-offset: 2px; }
.lw-solo-maptools { position: absolute; top: 10px; right: 10px; z-index: 500; display: flex; flex-direction: column; gap: 6px; align-items: flex-end; }
.lw-pin { background: none; border: 0; }
.lw-pin span { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg);
  background: #fff; border: 2px solid var(--lw-brand); box-shadow: 0 3px 8px rgba(0,0,0,.25); font-size: 16px; }
.lw-pin.is-fav span { background: #ffd23f; border-color: #c99700; color: #5a4300; font-weight: 700; }
.lw-pin.is-own span { border-style: dashed; }
.lw-pin span > b { transform: rotate(45deg); font-weight: inherit; }
.leaflet-container { font: inherit; }
[data-bs-theme="dark"] .leaflet-tile-pane { filter: brightness(.8) contrast(1.1) saturate(.8); }
.lw-solo-ico { width: 1.6rem; text-align: center; }
/* weather */
.lw-wx-hours { display: flex; gap: .5rem; overflow-x: auto; padding-bottom: .4rem; scroll-snap-type: x mandatory; }
.lw-wx-h { flex: 0 0 auto; min-width: 3.6rem; text-align: center; padding: .45rem .3rem; border-radius: .75rem; background: color-mix(in srgb, var(--lw-brand) 7%, var(--bs-body-bg));
  border: 1px solid color-mix(in srgb, var(--lw-brand) 15%, transparent); scroll-snap-align: start; }
/* lists, empty states */
.lw-solo-empty { text-align: center; padding: 2rem 1rem; color: var(--bs-secondary-color); }
.lw-solo-empty .e { font-size: 2.6rem; line-height: 1; margin-bottom: .5rem; }
.lw-solo-group > summary { cursor: pointer; padding: .35rem 0; }
.lw-solo-picklist { max-height: 14rem; overflow-y: auto; border: 1px solid var(--bs-border-color); border-radius: .6rem; padding: .4rem .7rem; }
.lw-solo-cheer { font-size: 3.5rem; line-height: 1; animation: lwPop .5s ease-out both; }
.lw-solo-splogo { width: 64px; height: 64px; object-fit: contain; }
.lw-evt-date .m { background: linear-gradient(120deg, var(--lw-deep), var(--lw-brand)); }
.btn-check + .btn-outline-primary { white-space: nowrap; }
[data-bs-theme="dark"] .btn-outline-primary { --bs-btn-color: #7fcbe6; --bs-btn-border-color: #7fcbe6; --bs-btn-hover-color: #0b2f4a; --bs-btn-hover-bg: #7fcbe6; --bs-btn-active-bg: #7fcbe6; --bs-btn-active-color: #0b2f4a; }
[data-bs-theme="dark"] .btn-check:checked + .btn-outline-primary { color: #fff; background: var(--lw-brand); border-color: #7fcbe6; }
/* Maps+ 0.2: the arrow, adding a place, wake boats */
.lw-solo-locate { width: 44px; height: 44px; border-radius: 50%; border: 0; background: #fff; color: var(--lw-brand); box-shadow: 0 2px 8px rgba(0,0,0,.3); font-size: 1.2rem; display: flex; align-items: center; justify-content: center; margin: 0 10px 22px 0 !important; }
.lw-solo-locate i { transform: rotate(-45deg) translate(1px, 1px); }
.lw-solo-locate:active { background: #e8f6fb; }
.lw-solo-addbar { position: absolute; left: 10px; right: 10px; bottom: 10px; z-index: 600; display: flex; align-items: center; gap: .5rem; padding: .5rem .75rem;
  background: var(--lw-deep); color: #fff; border-radius: .75rem; box-shadow: 0 4px 14px rgba(0,0,0,.3); font-size: .9rem; }
.lw-solo-addbar span { flex: 1; }
.lw-solo-addhint { border: 1px dashed color-mix(in srgb, var(--lw-accent) 60%, transparent); border-radius: .9rem; padding: .8rem 1rem; background: color-mix(in srgb, var(--lw-accent) 7%, var(--bs-body-bg)); }
.lw-pin.is-boat span { border-color: #e26b2c; }
.lw-solo-welcome-ico { width: 72px; height: 72px; margin: 0 auto; border-radius: 20px; background: url("icons/icon-192.png") center / cover; box-shadow: 0 6px 20px rgba(16, 50, 74, .25); }
.lw-solo-sharetext { background: var(--bs-tertiary-bg); border-radius: .6rem; padding: .6rem .8rem; white-space: normal; }
.lw-solo-host { font-size: 1.35rem; font-weight: 700; overflow-wrap: anywhere; }
/* drawing a park */
.lw-solo-drawmap { height: 62vh; min-height: 340px; }
.lw-obst { background: none; border: 0; }
.lw-obst span { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; border-radius: 50%; background: rgba(255,255,255,.92); border: 2px solid #ffd23f; box-shadow: 0 1px 4px rgba(0,0,0,.4); font-size: 12px; line-height: 1; }
.lw-obst.is-big span { font-size: 16px; }
.lw-obst em { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); margin-top: 2px; white-space: nowrap; font-style: normal; font-size: 11px; font-weight: 600; color: #fff; text-shadow: 0 1px 2px #000, 0 0 3px #000; }
/* Bookings: the club app's planner look (planner.css), with park days */
[data-bs-theme="light"] .lw-solo .lwb { --buoy: #1aa3c8; --buoy-soft: #e1f4f9; --ink: #0b2f4a; }
.lwb-solo-days { display: grid; gap: .4rem; margin-bottom: .75rem; }
.lwb-solo-day { border-left: 2px solid var(--ink); border-radius: 0 .5rem .5rem 0; padding: .5rem .75rem; }
.lwb-solo-day > div { row-gap: .15rem; }
.lwb-solo-acts { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: .9rem; font-size: .8125rem; margin-top: .15rem; }
.lwb-solo-book { margin-top: .5rem; padding: .75rem; border-radius: .9rem; background: var(--bs-tertiary-bg); }
.lwb-solo-book .input-group-text { font-weight: 600; }
[data-bs-theme="dark"] .lw-solo .lwb { --buoy: #7fcbe6; --buoy-soft: #183a4a; }
/* Partner parks: their logo in a round pin (same size class as other pins, never larger than needed) */
.lw-pin.is-partner span { width: 40px; height: 40px; background: #fff; border-color: #1aa3c8; padding: 3px; overflow: hidden; }
.lw-pin.is-partner span img { width: 100%; height: 100%; object-fit: contain; border-radius: 50%; transform: rotate(45deg); }
.lw-pin.is-partner.is-fav span { background: #fff; border-color: #c99700; }
.lw-pin.is-partner i { position: absolute; top: -6px; right: -6px; font-style: normal; font-size: 13px; line-height: 1; color: #c99700; text-shadow: 0 0 2px #fff; }
.lw-partner { display: flex; align-items: center; gap: .6rem; }
.lw-partner img { width: 52px; height: 52px; border-radius: 50%; background: #fff; border: 1px solid var(--bs-border-color); object-fit: contain; padding: 3px; }
/* By wakers, for wakers */
.lw-solo-w4w { font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--lw-brand, #1aa3c8); margin-bottom: .15rem; }
.lw-solo-help { border: 1px dashed rgba(26,163,200,.5); border-radius: .75rem; padding: .6rem .8rem; background: rgba(26,163,200,.06); }
/* Install: the screen and the reminder bar */
.lw-solo-why li { margin-bottom: .25rem; }
.lw-solo-steps { background: rgba(26,163,200,.08); border-radius: .75rem; padding: .75rem .9rem; }
.lw-solo-steps .bi-box-arrow-up { font-size: 1.1em; color: #0a84ff; }
.lw-solo-installbar { background: linear-gradient(90deg, #0d4a6b, #1a7fa8); color: #fff; padding: .45rem .9rem; }
.lw-solo-installbar .btn-light { padding: .1rem .55rem; }
/* Crews */
.lw-solo .lwb-dots i.c.on, .lw-solo .lwb-legend i.c.on { background: var(--buoy, #1aa3c8); }
.lwb-solo-crew { border-left-color: var(--buoy, #1aa3c8) !important; background: rgba(26,163,200,.06); }
.lwb-h-crew { margin-top: 1rem; }
.lw-solo-crewbox { border-top: 1px solid var(--bs-border-color); padding-top: .75rem; }
/* Solo Pro, sponsors in the footer, confetti */
.lw-solo-badge { display: inline-block; font-weight: 700; padding: .2rem .65rem; border-radius: 1rem; background: rgba(26,163,200,.12); color: var(--lw-brand); }
.lw-solo-footsp { margin-bottom: .25rem; }
.lw-solo-confetti { position: fixed; inset: 0; pointer-events: none; z-index: 2000; overflow: hidden; }
.lw-solo-confetti i { position: absolute; top: -12px; width: 8px; height: 14px; border-radius: 2px; animation: lwconf 2.2s ease-in forwards; }
@keyframes lwconf { to { top: 105%; transform: rotate(540deg) translateX(30px); opacity: .7; } }
@media (prefers-reduced-motion: reduce) { .lw-solo-confetti { display: none; } }

/* 0.6: search box, webcams */
.lw-solo-find{position:relative;max-width:36rem}
.lw-solo-found{position:absolute;left:0;right:0;top:100%;z-index:1100}
.lw-solo-cam{display:block;width:100%;max-height:60vh;object-fit:contain;border-radius:.5rem;background:#000}
/* 0.6: the opening cards */
.lw-solo-intro{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.lw-solo-intro::-webkit-scrollbar{display:none}
.lw-solo-iocard{flex:0 0 100%;scroll-snap-align:center;padding:2.5rem 1.5rem 1rem;text-align:center;min-height:19rem;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(160deg,rgba(26,163,200,.14),transparent 70%)}
.lw-solo-ioemoji{font-size:4rem;line-height:1;margin-bottom:1rem}
.lw-solo-iodots{display:flex;justify-content:center;gap:.4rem;padding:.25rem 0 .5rem}
.lw-solo-iodots i{width:.55rem;height:.55rem;border-radius:50%;background:var(--bs-secondary-bg,#ccc);cursor:pointer;transition:all .2s}
.lw-solo-iodots i.on{width:1.4rem;border-radius:.3rem;background:#1aa3c8}
/* 0.7: park mode (eastpark.letswake.app) */
:root { --lw-park: #1d4f8c; }
.lw-park-logo { display: inline-flex; align-items: center; background: #fff; border-radius: .5rem; padding: .2rem .45rem; height: 2.4rem; }
.lw-park-logo img { max-height: 2rem; max-width: 9.5rem; object-fit: contain; }
.lw-park-by { font-size: .62rem; line-height: 1.05; opacity: .8; color: #fff; }
.lw-park-hero { background: #fff; border-radius: 1rem; padding: 1.25rem; text-align: center; border-top: .35rem solid var(--lw-park); box-shadow: 0 .25rem 1rem rgba(0,0,0,.08); margin-top: .5rem; }
[data-bs-theme=dark] .lw-park-hero { background: #fff; color: #1d2a33; }
.lw-park-hero img { max-width: 100%; max-height: 7rem; object-fit: contain; }
.lw-park-hours { text-align: center; margin: .9rem 0; font-weight: 500; }
.lw-parkmode .lw-park-btn { background: var(--lw-park); border-color: var(--lw-park); }
.lw-park-news { border-left: .25rem solid var(--lw-park); }
