.hub-section{padding-top:24px}
.hub-shell{display:grid;gap:18px;min-width:0}
.hub-shell>*{min-width:0}
.hub-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.hub-identity{display:flex;align-items:center;gap:10px;font-weight:850}
.hub-status-dot{width:10px;height:10px;border-radius:50%;background:#45a66f;box-shadow:0 0 0 5px rgba(69,166,111,.13)}
.hub-actions{display:flex;gap:8px;flex-wrap:wrap}
.hub-actions .btn{padding:10px 13px}
.hub-kicker{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--pine);margin-bottom:4px}
.hub-card{background:#fff;border:1px solid #dfeae7;border-radius:22px;padding:18px;box-shadow:0 10px 30px rgba(15,76,92,.09)}
.hub-card h3,.hub-card h4{margin:0 0 7px}
.hub-card p{margin:0;color:var(--muted)}
.today-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:12px}
.weather-now{background:linear-gradient(145deg,#e9f7f7,#fff9ea)}
.weather-value{font-size:clamp(2rem,9vw,3.6rem);font-weight:950;line-height:1;color:var(--lake);margin:8px 0}
.weather-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.weather-alert{margin-top:12px;padding:12px;border-radius:14px;background:#fff3e5;border:1px solid #f0d19a;color:#6a4321;font-weight:750}
.weather-guide{background:linear-gradient(145deg,#eef8f7,#fffaf0)}
.weather-guide>p{margin-top:8px}
.weather-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:14px 0}
.weather-guide-grid>div{display:grid;gap:4px;padding:12px;border-radius:14px;background:rgba(255,255,255,.82);border:1px solid #dbe9e6}
.weather-guide-grid span,.notification-panel span{color:var(--muted);font-size:.84rem}
.notification-panel{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;border-radius:16px;background:#fff;border:1px solid #d8e6e3}
.notification-panel>div:first-child{display:grid;gap:3px}
.notification-actions{display:flex;gap:8px;flex-wrap:wrap}
.install-help{margin-top:10px;padding:11px 13px;border-radius:13px;background:#fff3dd;color:#62431f;font-weight:750}
.notification-preferences{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;align-items:center;margin:12px 0}
.notification-preferences label{display:flex;align-items:center;gap:7px;font-size:.84rem;font-weight:800}
.notification-preferences input[type="checkbox"]{width:19px;height:19px}
.quiet-hours{grid-column:1/4;display:flex;align-items:center;gap:7px;font-size:.84rem;color:var(--muted)}
.quiet-hours input{font:inherit;padding:7px;border:1px solid #cddedb;border-radius:9px;color:var(--ink);background:#fff}
.plan-suggestion-list{display:grid;gap:10px}
.plan-suggestion{border-left:5px solid var(--sun)}
.plan-suggestion-swap{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0;font-weight:900;color:var(--lake)}
.plan-suggestion-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.park-feed-card{margin-top:12px;background:linear-gradient(145deg,#fff,#f6fbf3)}
.park-feed-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.park-feed-card>p{margin-bottom:12px}
.park-event-list{display:grid;gap:8px;margin:12px 0}
.park-event{display:grid;grid-template-columns:112px minmax(180px,1fr) minmax(260px,1.2fr);gap:12px;align-items:start;padding:12px;border-radius:15px;background:#f5faf9;border:1px solid #dcebe7}
.park-event.is-now{background:#fff6df;border-color:#efce83}
.park-event-time{font-weight:900;color:var(--lake)}
.park-event-title{font-weight:900;color:var(--ink)}
.park-event-detail{color:var(--muted);font-size:.88rem;margin-top:2px}
.park-vote-controls{align-self:center}
.park-feed-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 8px}
.campground-map-card{overflow:hidden}
.campground-map-card>p{margin-bottom:12px}
.campground-map-link{display:block;border:1px solid #dce8e5;border-radius:16px;overflow:hidden;background:#eef5e8}
.campground-map-link img{display:block;width:100%;height:auto}
.map-callout{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:12px;padding:11px 13px;border-radius:14px;background:#eef7f7;color:var(--lake)}
.map-callout span{color:var(--muted);font-size:.84rem}
.safety-strip{display:flex;gap:10px;align-items:flex-start;padding:14px;border-radius:16px;background:#eef7f7;border:1px solid #cce3e2;color:#244f59}
.recommendation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.recommendation{position:relative;padding-top:40px}
.recommendation-rank{position:absolute;top:14px;left:14px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--lake);color:#fff;font-weight:900;font-size:.8rem}
.recommendation .tiny{margin-top:8px}
.hub-tabs{display:flex;gap:8px;overflow:auto;padding-bottom:3px;min-width:0;max-width:100%}
.hub-tab,.member-chip,.vote-btn{border:1px solid #d7e5e2;background:#fff;color:var(--ink);font:inherit;font-weight:800;cursor:pointer}
.hub-tab{padding:9px 13px;border-radius:999px;white-space:nowrap}
.hub-tab[aria-selected="true"],.member-chip.active{background:var(--lake);color:#fff;border-color:var(--lake)}
.member-picker{display:flex;gap:8px;overflow:auto;padding:4px 0 10px;min-width:0;max-width:100%}
.member-chip{border-radius:14px;padding:10px 12px;white-space:nowrap;min-height:44px}
.activity-list{display:grid;gap:10px}
.activity-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(270px,1.5fr);gap:14px;align-items:center}
.activity-title{font-size:1.03rem;font-weight:900}
.activity-detail{font-size:.82rem;color:var(--muted);margin-top:3px}
.vote-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.vote-btn{min-height:48px;border-radius:13px;padding:5px;font-size:1.1rem}
.vote-btn span{display:block;font-size:.66rem;color:var(--muted);line-height:1.1;margin-top:2px}
.vote-btn.active{background:#e6f4f1;border-color:var(--pine);box-shadow:inset 0 0 0 1px var(--pine)}
.vote-summary{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.mini-vote{font-size:.72rem;padding:3px 7px;border-radius:999px;background:#f1f5f4;color:#456167}
.schedule-days{display:grid;gap:13px}
.schedule-day{border-left:4px solid var(--sky);padding-left:13px}
.schedule-day h3{margin:0 0 8px}
.schedule-item{display:grid;grid-template-columns:62px 1fr auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid #edf2f1}
.schedule-item:first-of-type{border-top:0}
.schedule-time{font-weight:900;color:var(--lake)}
.schedule-title{font-weight:850}
.schedule-note{font-size:.78rem;color:var(--muted)}
.icon-btn{border:1px solid #d7e5e2;background:#fff;border-radius:12px;min-width:44px;min-height:44px;cursor:pointer;font-size:1rem}
.revision-list{display:grid;gap:8px}
.revision{padding:10px 12px;border-left:4px solid var(--sun);background:#fff8eb;border-radius:0 12px 12px 0}
.fun-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fun-grid>.span12{grid-column:1/-1}
.scavenger-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}
.scavenger-item{display:flex;gap:8px;align-items:center;background:#f5f9f8;border-radius:12px;padding:9px;font-weight:750}
.memory-form{display:grid;gap:9px;margin-top:10px}
.memory-form select,.memory-form textarea{width:100%;font:inherit;border:1px solid #cddedb;border-radius:12px;padding:11px;background:#fff;color:var(--ink)}
.memory-list{display:grid;gap:7px;margin-top:12px}
.memory{padding:9px 11px;border-radius:12px;background:#fff8eb}
.empty-state{padding:18px;text-align:center;color:var(--muted);border:1px dashed #cbdad7;border-radius:16px}
.loading-pulse{animation:pulse 1.5s ease-in-out infinite}
.toast{position:fixed;left:50%;bottom:82px;transform:translateX(-50%);z-index:80;background:#163239;color:#fff;padding:11px 15px;border-radius:999px;font-weight:800;box-shadow:0 10px 30px rgba(0,0,0,.25);max-width:calc(100% - 30px);text-align:center}
.hidden{display:none!important}
@keyframes pulse{50%{opacity:.5}}
@media(max-width:820px){
  .today-grid,.recommendation-grid,.fun-grid{grid-template-columns:1fr}
  .weather-guide-grid,.notification-preferences{grid-template-columns:1fr}
  .quiet-hours{grid-column:auto}
  .activity-row{grid-template-columns:1fr}
  .schedule-item{grid-template-columns:54px 1fr auto}
  .hub-toolbar{align-items:flex-start}
  .section-head{align-items:flex-start;flex-direction:column;gap:6px}
}
@media(max-width:430px){
  .hub-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .hub-actions .btn{width:100%;min-width:0;white-space:normal;line-height:1.2}
  .scavenger-grid{grid-template-columns:1fr}
  .vote-btn span{font-size:.58rem}
  .park-feed-head{align-items:flex-start;flex-direction:column}
  .park-event{grid-template-columns:1fr;gap:4px}
  .park-feed-actions{display:grid;grid-template-columns:1fr 1fr}
  .park-feed-actions .btn:first-child{grid-column:1/-1}
  .notification-panel{align-items:flex-start;flex-direction:column}
}
@media print{.hub-toolbar,.hub-actions,.vote-controls,.member-picker,.hub-tabs,.icon-btn,#memoryForm{display:none!important}}
