:root{
  --red:#93301F; --red-deep:#6E2317;
  --plaster:#E8EFEA; --plaster-2:#D5E1DA;
  --obsidian:#10201C;
  --gold:#C9992F; --line:#B3C4BB;
  --jade:#2F6B4F; --blue:#1B5F7A; --teal:#3F8A8A;
  --font-display:"Big Shoulders Display",Impact,sans-serif;
  --font-body:"Archivo",Arial,sans-serif;
  --font-mono:"IBM Plex Mono",monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-body);background:var(--plaster);color:var(--obsidian);line-height:1.5;font-size:15px}
a{color:var(--red)}
a:hover{color:var(--red-deep)}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* ---- top bar ---- */
.topbar{position:sticky;top:0;z-index:50;background:var(--obsidian);color:var(--plaster);display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:56px;border-bottom:4px solid var(--red)}
.brand{font-family:var(--font-display);font-weight:800;font-size:22px;letter-spacing:.08em;color:var(--plaster)}
.brand em{color:var(--gold);font-style:normal}
.topbar-right{display:flex;align-items:center;gap:16px}
.who{font-size:12.5px;font-family:var(--font-mono);letter-spacing:.06em;color:#B9C7BF}
.who .role{color:var(--gold);text-transform:uppercase;margin-left:6px}
.logout-form button{background:transparent;color:var(--plaster);border:1px solid #4C594F;padding:6px 12px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border-radius:2px}
.logout-form button:hover{border-color:var(--gold);color:var(--gold)}

/* ---- shell layout ---- */
.shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 56px)}
.sidenav{background:#F1F5F1;border-right:1px solid var(--line);padding:24px 0;display:flex;flex-direction:column}
.sidenav a{display:block;padding:12px 24px;color:var(--obsidian);text-decoration:none;font-weight:600;font-size:14px;border-left:3px solid transparent}
.sidenav a:hover{background:var(--plaster-2);color:var(--obsidian)}
.sidenav a.active{border-left-color:var(--red);background:var(--plaster);color:var(--red-deep)}
.content{padding:32px 40px 80px;max-width:1100px}
@media(max-width:720px){
  .shell{grid-template-columns:1fr}
  .sidenav{flex-direction:row;overflow-x:auto;padding:0;border-right:none;border-bottom:1px solid var(--line)}
  .sidenav a{padding:14px 18px;border-left:none;border-bottom:3px solid transparent;white-space:nowrap}
  .sidenav a.active{border-bottom-color:var(--red);border-left:none}
  .content{padding:20px}
}

/* ---- page pieces ---- */
.page-h1{font-family:var(--font-display);font-weight:800;font-size:36px;letter-spacing:.02em;text-transform:uppercase;margin-bottom:8px}
.page-h2{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.04em;text-transform:uppercase;margin:32px 0 12px;color:var(--obsidian)}
.muted{color:#556;font-size:13.5px}
.crumbs{display:inline-block;margin-bottom:12px;color:var(--red);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin:16px 0 8px}
.card{background:#fff;border:1px solid var(--line);padding:20px 22px;border-left:4px solid var(--gold)}
.card-num{font-family:var(--font-display);font-weight:800;font-size:38px;line-height:1;color:var(--obsidian)}
.card-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#556;margin-top:6px}

.tbl{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);margin-top:8px}
.tbl th,.tbl td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:14px}
.tbl th{background:#F1F5F1;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:#556}
.tbl tr:last-child td{border-bottom:none}

.pill{display:inline-block;padding:3px 10px;border-radius:2px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}
.pill-open{background:#DDEBE0;color:#255C41}
.pill-full{background:#F4E3C1;color:#7A5416}
.pill-cancelled{background:#F1D6D0;color:#6E2317}

.empty{background:#F6F9F5;border:1px dashed var(--line);padding:24px;text-align:center;color:#556}

.btn{display:inline-block;background:var(--red);color:var(--plaster);border:none;padding:10px 18px;font-family:var(--font-display);font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:14px;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--red-deep);color:var(--plaster)}
.btn-ghost{background:transparent;color:var(--red);border:1px solid var(--red);padding:8px 14px;font-size:12.5px}
.btn-ghost:hover{background:var(--red);color:var(--plaster)}
.btn-link{background:transparent;color:var(--red);padding:8px 4px;font-size:12.5px;border:none}
.btn-danger{background:transparent;color:#6E2317;border:1px solid #6E2317;padding:8px 14px;font-size:12.5px}
.btn-danger:hover{background:#6E2317;color:var(--plaster)}

.flash{background:#DDEBE0;color:#255C41;padding:10px 14px;border-left:4px solid var(--jade);margin:10px 0;font-size:14px}
.flash-err{background:#F1D6D0;color:#6E2317;border-left-color:#6E2317}

/* ---- auth card ---- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--obsidian);padding:24px}
.auth-card{background:var(--plaster);max-width:420px;width:100%;padding:36px 32px;border-top:4px solid var(--red)}
.auth-brand{font-family:var(--font-display);font-weight:800;font-size:26px;letter-spacing:.08em;text-align:center;margin-bottom:4px}
.auth-brand em{color:var(--gold);font-style:normal}
.auth-sub{text-align:center;font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#556;margin-bottom:28px}
.auth-form label{display:block;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:#556;margin-bottom:6px}
.auth-form input{width:100%;padding:12px 14px;border:1px solid var(--line);background:#fff;font-family:var(--font-body);font-size:15px;margin-bottom:16px}
.auth-form button{width:100%;background:var(--red);color:var(--plaster);border:none;padding:14px;font-family:var(--font-display);font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:15px;cursor:pointer}
.auth-form button:hover{background:var(--red-deep)}
.auth-err{color:#6E2317;font-size:13px;margin-bottom:12px}
.auth-sent h2{font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:.04em;text-transform:uppercase;margin-bottom:10px}
.auth-sent p{margin-bottom:10px}

/* ---- tour tiles ---- */
.tour-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:10px}
.tour-tile{background:#fff;border:1px solid var(--line);padding:16px}
.tour-name{font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:.03em;text-transform:uppercase}
.tour-loc{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#556;margin-top:4px}
.tour-actions{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}

/* ---- filters ---- */
.filters{display:flex;gap:16px;flex-wrap:wrap;margin:16px 0 20px;background:#fff;border:1px solid var(--line);padding:14px 16px}
.filters label{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#556;display:flex;flex-direction:column;gap:6px}
.filters select,.filters input{padding:8px 10px;border:1px solid var(--line);font-family:var(--font-body);font-size:14px;background:#fff}

/* ---- calendar ---- */
#calendar{background:#fff;border:1px solid var(--line);padding:18px;margin-top:8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-head{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#556;text-align:center;padding:6px 0}
.cal-day{position:relative;aspect-ratio:1;background:#F6F9F5;border:1px solid var(--line);cursor:pointer;display:flex;align-items:flex-start;justify-content:flex-end;padding:6px 8px;font-family:var(--font-mono);font-size:12px;color:#334;user-select:none;transition:background .1s}
.cal-day:hover{background:#EAF2E9}
.cal-day.empty{background:transparent;border-color:transparent;cursor:default}
.cal-day.past{background:transparent;border:1px dashed var(--line);color:#B3C4BB;cursor:not-allowed}
.cal-day.on{background:var(--jade);color:var(--plaster);border-color:var(--jade);font-weight:700}
.cal-day.on:hover{background:#255C41}
.cal-day.busy{opacity:.5;pointer-events:none}

/* ---- invite / tour form ---- */
.invite-form .row{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.invite-form input{flex:1 1 200px;padding:10px 12px;border:1px solid var(--line);background:#fff;font-family:var(--font-body);font-size:14px}
.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:10px 0 18px}
.check-tile{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);padding:10px 14px;cursor:pointer}
.check-tile input{width:18px;height:18px;accent-color:var(--red)}
.check-tile strong{display:block;font-size:14px}
.check-tile small{display:block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#556}
.danger-form{margin-top:32px;border-top:1px solid var(--line);padding-top:20px}

/* ---- profile ---- */
.profile-grid{display:grid;grid-template-columns:220px 1fr;gap:32px;margin-top:20px;align-items:start}
@media(max-width:720px){.profile-grid{grid-template-columns:1fr}}
.profile-photo{width:220px;height:220px;background:#F1F5F1;border:1px solid var(--line);overflow:hidden;display:flex;align-items:center;justify-content:center}
.profile-photo img{width:100%;height:100%;object-fit:cover;display:block}
.profile-photo-empty{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8899a0;text-align:center;padding:20px}
.profile-photo-form{margin-top:16px;display:flex;flex-direction:column;gap:8px;width:220px}
.profile-photo-form label{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#556}
.profile-photo-form input[type=file]{font-family:var(--font-body);font-size:13px}
.profile-form{background:#fff;border:1px solid var(--line);padding:24px}
.profile-form label{display:block;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:#556;margin:14px 0 6px}
.profile-form label:first-of-type{margin-top:0}
.profile-form input,.profile-form textarea{width:100%;padding:10px 12px;border:1px solid var(--line);background:#fff;font-family:var(--font-body);font-size:15px;color:var(--obsidian)}
.profile-form textarea{resize:vertical;min-height:140px;line-height:1.55}
.profile-form button{margin-top:20px}
