/* tourguide standalone placeholder frontend: Material 3 tokens (light + dark)
   and the handful of primitives the placeholder pages use. Adapted from
   travel-portal's app.css. The real frontend will replace this. */
/* Material 3 tokens. Baseline scheme generated from a travel-blue source colour.
   Implemented as CSS custom properties rather than pulling the Material Web
   component library, so there is no JS build step and the page works on a
   phone with one request. */
:root{
  --md-primary:#00629d; --md-on-primary:#ffffff;
  --md-primary-container:#cfe5ff; --md-on-primary-container:#001d33;
  --md-secondary:#51606f; --md-secondary-container:#d4e4f6; --md-on-secondary-container:#0d1d2a;
  --md-tertiary:#68587a; --md-tertiary-container:#eedbff; --md-on-tertiary-container:#231533;
  --md-error:#ba1a1a; --md-error-container:#ffdad6; --md-on-error-container:#410002;
  --md-surface:#f8f9ff; --md-on-surface:#191c20;
  --md-surface-container-low:#f2f3fa; --md-surface-container:#eceef4;
  --md-surface-container-high:#e6e8ee; --md-surface-container-highest:#e1e2e8;
  --md-on-surface-variant:#42474e; --md-outline:#72777f; --md-outline-variant:#c2c7cf;
  --md-success:#146c2e; --md-success-container:#a6f4b8;
  --md-shadow:0 1px 2px rgba(0,0,0,.3),0 1px 3px 1px rgba(0,0,0,.15);
  --md-shadow-2:0 1px 2px rgba(0,0,0,.3),0 2px 6px 2px rgba(0,0,0,.15);
}
@media (prefers-color-scheme:dark){
:root{
  --md-primary:#9bcbff; --md-on-primary:#003354;
  --md-primary-container:#004a77; --md-on-primary-container:#cfe5ff;
  --md-secondary:#b8c8da; --md-secondary-container:#374957; --md-on-secondary-container:#d4e4f6;
  --md-tertiary:#d3bfe6; --md-tertiary-container:#4f4061; --md-on-tertiary-container:#eedbff;
  --md-error:#ffb4ab; --md-error-container:#93000a; --md-on-error-container:#ffdad6;
  --md-surface:#111418; --md-on-surface:#e1e2e8;
  --md-surface-container-low:#191c20; --md-surface-container:#1d2024;
  --md-surface-container-high:#272a2f; --md-surface-container-highest:#32353a;
  --md-on-surface-variant:#c2c7cf; --md-outline:#8c9199; --md-outline-variant:#42474e;
  --md-success:#8bd89d; --md-success-container:#00522018;
}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--md-surface);color:var(--md-on-surface);
  font-family:"Roboto Flex","Roboto",system-ui,-apple-system,sans-serif;
  font-size:16px;line-height:1.5;padding-bottom:env(safe-area-inset-bottom)}
a{color:var(--md-primary);text-decoration:none}
.mi{font-family:"Material Symbols Outlined";font-weight:400;font-style:normal;
  font-size:20px;line-height:1;vertical-align:middle;letter-spacing:normal;
  text-transform:none;display:inline-block;white-space:nowrap;direction:ltr;
  -webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;flex:0 0 auto}

/* --- top app bar --- */
.appbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;
  padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));
  background:var(--md-surface-container);color:var(--md-on-surface)}
.appbar h1{margin:0;font-size:20px;font-weight:500;letter-spacing:0}
.appbar .sub{font-size:12px;color:var(--md-on-surface-variant)}
.grow{flex:1}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
  border-radius:50%;border:none;background:transparent;color:var(--md-on-surface-variant);cursor:pointer}
.iconbtn:hover{background:var(--md-surface-container-highest)}

.wrap{max-width:1100px;margin:0 auto;padding:12px 12px 96px}
@media(min-width:720px){.wrap{padding:20px 20px 40px}}

/* --- chips --- */
.chipset{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;-webkit-overflow-scrolling:touch;
  scrollbar-width:none}
.chipset::-webkit-scrollbar{display:none}
.chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:8px;
  border:1px solid var(--md-outline);background:transparent;color:var(--md-on-surface-variant);
  font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer}
.chip.sel{background:var(--md-secondary-container);color:var(--md-on-secondary-container);
  border-color:transparent}
.chip.sel .mi{color:var(--md-on-secondary-container)}
.chip small{opacity:.75;font-weight:400}

/* --- cards --- */
.card{background:var(--md-surface-container-low);border-radius:16px;padding:16px;margin-bottom:12px}
.card.out{border:1px solid var(--md-outline-variant);background:transparent}
.card h2{margin:0 0 12px;font-size:14px;font-weight:500;letter-spacing:.1px;
  color:var(--md-on-surface-variant);text-transform:uppercase}
.hero{background:var(--md-primary-container);color:var(--md-on-primary-container)}
.hero h2{color:inherit;text-transform:none;font-size:24px;font-weight:500;margin-bottom:4px}
.hero .meta{font-size:14px;opacity:.9}

/* --- stat tiles --- */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px;margin-top:14px}
.tile{background:rgba(0,0,0,.06);border-radius:12px;padding:10px 12px}
@media (prefers-color-scheme:dark){.tile{background:rgba(255,255,255,.08)}}
.tile b{display:block;font-size:22px;font-weight:500;line-height:1.2}
.tile span{font-size:11px;opacity:.85}

/* --- badges --- */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;
  font-size:11px;font-weight:500;background:var(--md-surface-container-high);
  color:var(--md-on-surface-variant)}
.badge .mi{font-size:14px}
.badge.warn{background:var(--md-tertiary-container);color:var(--md-on-tertiary-container)}
.badge.err{background:var(--md-error-container);color:var(--md-on-error-container)}
.badge.ok{background:var(--md-success-container);color:var(--md-success)}
.badge.pri{background:var(--md-primary-container);color:var(--md-on-primary-container)}

/* --- list items (48dp targets) --- */
.row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;min-height:48px;
  border-bottom:1px solid var(--md-outline-variant)}
.row:last-child{border-bottom:none}
.row .txt{flex:1;min-width:0}
.row .sup{font-size:12px;color:var(--md-on-surface-variant);margin-top:2px}
.strike{text-decoration:line-through;opacity:.55}

/* --- checkbox --- */
form.tickform{display:inline;margin:0}
.tick{width:40px;height:40px;border-radius:50%;border:none;background:transparent;
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  color:var(--md-on-surface-variant);flex:0 0 auto;margin:-8px 0 0 -8px}
.tick:hover{background:var(--md-surface-container-highest)}
.tick .mi{font-size:24px}
.tick.on .mi{color:var(--md-primary)}

/* --- day timeline --- */
.day{background:var(--md-surface-container-low);border-radius:16px;margin-bottom:10px;overflow:hidden}
.day.now{outline:2px solid var(--md-primary)}
.day>summary{cursor:pointer;list-style:none;padding:14px 16px;display:flex;gap:12px;align-items:center}
.day>summary::-webkit-details-marker{display:none}
.day>summary .mi.exp{transition:transform .15s;color:var(--md-on-surface-variant)}
.day[open]>summary .mi.exp{transform:rotate(180deg)}
.dnum{display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:12px;background:var(--md-surface-container-high);flex:0 0 auto}
.dnum b{font-size:17px;font-weight:500;line-height:1}
.dnum span{font-size:10px;text-transform:uppercase;color:var(--md-on-surface-variant)}
.day.now .dnum{background:var(--md-primary);color:var(--md-on-primary)}
.day.now .dnum span{color:var(--md-on-primary);opacity:.85}
.dhead{flex:1;min-width:0}
.dhead .t{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dhead .s{font-size:12px;color:var(--md-on-surface-variant);display:flex;gap:8px;
  align-items:center;flex-wrap:wrap;margin-top:3px}
.dbody{padding:0 16px 16px}
.alert{display:flex;gap:8px;align-items:flex-start;background:var(--md-tertiary-container);
  color:var(--md-on-tertiary-container);border-radius:12px;padding:10px 12px;
  font-size:13.5px;margin-bottom:12px}
.sect{margin-top:14px}
.sect .lbl{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:500;
  letter-spacing:.4px;text-transform:uppercase;color:var(--md-on-surface-variant);margin-bottom:6px}
.avatar{width:22px;height:22px;border-radius:50%;background:var(--md-tertiary-container);
  color:var(--md-on-tertiary-container);display:inline-flex;align-items:center;
  justify-content:center;font-size:11px;font-weight:700}
/* A Robohash robot in the avatar: the span's colour shows as a 2px ring. */
.avatar.pic{padding:2px;overflow:hidden}
.avatar.pic img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;background:var(--md-surface)}
.avatar.big{width:72px;height:72px;padding:3px}
.appbar .iconbtn .avatar{width:32px;height:32px}
.party{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 3px;border-radius:14px;
  font-size:13px;background:var(--md-surface-container-high);color:var(--md-on-surface-variant)}
.chip .avatar{width:24px;height:24px}
.act{display:flex;gap:10px;align-items:flex-start;padding:9px 0;
  border-bottom:1px solid var(--md-outline-variant)}
.act:last-child{border-bottom:none}
.slotpill{flex:0 0 74px;font-size:11px;font-weight:500;text-transform:uppercase;
  letter-spacing:.4px;color:var(--md-on-surface-variant);padding-top:3px}
.act .body{flex:1;min-width:0}
.dirbtn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:40px;
  min-width:40px;padding:0 12px;border-radius:20px;background:var(--md-secondary-container);
  color:var(--md-on-secondary-container);font-size:13px;font-weight:500;flex:0 0 auto}
.dirbtn .mi{font-size:18px}
@media(max-width:520px){.dirbtn span.lbl2{display:none}.dirbtn{padding:0;width:40px}}
.cols{display:grid;grid-template-columns:1fr;gap:8px}
@media(min-width:760px){.cols{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;
  color:var(--md-on-surface-variant);font-weight:500;padding:6px 8px;
  border-bottom:1px solid var(--md-outline-variant)}
td{padding:10px 8px;border-bottom:1px solid var(--md-outline-variant);vertical-align:top}
tr:last-child td{border-bottom:none}
.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.empty{color:var(--md-on-surface-variant);font-size:14px;padding:10px 0}
.btn{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 20px;border-radius:20px;
  background:var(--md-primary);color:var(--md-on-primary);font-weight:500;font-size:14px;border:none;cursor:pointer}
.btn.tonal{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}
.btn.text{background:transparent;color:var(--md-primary);padding:0 12px}
.center{max-width:400px;margin:14vh auto;text-align:center}

.toast{display:flex;gap:8px;align-items:flex-start;background:var(--md-secondary-container);
  color:var(--md-on-secondary-container);border-radius:12px;padding:10px 12px;
  font-size:13.5px;margin-bottom:12px}
/* Touch screens: 44px targets, and never an input under 16px - iOS zooms the
   whole page into any field smaller than that and leaves it zoomed. */
@media (pointer:coarse){
  input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=file]),
  select,textarea{font-size:16px!important}
  .iconbtn,.tick{width:44px;height:44px}
  .chip:not(.viewnav .chip){min-height:44px}
  .btn{height:44px}
  .dbtn{height:36px;padding:0 13px}
  .fb>summary,.strike>summary{min-height:44px;min-width:44px}
  a,button,summary,label{-webkit-tap-highlight-color:transparent}
}
/* Nothing may push the page sideways on a narrow screen. */
body{overflow-x:clip}
.spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;
  border-radius:50%;vertical-align:-2px;margin-right:6px;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation:none}}


/* --- placeholder frontend --- */
.fieldset{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:620px){.fieldset{grid-template-columns:1fr 1fr}}
.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-on-surface-variant);min-width:0}
.field.wide{grid-column:1/-1}
.field input,.field select{height:44px;border-radius:10px;border:1px solid var(--md-outline);
  background:var(--md-surface-container-high);color:var(--md-on-surface);padding:0 12px;
  font-size:16px;font-family:inherit;outline:none;min-width:0;width:100%}
.field input:focus,.field select:focus{border-color:var(--md-primary);border-width:2px}
.field small{font-size:11px;opacity:.85}
.formacts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.row a{color:var(--md-on-surface);font-weight:500}
.btn:disabled{opacity:.6;cursor:default}
.placeholder-note{font-size:12px;color:var(--md-on-surface-variant);text-align:center;margin:18px 0 0}
.stop .num{flex:0 0 auto;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;
  justify-content:center;background:var(--md-primary-container);color:var(--md-on-primary-container);
  font-size:13px;font-weight:600}
.stop p{margin:6px 0 0;font-size:14px;line-height:1.55}
.hidden{display:none!important}
