:root {
  color-scheme: light;
  --ink: #231f20;
  --ink-soft: #5e5557;
  --paper: #fffaf4;
  --paper-2: #f7eee4;
  --white: #ffffff;
  --gold: #b66f2b;
  --gold-soft: #f3c78b;
  --red: #b63c36;
  --green: #34715b;
  --line: rgba(35,31,32,.12);
  --shadow: 0 18px 55px rgba(62,43,31,.12);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
html { background: var(--paper); }
body { margin: 0; min-width: 320px; min-height: 100vh; color: var(--ink); background: var(--paper); }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
a { color: inherit; text-decoration: none; }

.app-shell { min-height: 100vh; padding-bottom: calc(92px + env(safe-area-inset-bottom)); }
.topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 18px 10px; max-width:760px; margin:auto; }
.brand { font-weight:780; letter-spacing:-.03em; font-size:1.05rem; }
.role-pill { display:flex; align-items:center; gap:7px; padding:8px 11px; border-radius:999px; background:rgba(255,255,255,.76); border:1px solid var(--line); color:var(--ink-soft); font-size:.875rem; }
.role-pill svg { width:16px; height:16px; }
.page { width:min(100%, 760px); margin:0 auto; padding:10px 16px 26px; }
.live-row { display:flex; justify-content:space-between; align-items:center; gap:14px; margin:6px 2px 14px; color:var(--ink-soft); font-size:.875rem; }
.live-badge { display:inline-flex; align-items:center; gap:7px; font-weight:700; color:var(--green); }
.live-badge::before { content:""; width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:0 0 0 5px rgba(52,113,91,.1); }
.live-badge.delayed { color:var(--red); }
.date-small { font-variant-numeric: tabular-nums; }
.live-clock { display:flex; flex-direction:column; align-items:flex-end; line-height:1.12; text-align:right; }
.live-clock small { color:var(--ink-soft); font-size:.72rem; }
.live-clock strong { margin-top:4px; color:var(--ink); font-size:1.18rem; letter-spacing:.035em; font-variant-numeric:tabular-nums; }
.simulation-controls { display:flex; gap:8px; margin:0 0 14px; }
.simulation-button { flex:1; min-height:48px; display:flex; align-items:center; gap:9px; border:1px solid rgba(182,111,43,.25); border-radius:16px; background:#fff4e5; color:#744114; padding:8px 13px; font-weight:800; cursor:pointer; }
.simulation-button > span { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; background:var(--gold); color:white; font-size:.72rem; }
.simulation-button small { margin-left:auto; color:#8f6843; font-size:.72rem; font-weight:650; }
.simulation-button.running { background:#fff0ed; border-color:rgba(182,60,54,.22); color:#842d29; }
.simulation-button.running > span { background:var(--red); }
.simulation-restart { flex:0 0 auto; min-width:58px; border:1px solid var(--line); border-radius:16px; background:var(--white); color:var(--ink-soft); font-weight:750; cursor:pointer; }

.now-card { position:relative; overflow:hidden; background:var(--ink); color:var(--white); border-radius:30px; padding:24px 22px 22px; box-shadow:var(--shadow); }
.now-card::after { content:""; position:absolute; width:180px; height:180px; border:42px solid rgba(243,199,139,.1); border-radius:50%; right:-98px; top:-96px; }
.eyebrow { margin:0 0 8px; color:var(--gold-soft); font-size:.82rem; font-weight:760; letter-spacing:.12em; }
.phase-title { position:relative; z-index:1; margin:0; font-family:ui-serif, "Songti SC", "STSong", serif; font-size:clamp(2rem, 9vw, 3.35rem); line-height:1.05; letter-spacing:-.045em; }
.phase-meta { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:14px; color:rgba(255,255,255,.7); font-size:.92rem; }
.phase-meta span { display:inline-flex; align-items:center; gap:6px; }
.phase-meta svg { width:17px; height:17px; }
.location-strip { position:relative; z-index:1; display:flex; gap:12px; align-items:center; margin-top:22px; padding:14px; background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.12); border-radius:18px; }
.location-icon { display:grid; place-items:center; flex:0 0 auto; width:38px; height:38px; border-radius:13px; background:var(--gold-soft); color:var(--ink); }
.location-icon svg { width:20px; height:20px; }
.location-strip small { display:block; color:rgba(255,255,255,.6); margin-bottom:2px; }
.location-strip strong { font-size:1.04rem; }

.section-label { display:flex; align-items:center; justify-content:space-between; margin:24px 2px 11px; }
.section-label h2 { margin:0; font-size:.92rem; letter-spacing:.12em; color:var(--ink-soft); }
.section-label span { color:var(--red); font-size:.8rem; font-weight:700; }
.task-card { background:var(--white); border:1px solid var(--line); border-radius:24px; padding:8px 18px; box-shadow:0 10px 32px rgba(62,43,31,.06); }
.task-item { display:grid; grid-template-columns:28px 1fr; gap:10px; padding:14px 0; font-size:1.08rem; line-height:1.5; }
.task-item + .task-item { border-top:1px solid var(--line); }
.task-num { color:var(--gold); font-weight:800; font-variant-numeric:tabular-nums; }
.warning { display:flex; gap:10px; align-items:flex-start; margin-top:12px; padding:13px 15px; border-radius:16px; background:#fff0ed; color:#842d29; line-height:1.45; font-size:.93rem; }
.warning svg { flex:0 0 auto; width:19px; height:19px; margin-top:1px; }
.carry-row { display:flex; flex-wrap:wrap; gap:8px; }
.carry-chip { display:inline-flex; align-items:center; gap:7px; border:1px solid rgba(182,111,43,.24); color:#7b4515; background:#fff7ec; border-radius:999px; padding:9px 12px; font-size:.9rem; font-weight:700; }
.next-card { display:flex; gap:13px; align-items:flex-start; background:var(--paper-2); border-radius:22px; padding:17px; line-height:1.45; }
.next-arrow { display:grid; place-items:center; flex:0 0 auto; width:36px; height:36px; border-radius:50%; background:var(--white); }
.next-card small { color:var(--ink-soft); display:block; margin-bottom:3px; }
.next-card strong { font-size:1rem; }
.next-card p { margin:4px 0 0; color:var(--ink-soft); font-size:.9rem; }

.bottom-actions { position:fixed; z-index:10; left:0; right:0; bottom:0; padding:12px 16px calc(12px + env(safe-area-inset-bottom)); background:linear-gradient(to top, var(--paper) 72%, rgba(255,250,244,0)); }
.actions-inner { display:flex; gap:10px; width:min(100%,728px); margin:auto; }
.btn { min-height:52px; border:0; border-radius:17px; padding:0 18px; font-weight:760; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.btn svg { width:19px; height:19px; }
.btn-primary { flex:1; background:var(--ink); color:white; box-shadow:0 8px 20px rgba(35,31,32,.18); }
.btn-secondary { background:var(--white); border:1px solid var(--line); }
.btn-gold { background:var(--gold-soft); color:var(--ink); }
.btn-danger { background:#fff0ed; color:#842d29; }

.sheet { position:fixed; inset:0; z-index:40; display:none; align-items:flex-end; background:rgba(20,16,17,.44); backdrop-filter:blur(3px); }
.sheet.open { display:flex; }
.sheet-panel { width:100%; max-height:88vh; overflow:auto; background:var(--paper); border-radius:28px 28px 0 0; padding:10px 16px calc(30px + env(safe-area-inset-bottom)); animation:rise .24s ease-out; }
@keyframes rise { from { transform:translateY(30px); opacity:.4; } }
.sheet-handle { width:42px; height:5px; border-radius:5px; background:rgba(35,31,32,.18); margin:2px auto 18px; }
.sheet-head { position:sticky; z-index:4; top:-10px; display:flex; justify-content:space-between; align-items:center; margin:0 -4px 12px; padding:10px 4px 12px; background:rgba(255,250,244,.96); backdrop-filter:blur(8px); border-bottom:1px solid var(--line); }
.sheet-head h2 { margin:0; font-family:ui-serif,"Songti SC",serif; font-size:1.6rem; }
.icon-btn { border:0; width:42px; height:42px; border-radius:50%; background:var(--white); cursor:pointer; display:grid; place-items:center; }
.timeline { display:grid; gap:8px; }
.timeline-item { display:grid; grid-template-columns:58px 18px 1fr; gap:8px; align-items:start; padding:12px 9px; border-radius:16px; color:var(--ink-soft); }
.timeline-item { width:100%; border:0; background:transparent; text-align:left; font:inherit; cursor:pointer; }
.timeline-item:disabled { opacity:1; cursor:default; }
.timeline-item.current { background:var(--white); color:var(--ink); box-shadow:0 7px 24px rgba(62,43,31,.06); }
.timeline-time { font-weight:750; font-variant-numeric:tabular-nums; }
.timeline-dot { width:10px; height:10px; margin-top:5px; border-radius:50%; border:2px solid #c8bdb1; }
.timeline-item.current .timeline-dot { background:var(--gold); border-color:var(--gold); box-shadow:0 0 0 5px rgba(182,111,43,.12); }
.timeline-item.done .timeline-dot { background:var(--green); border-color:var(--green); }
.timeline-title { font-weight:700; }
.timeline-loc { display:block; font-size:.8rem; margin-top:2px; color:var(--ink-soft); }

.home-intro { padding:12px 2px 20px; }
.home-kicker { display:flex; align-items:center; gap:8px; color:var(--gold); font-weight:800; font-size:.88rem; letter-spacing:.08em; }
.home-title { max-width:620px; margin:16px 0 10px; font-family:ui-serif,"Songti SC",serif; font-size:clamp(2.55rem, 12vw, 5rem); line-height:1.03; letter-spacing:-.06em; }
.home-title em { color:var(--red); font-style:normal; }
.home-copy { max-width:540px; color:var(--ink-soft); font-size:1rem; line-height:1.65; }
.role-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.role-card { display:flex; flex-direction:column; min-height:142px; padding:17px; border-radius:23px; background:var(--white); border:1px solid var(--line); box-shadow:0 10px 30px rgba(62,43,31,.05); transition:transform .18s ease; }
.role-card:active { transform:scale(.98); }
.role-card.control-card { grid-column:1/-1; min-height:124px; background:var(--ink); color:white; }
.role-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:13px; background:var(--paper-2); color:var(--gold); }
.control-card .role-icon { background:rgba(255,255,255,.12); color:var(--gold-soft); }
.role-name { margin-top:auto; padding-top:18px; font-weight:800; font-size:1.08rem; }
.role-desc { margin-top:3px; font-size:.82rem; color:var(--ink-soft); line-height:1.4; }
.control-card .role-desc { color:rgba(255,255,255,.6); }

.control-now { background:var(--ink); color:white; border-radius:28px; padding:22px; }
.control-now-top { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; }
.control-now h1 { margin:8px 0 8px; font-family:ui-serif,"Songti SC",serif; font-size:2.15rem; line-height:1.08; }
.control-now p { margin:0; color:rgba(255,255,255,.62); }
.control-primary { width:100%; margin-top:20px; background:var(--gold-soft); color:var(--ink); }
.control-row { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:9px; }
.control-row .btn { min-height:46px; padding:0 8px; font-size:.86rem; background:rgba(255,255,255,.09); color:white; border:1px solid rgba(255,255,255,.1); }
.control-row .btn.active-delay { background:var(--red); }
.progress-wrap { margin:18px 2px 22px; }
.progress-meta { display:flex; justify-content:space-between; margin-bottom:8px; font-size:.82rem; color:var(--ink-soft); }
.progress { height:8px; overflow:hidden; border-radius:99px; background:#e7ddd2; }
.progress > span { display:block; height:100%; border-radius:99px; background:var(--gold); transition:width .25s ease; }
.role-status-list { display:grid; gap:9px; }
.role-status { display:grid; grid-template-columns:42px 1fr auto; gap:11px; align-items:center; padding:12px; background:var(--white); border:1px solid var(--line); border-radius:18px; }
.avatar { width:42px; height:42px; border-radius:14px; display:grid; place-items:center; background:var(--paper-2); color:var(--gold); font-weight:850; }
.role-status strong { display:block; font-size:.96rem; }
.role-status small { display:block; margin-top:2px; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:48vw; }
.tiny-link { border:0; background:transparent; color:var(--gold); font-weight:750; cursor:pointer; padding:8px; }
.note-box { width:100%; min-height:90px; resize:vertical; border:1px solid var(--line); border-radius:17px; background:white; padding:13px; outline:none; }
.note-box:focus { border-color:var(--gold); box-shadow:0 0 0 3px rgba(182,111,43,.1); }
.control-foot { display:flex; justify-content:space-between; align-items:center; margin-top:10px; }
.saved-text { color:var(--ink-soft); font-size:.8rem; }

.toast { position:fixed; z-index:80; left:50%; bottom:100px; transform:translateX(-50%) translateY(18px); opacity:0; pointer-events:none; background:var(--ink); color:white; border-radius:999px; padding:11px 16px; font-size:.88rem; transition:.22s ease; box-shadow:var(--shadow); }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
.empty { padding:30px; text-align:center; color:var(--ink-soft); }

@media (min-width: 720px) {
  .page { padding-left:22px; padding-right:22px; }
  .role-grid { grid-template-columns:repeat(3,1fr); }
  .role-card.control-card { grid-column:span 2; }
  .role-status-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .role-status small { max-width:240px; }
  .sheet { align-items:center; justify-content:center; padding:24px; }
  .sheet-panel { width:min(680px,100%); border-radius:28px; max-height:84vh; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

/* Refined black-and-ivory wedding command system */
:root {
  --ink: #171516;
  --ink-2: #272324;
  --ink-soft: #696165;
  --paper: #fcfaf6;
  --paper-2: #f4eee6;
  --white: #ffffff;
  --gold: #ad6b24;
  --gold-soft: #e7bd7c;
  --red: #981f26;
  --green: #2e6a58;
  --line: rgba(23,21,22,.11);
  --shadow: 0 16px 40px rgba(47,34,24,.08);
}

body { background:var(--paper); }
.app-shell { padding-bottom:calc(92px + env(safe-area-inset-bottom)); }
.topbar { min-height:76px; padding:20px 18px 12px; }
.brand { font-family:ui-serif,"Songti SC","STSong",Georgia,serif; font-size:1.45rem; font-weight:800; letter-spacing:-.055em; }
.role-pill { padding:9px 13px; background:transparent; border-color:var(--line); color:var(--ink); font-weight:700; }
.page { padding:6px 16px 32px; }

.live-row { margin:2px 1px 16px; align-items:flex-end; }
.live-badge { font-size:.9rem; }
.live-clock small { font-size:.71rem; letter-spacing:.015em; }
.live-clock strong { margin-top:3px; color:var(--red); font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.5rem; line-height:1; }

.simulation-controls { gap:7px; margin:0 0 18px; }
.simulation-button { min-width:0; min-height:62px; padding:10px 14px; border:0; border-radius:16px; background:var(--paper-2); color:var(--ink); box-shadow:none; white-space:nowrap; }
.simulation-button > span { width:34px; height:34px; background:var(--gold); }
.simulation-button small { color:var(--ink-soft); font-size:.68rem; white-space:nowrap; }
.simulation-button.running { background:#f7e9e7; color:var(--red); }
.simulation-button.running { padding-left:10px; padding-right:10px; font-size:.9rem; }
.simulation-button.running > span { width:30px; height:30px; }
.simulation-button.running small { margin-left:4px; }
.simulation-restart { min-width:50px; padding:0 10px; border-radius:16px; }

.arrival-deadline { display:grid; grid-template-columns:auto auto minmax(0,1fr); align-items:center; gap:8px; margin:0 0 14px; padding:12px 14px; border:1px solid #eadfce; border-radius:14px; background:#f7efe6; }
.arrival-deadline > span { color:var(--gold); font-size:.72rem; font-weight:800; letter-spacing:.06em; }
.arrival-deadline > strong { color:var(--red); font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.25rem; line-height:1; }
.arrival-deadline > small { display:flex; align-items:center; justify-content:flex-end; gap:5px; min-width:0; color:var(--ink-soft); font-size:.75rem; line-height:1.35; text-align:right; }
.arrival-deadline svg { flex:0 0 auto; width:14px; height:14px; color:var(--gold); }
.arrival-deadline.dark { margin:18px 0 0; border-color:rgba(231,189,124,.25); background:rgba(255,255,255,.06); }
.arrival-deadline.dark > span { color:var(--gold-soft); }
.arrival-deadline.dark > strong { color:white; }
.arrival-deadline.dark > small { color:rgba(255,255,255,.64); }

.role-page .now-card, .control-now { position:relative; margin:0 -16px; padding:25px 24px 26px 42px; overflow:hidden; border-radius:0; background:var(--ink); color:white; box-shadow:none; }
.now-card::after { display:none; }
.phase-rail { position:absolute; left:18px; top:27px; bottom:0; width:12px; border-left:2px solid var(--gold-soft); }
.phase-rail::before { content:""; position:absolute; left:-7px; top:0; width:10px; height:10px; border:2px solid var(--gold-soft); border-radius:50%; background:var(--ink); }
.phase-rail span { display:none; }
.phase-overline { position:relative; z-index:1; display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:24px; }
.phase-overline .eyebrow { margin:0; color:var(--gold-soft); letter-spacing:.04em; font-size:.86rem; }
.phase-overline > span { color:rgba(255,255,255,.67); font-size:.79rem; font-weight:650; }
.phase-title, .control-now h1 { max-width:88%; margin:0; font-family:ui-serif,"Songti SC","STSong",Georgia,serif; font-size:clamp(2.1rem,10.8vw,3.6rem); line-height:1.08; letter-spacing:-.065em; }
.role-stage-name { position:relative; z-index:1; max-width:88%; margin:-12px 0 14px; color:rgba(255,255,255,.48); font-size:.76rem; line-height:1.4; }
.phase-title.personal-title { max-width:92%; font-size:clamp(1.95rem,9.5vw,3.15rem); line-height:1.12; }
.phase-location { position:relative; z-index:1; display:flex; align-items:center; gap:8px; margin-top:18px; color:#f6ead7; font-size:1rem; }
.phase-location svg { width:19px; height:19px; color:var(--gold-soft); flex:0 0 auto; }
.role-duty-line { position:relative; z-index:1; display:flex; align-items:center; flex-wrap:wrap; gap:7px; margin:16px 0 0; color:#f6ead7; font-size:.86rem; font-weight:750; }
.role-duty-line span { padding:4px 7px; border:1px solid rgba(231,189,124,.35); border-radius:99px; color:var(--gold-soft); font-size:.67rem; letter-spacing:.04em; }
.phase-summary { position:relative; z-index:1; margin:17px 0 0; color:rgba(255,255,255,.58); font-size:.9rem; line-height:1.5; }
.phase-index-deco { position:absolute; right:18px; bottom:18px; color:rgba(255,255,255,.11); font-family:ui-serif,Georgia,serif; font-size:4.5rem; font-style:italic; line-height:.8; }
.phase-index-deco small { font-size:.9rem; }

.next-card { position:relative; margin:14px 0 16px; padding:16px 16px; align-items:center; border:0; border-radius:15px; background:var(--paper-2); box-shadow:none; }
.next-flag { display:grid; place-items:center; flex:0 0 auto; width:38px; height:38px; color:var(--gold); }
.next-flag svg { width:27px; height:27px; }
.next-card small { color:var(--ink-soft); font-size:.78rem; }
.next-card strong { display:block; font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.25rem; color:var(--ink); }
.next-chevron { margin-left:auto; color:var(--red); font-size:2rem; font-weight:300; }

.role-rule { display:flex; align-items:flex-start; gap:11px; margin:0 0 14px; padding:13px 15px; border-left:3px solid var(--gold); background:#f6efe6; color:var(--ink); }
.role-rule > svg { flex:0 0 auto; width:19px; height:19px; margin-top:2px; color:var(--gold); }
.role-rule small, .role-rule strong { display:block; }
.role-rule small { margin-bottom:3px; color:var(--gold); font-size:.7rem; font-weight:800; letter-spacing:.08em; }
.role-rule strong { font-size:.86rem; line-height:1.5; }

.content-panel { margin:0 0 14px; padding:0 16px; background:var(--white); border:1px solid var(--line); border-radius:16px; box-shadow:none; }
.panel-heading { display:flex; align-items:center; justify-content:space-between; min-height:58px; border-bottom:1px solid var(--line); }
.panel-heading > span { display:flex; align-items:center; gap:9px; }
.panel-heading svg { width:21px; height:21px; color:var(--gold); }
.panel-heading h2 { margin:0; font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.1rem; }
.panel-heading > small { color:var(--ink-soft); font-size:.8rem; }
.task-card { padding:0; border:0; box-shadow:none; }
.task-item { grid-template-columns:46px 1fr; align-items:center; gap:8px; padding:15px 0; font-size:1rem; }
.task-num { display:grid; place-items:center; width:40px; height:40px; border-radius:50%; background:var(--paper-2); color:var(--gold); font-family:ui-serif,Georgia,serif; font-size:1rem; }
.task-copy strong { display:block; color:var(--ink); font-size:1rem; font-weight:760; }
.task-copy small { display:block; margin-top:3px; color:var(--ink-soft); font-size:.78rem; }
.carry-row { padding:14px 0 16px; gap:9px; }
.carry-chip { border:0; border-radius:11px; padding:10px 12px; background:var(--paper-2); color:var(--ink); font-size:.86rem; }
.carry-chip svg { width:17px; height:17px; color:var(--gold); }
.warning { margin:0 0 14px; border-radius:13px; }

.control-now { padding-bottom:24px; }
.control-now-top { position:relative; z-index:1; }
.control-now h1 { max-width:90%; }
.control-now p.phase-location { color:#f6ead7; }
.control-primary { position:relative; z-index:1; min-height:56px; margin-top:24px; border-radius:13px; background:var(--gold-soft); }
.control-row { position:relative; z-index:1; }
.progress-wrap { margin:16px 0 23px; }
.progress { height:5px; background:#e5ded5; }
.progress > span { background:var(--gold); }
.role-status-list { gap:8px; }
.role-status { border-radius:14px; box-shadow:none; }
.avatar, .contact-avatar { background:var(--paper-2); color:var(--gold); }

.tabbar { position:fixed; z-index:20; left:0; right:0; bottom:0; padding:7px 10px calc(7px + env(safe-area-inset-bottom)); background:rgba(252,250,246,.97); border-top:1px solid var(--line); backdrop-filter:blur(12px); }
.tabbar-inner { display:grid; grid-template-columns:repeat(4,1fr); width:min(100%,760px); margin:auto; }
.tab-item { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-height:55px; padding:4px 2px; border:0; background:transparent; color:#676166; font-size:.76rem; cursor:pointer; }
.tab-item svg { width:22px; height:22px; }
.tab-item.active { color:var(--red); font-weight:800; }
.tab-item.active::after { content:""; position:absolute; bottom:-4px; width:24px; height:3px; border-radius:3px; background:var(--red); }

.home-page { padding-top:8px; }
.members-hero { margin:0 -16px; padding:27px 22px 25px; background:var(--ink); color:white; }
.members-hero > p { margin:0 0 12px; color:var(--gold-soft); font-size:.74rem; font-weight:800; letter-spacing:.1em; }
.members-hero h1 { margin:0; font-family:ui-serif,"Songti SC","STSong",Georgia,serif; font-size:clamp(2.25rem,11vw,3.7rem); line-height:1.04; letter-spacing:-.06em; }
.members-hero > span { display:block; max-width:30rem; margin-top:12px; color:rgba(255,255,255,.62); font-size:.9rem; line-height:1.55; }
.control-entry { display:grid; grid-template-columns:46px minmax(0,1fr) 22px; gap:12px; align-items:center; min-height:88px; margin:14px 0 24px; padding:14px 15px; border:1px solid rgba(173,107,36,.22); border-radius:17px; background:#f7efe4; }
.control-entry-icon { display:grid; place-items:center; width:46px; height:46px; border-radius:14px; background:var(--ink); color:var(--gold-soft); }
.control-entry-icon svg { width:23px; height:23px; }
.control-entry-copy { min-width:0; }
.control-entry-copy small, .control-entry-copy strong, .control-entry-copy em { display:block; }
.control-entry-copy small { margin-bottom:2px; color:var(--gold); font-size:.68rem; font-weight:800; letter-spacing:.08em; }
.control-entry-copy strong { font-size:1.05rem; }
.control-entry-copy em { margin-top:2px; overflow:hidden; color:var(--ink-soft); font-size:.76rem; font-style:normal; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.control-entry-arrow, .member-role-arrow { color:var(--gold); }
.control-entry-arrow svg, .member-role-arrow svg { width:20px; height:20px; }
.member-directory { display:grid; gap:23px; }
.member-group-heading { display:flex; align-items:center; justify-content:space-between; margin:0 2px 9px; }
.member-group-heading h2 { margin:0; font-family:ui-serif,"Songti SC","STSong",Georgia,serif; font-size:1.16rem; }
.member-group-heading span { color:var(--ink-soft); font-size:.73rem; }
.member-role-list { overflow:hidden; border:1px solid var(--line); border-radius:17px; background:var(--white); }
.member-role-row { display:grid; grid-template-columns:42px minmax(0,1fr) auto 18px; gap:11px; align-items:center; min-height:76px; padding:11px 13px; }
.member-role-row + .member-role-row { border-top:1px solid var(--line); }
.member-role-row:active { background:var(--paper-2); }
.member-avatar { display:grid; place-items:center; width:42px; height:42px; border-radius:14px; background:var(--paper-2); color:var(--gold); font-family:ui-serif,"Songti SC","STSong",Georgia,serif; font-size:1.02rem; font-weight:850; }
.member-role-copy { min-width:0; }
.member-role-copy strong, .member-role-copy small { display:block; }
.member-role-copy strong { font-size:.96rem; }
.member-role-copy small { display:-webkit-box; margin-top:3px; overflow:hidden; color:var(--ink-soft); font-size:.74rem; line-height:1.35; -webkit-box-orient:vertical; -webkit-line-clamp:2; white-space:normal; }
.member-role-meta { padding:5px 7px; border-radius:99px; background:#f7efe4; color:var(--gold); font-size:.66rem; font-weight:800; white-space:nowrap; }
.member-role-arrow { display:flex; align-items:center; }

.info-page { padding-top:16px; }
.info-intro { margin:0 -16px 20px; padding:28px 22px 30px; background:var(--ink); color:white; }
.eyebrow.dark { color:var(--gold-soft); }
.info-intro h1 { margin:4px 0 8px; font-family:ui-serif,"Songti SC",Georgia,serif; font-size:2.35rem; letter-spacing:-.05em; }
.info-intro p:last-child { max-width:30rem; margin:0; color:rgba(255,255,255,.58); line-height:1.55; font-size:.9rem; }
.contact-group { margin-bottom:20px; }
.contact-heading { display:flex; justify-content:space-between; align-items:center; padding:0 2px 9px; }
.contact-heading h2 { margin:0; font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.08rem; }
.contact-heading span { color:var(--ink-soft); font-size:.78rem; }
.contact-list { overflow:hidden; background:white; border:1px solid var(--line); border-radius:16px; }
.contact-row { display:grid; grid-template-columns:42px 1fr auto; align-items:center; gap:11px; min-height:70px; padding:10px 14px; }
.contact-row + .contact-row { border-top:1px solid var(--line); }
.contact-avatar { display:grid; place-items:center; width:40px; height:40px; border-radius:13px; font-weight:800; }
.contact-copy strong, .contact-copy small { display:block; }
.contact-copy strong { font-size:.95rem; }
.contact-copy small { margin-top:3px; color:var(--ink-soft); font-size:.77rem; }
.contact-missing { color:var(--ink-soft); font-size:.78rem; }
.contact-phone { display:flex; flex-direction:column; align-items:flex-end; gap:3px; color:var(--red); text-align:right; }
.contact-phone strong { font-size:.84rem; font-variant-numeric:tabular-nums; letter-spacing:.01em; }
.contact-phone small { color:var(--ink-soft); font-size:.66rem; }
.contact-phone.verify strong { color:var(--gold); }
.contact-phone.verify small { color:var(--red); font-weight:750; }

.sheet-panel { background:var(--paper); }
.sheet-head { background:rgba(252,250,246,.96); }
.timeline-item.current { background:var(--ink); color:white; }
.timeline-item.current .timeline-loc { color:rgba(255,255,255,.58); }

.timeline-page { padding-top:6px; }
.timeline-hero { margin:0 -16px; padding:28px 22px 24px; background:var(--ink); color:white; }
.timeline-hero .eyebrow { margin-bottom:14px; color:var(--gold-soft); letter-spacing:.06em; }
.timeline-hero-title { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; }
.timeline-hero-title h1 { margin:0; font-family:ui-serif,"Songti SC",Georgia,serif; font-size:2.7rem; line-height:1; letter-spacing:-.06em; }
.timeline-hero-title > span { color:rgba(255,255,255,.58); font-size:.84rem; }
.timeline-now-summary { display:grid; gap:6px; margin-top:22px; padding:16px 0 0; border-top:1px solid rgba(255,255,255,.16); }
.timeline-now-summary > span { color:var(--gold-soft); font-size:.76rem; font-weight:800; letter-spacing:.08em; }
.timeline-now-summary strong { font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.22rem; line-height:1.35; }
.timeline-now-summary small { display:flex; align-items:center; gap:6px; color:rgba(255,255,255,.62); }
.timeline-now-summary svg { width:15px; height:15px; color:var(--gold-soft); }
.timeline-view-tabs { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin:0 -16px; padding:10px 18px; background:var(--white); border-bottom:1px solid var(--line); }
.timeline-view-tabs a { display:flex; align-items:center; justify-content:center; min-height:42px; border-radius:10px; color:var(--ink-soft); font-size:.86rem; font-weight:750; }
.timeline-view-tabs a.active { background:var(--ink); color:white; }
.timeline-page-section { margin:0 -16px; background:var(--white); }
.timeline-page-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; padding:22px 18px 16px; border-bottom:1px solid var(--line); }
.timeline-page-heading p { margin:0 0 4px; color:var(--gold); font-size:.75rem; font-weight:800; letter-spacing:.08em; }
.timeline-page-heading h2 { margin:0; font-family:ui-serif,"Songti SC",Georgia,serif; font-size:1.42rem; }
.timeline-page-heading > span { color:var(--ink-soft); font-size:.75rem; }
.timeline-page-list { padding:0 18px 10px; }
.timeline-page-item { position:relative; display:grid; grid-template-columns:30px 67px 18px minmax(0,1fr); gap:7px; align-items:start; width:100%; min-height:82px; padding:17px 0; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--ink); text-align:left; font:inherit; }
button.timeline-page-item { cursor:pointer; }
button.timeline-page-item:active { background:var(--paper-2); }
.timeline-number { padding-top:2px; color:#aaa09a; font-family:ui-serif,Georgia,serif; font-size:.72rem; font-style:italic; }
.timeline-time { padding-top:1px; color:var(--ink); font-weight:820; font-variant-numeric:tabular-nums; }
.timeline-time small { display:block; margin-top:3px; color:var(--ink-soft); font-size:.68rem; font-weight:650; }
.timeline-node { position:relative; align-self:stretch; min-height:48px; }
.timeline-node::before { content:""; position:absolute; left:7px; top:-18px; bottom:-18px; width:1px; background:#ddd4cb; }
.timeline-node i { position:absolute; z-index:1; left:3px; top:4px; width:9px; height:9px; border:2px solid #bdb4ad; border-radius:50%; background:var(--white); }
.timeline-page-item:first-child .timeline-node::before { top:7px; }
.timeline-page-item:last-child .timeline-node::before { bottom:calc(100% - 10px); }
.timeline-copy { min-width:0; padding-right:48px; }
.timeline-copy strong { display:block; font-size:.96rem; line-height:1.35; }
.timeline-copy > small { display:flex; align-items:center; gap:4px; margin-top:5px; color:var(--ink-soft); font-size:.75rem; line-height:1.35; }
.timeline-copy svg { flex:0 0 auto; width:13px; height:13px; color:var(--gold); }
.timeline-copy em { display:inline-block; margin-top:6px; padding:3px 7px; border-radius:99px; background:var(--paper-2); color:var(--gold); font-size:.66rem; font-style:normal; font-weight:750; }
.timeline-state { position:absolute; top:18px; right:0; color:#aaa09a; font-size:.68rem; font-weight:750; }
.timeline-page-item.done .timeline-node i { border-color:var(--green); background:var(--green); }
.timeline-page-item.done .timeline-number, .timeline-page-item.done .timeline-time { color:var(--green); }
.timeline-page-item.current { margin:0 -10px; width:calc(100% + 20px); padding:18px 10px; border-color:transparent; background:var(--ink); color:white; }
.timeline-page-item.current .timeline-number, .timeline-page-item.current .timeline-time, .timeline-page-item.current .timeline-state { color:var(--gold-soft); }
.timeline-page-item.current .timeline-time small, .timeline-page-item.current .timeline-copy > small { color:rgba(255,255,255,.58); }
.timeline-page-item.current .timeline-node::before { background:rgba(231,189,124,.42); }
.timeline-page-item.current .timeline-node i { border-color:var(--gold-soft); background:var(--ink); box-shadow:0 0 0 4px rgba(231,189,124,.14); }
.timeline-page-item.current .timeline-copy em { background:rgba(255,255,255,.1); color:var(--gold-soft); }
.personal-flow-item { grid-template-columns:30px 86px 18px minmax(0,1fr); min-height:96px; }
.personal-flow-item .personal-time { padding-right:5px; color:var(--gold); font-size:.73rem; line-height:1.35; }
.personal-flow-item .timeline-copy { padding-right:44px; }
.personal-detail, .personal-items { display:block; margin-top:7px; color:var(--ink-soft); font-size:.73rem; line-height:1.45; }
.personal-items { color:var(--gold); font-weight:700; }
.personal-flow-item.current .personal-detail { color:rgba(255,255,255,.64); }
.personal-flow-item.current .personal-items { color:var(--gold-soft); }

@media (min-width:720px) {
  .members-hero { margin-left:0; margin-right:0; border-radius:22px; }
  .control-entry { margin-left:0; margin-right:0; }
  .member-role-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; overflow:visible; border:0; border-radius:0; background:transparent; }
  .member-role-row { border:1px solid var(--line); border-radius:15px; background:var(--white); }
  .member-role-row + .member-role-row { border-top:1px solid var(--line); }
  .role-page .now-card, .control-now { margin-left:0; margin-right:0; border-radius:22px; }
  .phase-rail { left:22px; }
  .role-page .now-card, .control-now { padding-left:50px; }
  .info-intro { margin-left:0; margin-right:0; border-radius:22px; }
  .timeline-hero { margin-left:0; margin-right:0; border-radius:22px 22px 0 0; }
  .timeline-view-tabs { margin-left:0; margin-right:0; }
  .timeline-page-section { margin-left:0; margin-right:0; border-radius:0 0 22px 22px; overflow:hidden; }
}
