/* ============================================================
   FONTS — Abu Dhabi Basis (private use, non-commercial) for Latin/
   numerals, Noto Serif/Sans SC (Google Fonts) fills in CJK glyphs
   automatically via the font-family fallback stack.
   ============================================================ */
@font-face{
  font-family:"Abu Dhabi Basis";
  font-weight:300;
  font-style:normal;
  font-display:swap;
  src:url("/fonts/AbuDhabiBasisLight.ttf") format("truetype");
}
@font-face{
  font-family:"Abu Dhabi Basis";
  font-weight:400;
  font-style:normal;
  font-display:swap;
  src:url("/fonts/AbuDhabiBasisRegular.ttf") format("truetype");
}
@font-face{
  font-family:"Abu Dhabi Basis";
  font-weight:700;
  font-style:normal;
  font-display:swap;
  src:url("/fonts/AbuDhabiBasisBold.ttf") format("truetype");
}

/* ============ Design tokens ============ */
:root{
  --color-bg:#F7F4F1;
  --color-bg-deep:#F1ECE7;
  --color-surface:#FFFFFF;
  --color-surface-raised:#FFFFFF;
  --color-primary-tint:#F4E9EA;
  --color-primary-tint-strong:#EAD6D8;
  --color-primary:#7A1B29;
  --color-primary-deep:#4E1017;
  --color-primary-strong:#5E141F;
  --color-on-primary:#FBF3EC;
  --color-text:#241C1A;
  --color-text-secondary:#6B5F5A;
  --color-text-faint:#8C8079;
  --color-accent:#9C7526;
  --color-accent-deep:#7A5A17;
  --color-accent-tint:#F1E7D2;
  --color-accent-strong:#7A5A17;
  --color-border:#E6DDD5;
  --color-border-strong:#D6C8BE;
  --status-good:#4F7A5C;
  --status-good-tint:#E7F0E8;
  --status-warn:#B27A2E;
  --status-warn-tint:#F8EEDD;
  --status-urgent:#96363A;
  --status-urgent-tint:#F5E6E5;
  --status-neutral:#6B5F5A;
  --status-neutral-tint:#EDE7E2;
  --shadow-card:0 1px 2px rgba(41,17,15,.05), 0 8px 24px -6px rgba(41,17,15,.10);
  --shadow-raised:0 4px 10px rgba(41,17,15,.08), 0 16px 40px -12px rgba(41,17,15,.18);
  --shadow-gate:0 24px 70px -20px rgba(20,6,8,.55);
  --radius-s:7px;
  --radius-m:12px;
  --radius-l:20px;
  --font-display:"Abu Dhabi Basis","Noto Serif SC","Source Han Serif SC","PingFang SC","Microsoft YaHei",Georgia,serif;
  --font-ui:"Abu Dhabi Basis","Noto Sans SC","PingFang SC","Microsoft YaHei",-apple-system,"Segoe UI",sans-serif;
  --font-body:"Abu Dhabi Basis","Noto Sans SC","PingFang SC","Microsoft YaHei",-apple-system,"Segoe UI",sans-serif;
  --sidebar-w:280px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --color-bg:#15100F;
    --color-bg-deep:#0F0B0A;
    --color-surface:#221A19;
    --color-surface-raised:#2A201F;
    --color-primary-tint:#3C2023;
    --color-primary-tint-strong:#4A262A;
    --color-primary:#E29AA0;
    --color-primary-deep:#8C3038;
    --color-primary-strong:#EEB4B9;
    --color-on-primary:#FBF3EC;
    --color-text:#EDE5E1;
    --color-text-secondary:#B7A9A2;
    --color-text-faint:#8F8079;
    --color-accent:#D7B369;
    --color-accent-deep:#E8C888;
    --color-accent-tint:#3B321F;
    --color-accent-strong:#E8C888;
    --color-border:#3A2E2B;
    --color-border-strong:#4A3A36;
    --status-good:#8FBE9B;
    --status-good-tint:#20302A;
    --status-warn:#E0B26E;
    --status-warn-tint:#39301E;
    --status-urgent:#E39A9C;
    --status-urgent-tint:#3B2423;
    --status-neutral:#B7A9A2;
    --status-neutral-tint:#2A2220;
    --shadow-card:0 1px 2px rgba(0,0,0,.35), 0 8px 24px -6px rgba(0,0,0,.4);
    --shadow-raised:0 4px 10px rgba(0,0,0,.4), 0 20px 46px -14px rgba(0,0,0,.55);
    --shadow-gate:0 24px 70px -16px rgba(0,0,0,.7);
  }
}
:root[data-theme="dark"]{
  --color-bg:#15100F;
  --color-bg-deep:#0F0B0A;
  --color-surface:#221A19;
  --color-surface-raised:#2A201F;
  --color-primary-tint:#3C2023;
  --color-primary-tint-strong:#4A262A;
  --color-primary:#E29AA0;
  --color-primary-deep:#8C3038;
  --color-primary-strong:#EEB4B9;
  --color-on-primary:#FBF3EC;
  --color-text:#EDE5E1;
  --color-text-secondary:#B7A9A2;
  --color-text-faint:#8F8079;
  --color-accent:#D7B369;
  --color-accent-deep:#E8C888;
  --color-accent-tint:#3B321F;
  --color-accent-strong:#E8C888;
  --color-border:#3A2E2B;
  --color-border-strong:#4A3A36;
  --status-good:#8FBE9B;
  --status-good-tint:#20302A;
  --status-warn:#E0B26E;
  --status-warn-tint:#39301E;
  --status-urgent:#E39A9C;
  --status-urgent-tint:#3B2423;
  --status-neutral:#B7A9A2;
  --status-neutral-tint:#2A2220;
  --shadow-card:0 1px 2px rgba(0,0,0,.35), 0 8px 24px -6px rgba(0,0,0,.4);
  --shadow-raised:0 4px 10px rgba(0,0,0,.4), 0 20px 46px -14px rgba(0,0,0,.55);
  --shadow-gate:0 24px 70px -16px rgba(0,0,0,.7);
}
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--color-bg);
  color:var(--color-text);
  font-family:var(--font-body);
  font-weight:400;
  font-size:15.5px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:var(--font-display);
  font-weight:700;
  color:var(--color-text);
  text-wrap:balance;
  line-height:1.3;
  margin:0 0 .5em;
}
strong{font-weight:700;}
a{color:var(--color-primary);}
img{max-width:100%;}
button,input{font-family:inherit;}
:focus-visible{outline:2.5px solid var(--color-accent);outline-offset:2px;border-radius:4px;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
.skip-link{position:absolute;left:8px;top:-48px;background:var(--color-primary);color:var(--color-on-primary);padding:.6em 1em;border-radius:var(--radius-s);z-index:400;transition:top .15s;}
.skip-link:focus{top:8px;}
svg.icon{width:1em;height:1em;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
svg.icon.filled-dot circle[data-fill]{fill:currentColor;}

/* ============ Layout shell ============ */
.app{display:flex;min-height:100vh;}
.app[hidden]{display:none;}
.topbar{
  display:none;
  position:sticky;top:0;z-index:60;
  align-items:center;gap:.75rem;
  padding:.7rem 1rem;
  background:var(--color-surface);
  border-bottom:1px solid var(--color-border);
}
.topbar .brand-mark{font-family:var(--font-display);font-weight:700;font-size:1rem;color:var(--color-primary);}
.hamburger{
  width:38px;height:38px;border-radius:var(--radius-s);
  border:1px solid var(--color-border-strong);background:var(--color-surface);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;
}
.hamburger span{display:block;width:18px;height:2px;background:var(--color-text);}

.sidebar{
  width:var(--sidebar-w);flex:0 0 auto;
  border-right:1px solid var(--color-border);
  background:var(--color-surface);
  position:sticky;top:0;height:100vh;overflow-y:auto;
  padding:0 0 2rem;
}
.sidebar-brand{
  padding:1.5rem 1.35rem 1.25rem;
  background:linear-gradient(160deg,var(--color-primary-deep) 0%,var(--color-primary) 100%);
  color:var(--color-on-primary);
  display:flex;gap:.8rem;align-items:flex-start;
}
.brand-crest{
  flex:0 0 auto;width:38px;height:38px;border-radius:50%;
  background:rgba(251,243,236,.14);border:1px solid rgba(251,243,236,.4);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-display);font-weight:700;font-size:.72rem;letter-spacing:.02em;color:var(--color-on-primary);
}
.sidebar-brand .org{display:block;font-size:.68rem;letter-spacing:.07em;color:rgba(251,243,236,.72);text-transform:uppercase;margin-bottom:.3rem;}
.sidebar-brand .title{font-family:var(--font-display);font-weight:700;font-size:1.08rem;line-height:1.32;}
.sidebar-brand .sub{display:block;font-size:.74rem;color:rgba(251,243,236,.65);margin-top:.35rem;}

.navgroup{margin-top:1.1rem;}
.navgroup-label{
  display:flex;align-items:center;gap:.4rem;
  padding:0 1.35rem .5rem;font-size:.74rem;letter-spacing:.05em;
  color:var(--color-accent-strong);text-transform:uppercase;font-weight:700;font-family:var(--font-ui);
}
.navgroup-label .rule{flex:1;height:1px;background:var(--color-border);}
.navlink{
  display:flex;align-items:center;gap:.65rem;
  margin:0 .6rem;padding:.5rem .75rem;font-size:.89rem;color:var(--color-text);
  text-decoration:none;border-radius:var(--radius-s);cursor:pointer;font-weight:500;
}
.navlink .navicon{
  flex:0 0 auto;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  background:var(--color-primary-tint);color:var(--color-primary-strong);font-size:.95rem;
}
.navlink:hover{background:var(--color-primary-tint);}
.navlink[aria-current="page"]{
  background:var(--color-primary);color:var(--color-on-primary);font-weight:700;
  box-shadow:var(--shadow-card);
}
.navlink[aria-current="page"] .navicon{background:rgba(251,243,236,.18);color:var(--color-on-primary);}

.overlay{display:none;position:fixed;inset:0;background:rgba(20,10,10,.5);z-index:55;}
.overlay.open{display:block;}

main{flex:1 1 auto;min-width:0;}
.content-wrap{max-width:900px;margin:0 auto;padding:2.75rem 2.25rem 6rem;}
@media (max-width:640px){.content-wrap{padding:1.75rem 1.15rem 5rem;}}

section.page{display:none;}
section.page.active{display:block;animation:fadein .25s ease;}
@media (prefers-reduced-motion:reduce){section.page.active{animation:none;}}
@keyframes fadein{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

.eyebrow{display:flex;align-items:center;gap:.4rem;font-family:var(--font-ui);font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;color:var(--color-accent-strong);font-weight:700;margin-bottom:.6rem;}
.page-title{font-size:1.85rem;margin-bottom:.5rem;}
.page-title-emph{font-weight:800;color:var(--color-primary-strong);text-shadow:0 2px 0 var(--color-primary-tint-strong);letter-spacing:.01em;}
.page-lede{color:var(--color-text-secondary);font-size:1rem;max-width:60ch;margin-bottom:1.6rem;}
.checked-date{
  display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem;color:var(--color-text-secondary);font-family:var(--font-ui);
  background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:99px;padding:.3rem .75rem;margin-bottom:1.6rem;
}
.checked-date::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--status-good);flex:0 0 auto;}

.section-h{display:flex;align-items:center;gap:.6rem;font-size:1.22rem;margin-top:2.5rem;border-top:1px solid var(--color-border);padding-top:1.7rem;}
section.page > .section-h:first-of-type{border-top:none;padding-top:0;margin-top:1.9rem;}
.section-h .sicon{
  flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  background:var(--color-accent-tint);color:var(--color-accent-strong);font-size:1rem;
}
h3.sub-h{font-size:1.02rem;margin-top:1.5rem;color:var(--color-primary-strong);}
p{margin:.7em 0;}
ul,ol{padding-left:1.3em;margin:.7em 0;}
li{margin:.35em 0;}
.tight-list{font-size:.92rem;}

/* ============ Reusable components ============ */
.card{
  background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-l);
  padding:1.35rem 1.5rem;box-shadow:var(--shadow-card);
}
.card + .card{margin-top:1rem;}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;}
@media (max-width:760px){.grid-2,.grid-3{grid-template-columns:1fr;}}

.tag{display:inline-flex;align-items:center;font-family:var(--font-ui);font-size:.71rem;font-weight:700;letter-spacing:.02em;padding:.2rem .55rem;border-radius:99px;margin:0 .3rem .3rem 0;white-space:nowrap;}
.tag-official{background:var(--color-primary-tint);color:var(--color-primary-strong);}
.tag-alert{background:var(--status-urgent-tint);color:var(--status-urgent);}
.tag-tip{background:var(--color-accent-tint);color:var(--color-accent-strong);}
.tag-pending{background:var(--status-neutral-tint);color:var(--status-neutral);}
.tag-update{background:var(--status-warn-tint);color:var(--status-warn);}

.callout{border-radius:var(--radius-m);padding:.95rem 1.15rem;margin:1rem 0;border:1px solid var(--color-border);background:var(--color-surface-raised);}
.callout-title{display:flex;align-items:center;gap:.4rem;font-family:var(--font-ui);font-weight:700;font-size:.83rem;margin-bottom:.3rem;}
.callout.official{border-color:var(--color-primary-tint-strong);background:var(--color-primary-tint);}
.callout.official .callout-title{color:var(--color-primary-strong);}
.callout.alert{border-color:#e3c3c2;background:var(--status-urgent-tint);}
.callout.alert .callout-title{color:var(--status-urgent);}
.callout.tip{border-color:#e6d6ae;background:var(--color-accent-tint);}
.callout.tip .callout-title{color:var(--color-accent-strong);}
.callout p{margin:.3em 0;font-size:.91rem;}

table{border-collapse:collapse;width:100%;font-size:.89rem;font-variant-numeric:tabular-nums;}
.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-m);margin:1rem 0;}
.table-wrap table{margin:0;min-width:480px;}
th,td{padding:.62rem .8rem;text-align:left;border-bottom:1px solid var(--color-border);}
th{background:var(--color-surface-raised);font-family:var(--font-ui);font-weight:700;font-size:.78rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;}
tr:last-child td{border-bottom:none;}
td.num,th.num{text-align:right;}

.status-pill{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-ui);font-size:.74rem;font-weight:700;padding:.22rem .6rem;border-radius:99px;white-space:nowrap;}
.status-pill::before{content:"";width:7px;height:7px;border-radius:50%;}
.status-good{background:var(--status-good-tint);color:var(--status-good);}
.status-good::before{background:var(--status-good);}
.status-warn{background:var(--status-warn-tint);color:var(--status-warn);}
.status-warn::before{background:var(--status-warn);}
.status-urgent{background:var(--status-urgent-tint);color:var(--status-urgent);}
.status-urgent::before{background:var(--status-urgent);}
.status-neutral{background:var(--status-neutral-tint);color:var(--status-neutral);}
.status-neutral::before{background:var(--status-neutral);}

.btn{
  display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.15rem;border-radius:99px;
  border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-family:var(--font-ui);
  font-size:.85rem;font-weight:700;cursor:pointer;text-decoration:none;
}
.btn:hover{border-color:var(--color-primary);}
.btn.primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary);}
.btn.primary:hover{background:var(--color-primary-strong);}
.btn.danger{background:transparent;border-color:var(--status-urgent);color:var(--status-urgent);}
.btn.ghost{background:transparent;}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.chip-row{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0;}
.chip{
  padding:.42rem .9rem;border-radius:99px;border:1px solid var(--color-border-strong);font-family:var(--font-ui);
  background:var(--color-surface);font-size:.82rem;cursor:pointer;color:var(--color-text-secondary);font-weight:600;
}
.chip[aria-pressed="true"]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary);}

.search-input,.text-input{
  width:100%;padding:.7rem 1rem;border-radius:var(--radius-m);border:1px solid var(--color-border-strong);
  background:var(--color-surface);color:var(--color-text);font-size:.92rem;margin-bottom:1rem;font-family:var(--font-body);
}
label.field-label{display:block;font-size:.82rem;font-weight:700;color:var(--color-text-secondary);margin-bottom:.35rem;font-family:var(--font-ui);}

/* Icon-badge category cards */
.link-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.9rem;margin:1.1rem 0;}
@media (max-width:700px){.link-grid{grid-template-columns:1fr;}}
.link-card{
  display:flex;gap:.85rem;text-decoration:none;color:var(--color-text);background:var(--color-surface);
  border:1px solid var(--color-border);border-radius:var(--radius-l);padding:1.05rem 1.15rem;box-shadow:var(--shadow-card);
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}
.link-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-raised);border-color:var(--color-border-strong);}
.link-card .lc-icon{
  flex:0 0 auto;width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--color-primary-tint);color:var(--color-primary-strong);font-size:1.2rem;
}
.link-card.alt .lc-icon{background:var(--color-accent-tint);color:var(--color-accent-strong);}
.link-card .lc-body{min-width:0;}
.link-card .lc-eyebrow{font-family:var(--font-ui);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-faint);margin-bottom:.15rem;}
.link-card h3,.link-card h4{font-size:.98rem;margin:0 0 .2rem;display:flex;align-items:center;gap:.35rem;}
.link-card p{font-size:.82rem;color:var(--color-text-secondary);margin:0;}
.link-card .lc-ext{color:var(--color-text-faint);font-size:.8rem;margin-left:auto;flex:0 0 auto;}

/* Pathway */
.pathway-track{display:flex;gap:.75rem;margin:0 0 1rem;}
@media (max-width:760px){.pathway-track{flex-direction:column;}}
.pathway-step{
  flex:1;text-align:left;background:var(--color-surface);border:1.5px solid var(--color-border);
  border-radius:var(--radius-l);padding:1.15rem 1.2rem;cursor:pointer;position:relative;box-shadow:var(--shadow-card);
}
.pathway-step .step-no{
  display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;
  background:var(--color-primary-tint);color:var(--color-primary-strong);font-weight:700;font-size:.85rem;margin-bottom:.65rem;font-family:var(--font-ui);
}
.pathway-step h4{font-size:.98rem;margin-bottom:.3rem;}
.pathway-step p{font-size:.83rem;color:var(--color-text-secondary);margin:.2em 0;}
.pathway-step .step-link{font-size:.78rem;color:var(--color-primary);font-weight:700;font-family:var(--font-ui);}
.pathway-step[aria-pressed="true"]{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-tint);}
.pathway-step[aria-pressed="true"] .step-no{background:var(--color-primary);color:var(--color-on-primary);}
.pathway-current-note{font-size:.85rem;color:var(--color-text-secondary);}

/* Date cards */
.date-grid{display:grid;grid-template-columns:1fr;gap:.75rem;margin:1rem 0;}
.date-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-m);padding:.9rem 1.1rem;}
.date-card .dc-main{min-width:0;}
.date-card .dc-event{font-weight:700;font-size:.95rem;}
.date-card .dc-meta{font-size:.8rem;color:var(--color-text-secondary);margin-top:.15rem;}
.date-card .dc-date{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.85rem;color:var(--color-text-secondary);margin-right:.5rem;font-family:var(--font-ui);}
@media (max-width:600px){.date-card{flex-direction:column;align-items:flex-start;}}

/* Accommodation */
.accom-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-l);padding:1.2rem 1.3rem;box-shadow:var(--shadow-card);}
.accom-card h4{font-size:1.02rem;margin-bottom:.15rem;}
.accom-card .accom-loc{font-size:.8rem;color:var(--color-text-secondary);margin-bottom:.5rem;}
.accom-card .accom-price{font-family:var(--font-display);font-size:1.35rem;color:var(--color-primary-strong);font-weight:700;}
.accom-card .accom-price small{font-family:var(--font-ui);font-size:.7rem;font-weight:600;color:var(--color-text-secondary);}
.accom-card .accom-tags{margin:.6rem 0;}
.accom-card p{font-size:.85rem;}
.myriad-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem;}
.myriad-links a{
  font-family:var(--font-ui);font-size:.78rem;font-weight:700;text-decoration:none;color:var(--color-primary-strong);
  background:var(--color-primary-tint);border-radius:99px;padding:.32rem .8rem;display:inline-flex;align-items:center;gap:.3rem;
}

/* Budget calculator */
.budget-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px dashed var(--color-border);}
.budget-row label{font-size:.9rem;}
.budget-row .budget-input-wrap{display:flex;align-items:center;gap:.3rem;flex:0 0 auto;}
.budget-row .budget-input-wrap span{font-size:.82rem;color:var(--color-text-secondary);font-family:var(--font-ui);}
.budget-row input[type=number]{
  width:6.5rem;padding:.4rem .55rem;border-radius:var(--radius-s);border:1px solid var(--color-border-strong);
  background:var(--color-surface);color:var(--color-text);font-size:.9rem;font-variant-numeric:tabular-nums;text-align:right;font-family:var(--font-ui);
}
.budget-total{display:flex;justify-content:space-between;align-items:baseline;margin-top:1rem;padding-top:1rem;border-top:2px solid var(--color-border-strong);}
.budget-total .label{font-weight:700;font-family:var(--font-ui);}
.budget-total .value{font-family:var(--font-display);font-size:1.7rem;color:var(--color-primary-strong);font-weight:700;font-variant-numeric:tabular-nums;}

/* Emergency */
.emerg-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin:1rem 0;}
@media (max-width:640px){.emerg-grid{grid-template-columns:repeat(2,1fr);}}
.emerg-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-m);padding:1rem;text-align:center;text-decoration:none;color:var(--color-text);box-shadow:var(--shadow-card);}
.emerg-card .en{font-size:1.7rem;font-weight:700;font-family:var(--font-display);color:var(--status-urgent);font-variant-numeric:tabular-nums;}
.emerg-card .el{font-size:.82rem;color:var(--color-text-secondary);margin-top:.2rem;}

details.accordion{border:1px solid var(--color-border);border-radius:var(--radius-m);margin:.6rem 0;background:var(--color-surface);overflow:hidden;}
details.accordion summary{padding:.85rem 1.1rem;cursor:pointer;font-weight:700;font-size:.92rem;list-style:none;display:flex;justify-content:space-between;align-items:center;font-family:var(--font-ui);}
details.accordion summary::-webkit-details-marker{display:none;}
details.accordion summary::after{content:"+";font-size:1.2rem;color:var(--color-text-secondary);}
details.accordion[open] summary::after{content:"–";}
details.accordion .accordion-body{padding:0 1.1rem 1rem;font-size:.88rem;color:var(--color-text-secondary);}
details.accordion .accordion-body p{margin:.5em 0;}

.faq-item{border-bottom:1px solid var(--color-border);padding:1rem 0;}
.faq-item:last-child{border-bottom:none;}
.faq-q{font-weight:700;font-size:.94rem;margin-bottom:.3rem;}
.faq-a{font-size:.88rem;color:var(--color-text-secondary);}
.faq-cat{font-family:var(--font-ui);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-accent-strong);font-weight:700;margin:1.4rem 0 .2rem;}

.source-item{display:flex;gap:.85rem;padding:.7rem 0;border-bottom:1px solid var(--color-border);align-items:baseline;}
.source-item:last-child{border-bottom:none;}
.source-item .sidx{color:var(--color-text-secondary);font-variant-numeric:tabular-nums;font-size:.82rem;flex:0 0 1.6em;font-family:var(--font-ui);}
.source-item a{font-size:.88rem;word-break:break-word;}

.disclaimer-box{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-m);padding:1.1rem 1.3rem;font-size:.82rem;color:var(--color-text-secondary);margin-top:2.5rem;}

.home-hero{
  position:relative;padding:2.4rem 2.2rem;margin:-2.75rem -2.25rem 2rem;border-radius:0 0 var(--radius-l) var(--radius-l);
  background:linear-gradient(155deg,var(--color-primary-deep) 0%,var(--color-primary) 62%,var(--color-primary-strong) 100%);
  color:var(--color-on-primary);overflow:hidden;
}
.home-hero::after{
  content:"";position:absolute;width:420px;height:420px;right:-140px;top:-180px;border-radius:50%;
  background:radial-gradient(circle,rgba(215,179,105,.25),transparent 62%);pointer-events:none;
}
@media (max-width:640px){.home-hero{padding:1.9rem 1.15rem;margin:-1.75rem -1.15rem 1.75rem;}}
.home-hero .eyebrow{color:var(--color-accent-deep);}
.home-hero h1{font-size:clamp(1.9rem,4.4vw,2.75rem);line-height:1.2;max-width:none;color:var(--color-on-primary);position:relative;}
@media (max-width:640px){.home-hero h1{font-size:clamp(1.6rem,7vw,2.1rem);}}
.home-hero p.sub{font-size:1rem;color:rgba(251,243,236,.82);max-width:56ch;position:relative;margin-top:.5rem;}
.home-hero .checked-date{background:rgba(251,243,236,.12);border-color:rgba(251,243,236,.28);color:rgba(251,243,236,.85);position:relative;}
.home-hero .checked-date::before{background:var(--color-accent-deep);}
.home-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:1rem;}
@media (max-width:700px){.home-grid{grid-template-columns:1fr;}}

.glossary-row td:first-child{font-weight:700;white-space:nowrap;}
footer.site-footer{padding:2rem 0 3rem;text-align:center;font-size:.78rem;color:var(--color-text-secondary);}

/* ============ Access gate ============ */
#gate-overlay{
  position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;padding:1.5rem;
  background:linear-gradient(160deg,var(--color-primary-deep) 0%,#2A0B10 100%);
}
#gate-overlay[hidden]{display:none;}
.gate-card{
  width:100%;max-width:420px;background:var(--color-surface);border-radius:var(--radius-l);padding:2.1rem 2rem;
  box-shadow:var(--shadow-gate);border:1px solid var(--color-border);
}
.gate-crest{width:52px;height:52px;border-radius:50%;background:var(--color-primary-tint);color:var(--color-primary-strong);display:flex;align-items:center;justify-content:center;margin-bottom:1.1rem;font-size:1.4rem;}
.gate-card h1{font-size:1.35rem;margin-bottom:.4rem;}
.gate-card p.gate-sub{font-size:.87rem;color:var(--color-text-secondary);margin-bottom:1.4rem;}
.gate-field{margin-bottom:1rem;}
.gate-error{display:none;background:var(--status-urgent-tint);color:var(--status-urgent);border-radius:var(--radius-s);padding:.7rem .9rem;font-size:.84rem;margin-bottom:1rem;font-weight:600;}
.gate-error.show{display:block;}
.gate-note{font-size:.74rem;color:var(--color-text-faint);margin-top:1.2rem;line-height:1.6;}
.gate-submit{width:100%;justify-content:center;padding:.75rem;font-size:.92rem;}

/* ============ Admin ============ */
#admin-view{display:none;}
#admin-view.active{display:block;}
.admin-shell{max-width:760px;margin:0 auto;padding:2.5rem 1.5rem 5rem;}
.admin-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.6rem;flex-wrap:wrap;}
.admin-status{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-ui);font-size:.78rem;font-weight:700;padding:.3rem .75rem;border-radius:99px;}
.admin-status.ok{background:var(--status-good-tint);color:var(--status-good);}
.admin-status.no{background:var(--status-urgent-tint);color:var(--status-urgent);}
.admin-status.wait{background:var(--status-neutral-tint);color:var(--status-neutral);}
textarea.text-input{min-height:140px;resize:vertical;font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;font-size:.85rem;}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
@media (max-width:680px){.admin-grid{grid-template-columns:1fr;}}
.roster-count{font-family:var(--font-display);font-size:2.2rem;color:var(--color-primary-strong);font-weight:700;}
.field-inline{display:flex;gap:.6rem;flex-wrap:wrap;align-items:flex-end;}
.field-inline .field{flex:1;min-width:150px;}
.field-inline .field .text-input{margin-bottom:0;}
.admin-msg{font-size:.85rem;padding:.7rem .9rem;border-radius:var(--radius-s);margin:.8rem 0;display:none;}
.admin-msg.show{display:block;}
.admin-msg.ok{background:var(--status-good-tint);color:var(--status-good);}
.admin-msg.err{background:var(--status-urgent-tint);color:var(--status-urgent);}

@media (max-width:880px){
  .sidebar{position:fixed;left:0;top:0;height:100vh;z-index:70;transform:translateX(-100%);transition:transform .2s ease;}
  .sidebar.drawer-open{transform:translateX(0);box-shadow:0 0 40px rgba(0,0,0,.3);}
  .topbar{display:flex;}
}
@media (prefers-reduced-motion:reduce){
  .sidebar{transition:none;}
}

/* Overall visual density: scale the desktop/tablet layout down to ~90%
   so pages feel less oversized on larger screens. Mobile drawer layout
   (<=880px) is left at 100% — it already uses tighter spacing. */
@media (min-width:881px){
  body{zoom:.9;}
}

/* ============ Video embeds (home dashboard + guide pages) ============ */
.video-embed{
  width:100%;aspect-ratio:16/9;border-radius:var(--radius-l);overflow:hidden;
  background:#000;box-shadow:var(--shadow-card);border:1px solid var(--color-border);
}
.video-embed video{width:100%;height:100%;display:block;object-fit:contain;background:#000;}
.video-embed-wrap{margin:1.1rem 0;}
.video-embed-wrap h3{font-size:.95rem;margin:.6rem 0 .15rem;}
.video-embed-wrap p{font-size:.82rem;color:var(--color-text-secondary);margin:0 0 .5rem;}
.video-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.3rem;margin:1.1rem 0 1.6rem;}
@media (max-width:760px){.video-grid{grid-template-columns:1fr;}}

/* ============ MFA / how-to guide pages ============ */
.guide-back{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-ui);font-size:.83rem;font-weight:700;color:var(--color-primary);text-decoration:none;margin-bottom:1.1rem;}
.mfa-shots{display:flex;gap:1rem;flex-wrap:wrap;margin:1rem 0;justify-content:flex-start;}
.mfa-shot{flex:0 1 260px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-m);padding:.5rem;box-shadow:var(--shadow-card);}
.mfa-shot img{display:block;width:100%;height:auto;border-radius:6px;}
.mfa-shot.wide{flex-basis:100%;max-width:520px;}
.bilingual-en{color:var(--color-text);}
.bilingual-zh{color:var(--color-text-secondary);margin-top:.15em;}

/* ============ Admin dashboard (redesigned) ============ */
.admin-page{display:none;}
.admin-page.active{display:block;}
.admin-nav-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap;}
.admin-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin:1.3rem 0;}
@media (max-width:680px){.admin-card-grid{grid-template-columns:1fr;}}
.admin-nav-card{
  display:flex;gap:.9rem;text-align:left;text-decoration:none;color:var(--color-text);background:var(--color-surface);
  border:1px solid var(--color-border);border-radius:var(--radius-l);padding:1.15rem 1.25rem;box-shadow:var(--shadow-card);
  cursor:pointer;font-family:inherit;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}
.admin-nav-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-raised);border-color:var(--color-border-strong);}
.admin-nav-card.danger .lc-icon{background:var(--status-urgent-tint);color:var(--status-urgent);}
.admin-nav-card .lc-icon{flex:0 0 auto;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-tint);color:var(--color-primary-strong);font-size:1.25rem;}
.admin-nav-card h3{font-size:1rem;margin:0 0 .25rem;}
.admin-nav-card p{font-size:.83rem;color:var(--color-text-secondary);margin:0;}
.admin-nav-card .nav-meta{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--color-primary-strong);margin-top:.3rem;}

.roster-toolbar{display:flex;gap:.6rem;flex-wrap:wrap;margin:1rem 0 1.3rem;}
.roster-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-m);}
table.roster-table{width:100%;border-collapse:collapse;font-size:.86rem;min-width:560px;}
table.roster-table th{background:var(--color-surface-raised);text-align:left;padding:.6rem .8rem;font-family:var(--font-ui);font-size:.74rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);}
table.roster-table td{padding:.55rem .8rem;border-bottom:1px solid var(--color-border);vertical-align:middle;}
table.roster-table tr:last-child td{border-bottom:none;}
table.roster-table input.text-input{margin:0;padding:.4rem .55rem;font-size:.85rem;}
.roster-actions{display:flex;gap:.4rem;flex-wrap:wrap;}
.roster-actions .btn{padding:.32rem .7rem;font-size:.78rem;}
.pagination{display:flex;align-items:center;gap:.6rem;justify-content:center;margin:1.1rem 0;font-family:var(--font-ui);font-size:.85rem;}
.pagination .btn{padding:.4rem .85rem;font-size:.82rem;}
.pagination .btn:disabled{opacity:.4;cursor:not-allowed;}
.pagination span{color:var(--color-text-secondary);}

.sources-list-page .source-item{padding:.85rem 0;}
