:root {
      --bg: #f7f1e5;
      --bg-soft: #ebe1ca;
      --panel: rgba(255, 248, 235, 0.88);
      --panel-soft: rgba(255, 252, 247, 0.94);
      --ink: #10131b;
      --ink-soft: #696d78;
      --ink-faint: #8b897f;
      --line: rgba(22, 29, 63, 0.14);
      --line-strong: rgba(22, 29, 63, 0.22);
      --brand: #1c2088;
      --brand-rgb: 28, 32, 136;
      --brand-deep: #070d2e;
      --accent: #f7ac00;
      --accent-rgb: 247, 172, 0;
      --accent-soft: #f2c95c;
      --shadow: 0 30px 86px rgba(7, 13, 46, 0.14);
      --shadow-soft: 0 18px 44px rgba(7, 13, 46, 0.08);
      --radius-xl: 34px;
      --radius-lg: 26px;
      --radius-md: 20px;
      --radius-sm: 16px;
      --font-display: "STZhongsong", "Songti SC", "Noto Serif CJK SC", serif;
      --font-body: "Microsoft YaHei UI", "PingFang SC", "Noto Sans CJK SC", sans-serif;
    }

    * {
      box-sizing: border-box;
    }

    *::before,
    *::after {
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
      -webkit-text-size-adjust: 100%;
    }

    body {
      margin: 0;
      font-family: var(--font-body);
      color: var(--ink);
      overflow-x: hidden;
      --scroll-progress: 0;
      --reading-progress: 0%;
      background:
        radial-gradient(ellipse at 50% -10%, rgba(49, 87, 255, 0.11), transparent 58%),
        radial-gradient(ellipse at 92% 8%, rgba(var(--accent-rgb), 0.14), transparent 34%),
        radial-gradient(circle at bottom left, rgba(var(--accent-rgb), 0.12), transparent 24%),
        linear-gradient(180deg, #fff8eb 0%, var(--bg) 54%, var(--bg-soft) 100%);
    }

    .xm-symbols {
      position: absolute;
      width: 0;
      height: 0;
      overflow: hidden;
    }

    img {
      display: block;
      max-width: 100%;
    }

    .back-home {
      position: fixed;
      left: max(18px, env(safe-area-inset-left));
      top: max(18px, env(safe-area-inset-top));
      z-index: 1000;
      display: inline-flex;
      align-items: center;
      gap: 10px;
      min-height: 42px;
      padding: 0 16px;
      border: 1px solid rgba(var(--brand-rgb), 0.16);
      border-radius: 999px;
      color: var(--brand);
      background: rgba(255, 248, 235, 0.78);
      box-shadow: 0 14px 36px rgba(7, 13, 46, 0.12);
      backdrop-filter: blur(18px) saturate(160%);
      font-size: 0.86rem;
      font-weight: 800;
      text-decoration: none;
      transition: transform 180ms ease, background 180ms ease, color 180ms ease;
    }

    .back-home::before {
      content: "";
      width: 8px;
      height: 8px;
      border-left: 2px solid currentColor;
      border-bottom: 2px solid currentColor;
      transform: rotate(45deg);
    }

    .back-home:hover,
    .back-home:focus-visible {
      color: var(--bg);
      background: var(--brand);
      outline: none;
      transform: translateY(-1px);
    }

    button,
    input {
      font: inherit;
    }

    button {
      cursor: pointer;
    }

    a,
    button,
    summary,
    [role="button"],
    .back-home,
    .date-btn,
    .action-btn,
    .stage-card,
    .stage-chip,
    .day-chip,
    .day-card summary,
    .upcoming-item {
      -webkit-tap-highlight-color: transparent;
    }

    a:focus:not(:focus-visible),
    button:focus:not(:focus-visible),
    summary:focus:not(:focus-visible),
    input:focus:not(:focus-visible) {
      outline: none;
    }

    .app {
      width: min(1280px, calc(100% - 24px));
      margin: 0 auto;
      padding: calc(14px + env(safe-area-inset-top)) 0 34px;
    }

    .hero {
      position: relative;
      overflow: hidden;
      padding: 18px;
      border: 1px solid rgba(197, 209, 226, 0.88);
      border-radius: var(--radius-xl);
      background:
        linear-gradient(140deg, rgba(255, 248, 235, 0.92), rgba(250, 244, 232, 0.82)),
        linear-gradient(180deg, rgba(var(--accent-rgb), 0.18), transparent 40%);
      box-shadow: var(--shadow);
      transform: translateY(calc(var(--scroll-progress) * -10px));
      transition: transform 0.28s ease;
      transform-style: preserve-3d;
      backdrop-filter: saturate(180%) blur(20px);
    }

    .hero::before {
      content: "";
      position: absolute;
      right: -42px;
      top: -28px;
      width: 180px;
      height: 180px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(var(--brand-rgb), 0.16), transparent 70%);
      pointer-events: none;
      animation: orb-drift-a 14s ease-in-out infinite alternate;
    }

    .hero::after {
      content: "";
      position: absolute;
      left: -40px;
      bottom: -56px;
      width: 180px;
      height: 180px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(var(--accent-rgb), 0.18), transparent 72%);
      pointer-events: none;
      animation: orb-drift-b 18s ease-in-out infinite alternate;
    }

    .hero-logo-bg {
      position: absolute;
      right: clamp(16px, 5vw, 76px);
      top: clamp(12px, 5vw, 42px);
      z-index: 0;
      width: clamp(120px, 18vw, 240px);
      aspect-ratio: 1;
      opacity: 0.08;
      filter: drop-shadow(0 28px 54px rgba(7, 13, 46, 0.14));
      pointer-events: none;
      animation: logo-watermark-breathe 7.6s ease-in-out infinite;
    }

    .hero-logo-bg svg {
      width: 100%;
      height: 100%;
      display: block;
    }

    .hero-top {
      position: relative;
      z-index: 1;
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 16px;
      margin-bottom: 18px;
    }

    .hero::selection,
    .hero *::selection {
      background: rgba(var(--accent-rgb), 0.3);
    }

    .hero-copy {
      min-width: 0;
      max-width: 560px;
    }

    .hero-tag {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      min-height: 32px;
      padding: 0 14px;
      border-radius: 999px;
      background: rgba(var(--brand-rgb), 0.08);
      border: 1px solid rgba(var(--brand-rgb), 0.14);
      color: var(--brand);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.12em;
    }

    .hero-tag::before {
      content: "";
      width: 7px;
      height: 7px;
      border-radius: 999px;
      background: var(--accent);
      box-shadow: 0 0 0 4px rgba(var(--accent-rgb), 0.14);
    }

    .hero-org {
      margin-top: 10px;
      color: var(--brand);
      font-size: 18px;
      font-weight: 700;
      letter-spacing: 0.06em;
    }

    .hero-brandline {
      margin-top: 6px;
      color: var(--ink-soft);
      font-size: 13px;
      line-height: 1.7;
      letter-spacing: 0.18em;
    }

    .brand-logo {
      width: 128px;
      max-width: 34vw;
      object-fit: contain;
      filter: drop-shadow(0 8px 20px rgba(24, 45, 79, 0.08));
      animation: logo-float 7s ease-in-out infinite;
    }

    .brand-mark {
      display: grid;
      place-items: center;
      width: 74px;
      height: 74px;
      border-radius: 24px;
      background: linear-gradient(145deg, #2d2c96, #4448be);
      color: white;
      font-weight: 700;
      letter-spacing: 0.08em;
      box-shadow: 0 16px 28px rgba(45, 44, 150, 0.18);
    }

    .hero-grid {
      position: relative;
      z-index: 1;
      display: grid;
      gap: 14px;
    }

    .hero-spotlight {
      position: relative;
      overflow: hidden;
      padding: 18px;
      border-radius: var(--radius-lg);
      background:
        linear-gradient(160deg, rgba(31, 34, 111, 0.98), rgba(58, 61, 163, 0.96));
      color: #f7fbff;
      box-shadow: 0 20px 40px rgba(36, 36, 108, 0.20);
      --tilt-rotate-x: 0deg;
      --tilt-rotate-y: 0deg;
      --pointer-x: 50%;
      --pointer-y: 50%;
      transform: translateY(calc(var(--scroll-progress) * -12px)) scale(calc(1 - (var(--scroll-progress) * 0.025))) perspective(1200px) rotateX(var(--tilt-rotate-x)) rotateY(var(--tilt-rotate-y));
      transition: transform 0.32s ease;
      animation: spotlight-breathe 6s ease-in-out infinite;
      transform-style: preserve-3d;
    }

    .hero-spotlight::before {
      content: "";
      position: absolute;
      inset: -8%;
      background:
        radial-gradient(circle at var(--pointer-x) var(--pointer-y), rgba(255, 255, 255, 0.22), transparent 30%),
        linear-gradient(105deg, transparent 22%, rgba(255, 255, 255, 0.26) 44%, transparent 66%);
      transform: translate3d(-22%, -10%, 0) rotate(8deg);
      animation: spotlight-sheen 7.4s ease-in-out infinite;
      pointer-events: none;
      z-index: 0;
    }

    .hero-spotlight::after {
      content: "";
      position: absolute;
      inset: auto -28px -32px auto;
      width: 150px;
      height: 150px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(var(--accent-rgb), 0.42), transparent 68%);
      pointer-events: none;
      z-index: 0;
    }

    .hero-spotlight[data-tilt='active'] {
      transition: transform 0.12s ease;
    }

    .hero-spotlight > * {
      position: relative;
      z-index: 1;
    }

    .spotlight-kicker {
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: rgba(255, 255, 255, 0.72);
    }

    .countdown-value {
      margin-top: 10px;
      font-family: var(--font-display);
      font-size: clamp(46px, 14vw, 70px);
      line-height: 1;
      letter-spacing: 0.04em;
      background: linear-gradient(180deg, rgba(255,255,255,1), rgba(255,255,255,0.76));
      -webkit-background-clip: text;
      background-clip: text;
      color: transparent;
    }

    .countdown-label {
      margin-top: 8px;
      color: rgba(255, 255, 255, 0.90);
      font-size: 14px;
      line-height: 1.6;
    }

    .countdown-meta {
      margin-top: 6px;
      color: rgba(255, 255, 255, 0.66);
      font-size: 12px;
      line-height: 1.7;
    }

    .countdown-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px;
      margin-top: 16px;
    }

    .countdown-mini {
      padding: 12px;
      border-radius: 18px;
      background: rgba(255, 255, 255, 0.10);
      border: 1px solid rgba(255, 255, 255, 0.12);
      backdrop-filter: blur(10px);
    }

    .countdown-mini-label {
      display: inline-flex;
      align-items: center;
      color: rgba(255, 255, 255, 0.64);
      font-size: 11px;
      letter-spacing: 0.08em;
    }

    .countdown-mini-value {
      display: block;
      margin-top: 8px;
      color: white;
      font-size: 15px;
      line-height: 1.55;
      overflow-wrap: anywhere;
    }

    .spotlight-chip-row {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 14px;
    }

    .spotlight-chip {
      display: inline-flex;
      align-items: center;
      min-height: 30px;
      padding: 0 12px;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.12);
      border: 1px solid rgba(255, 255, 255, 0.14);
      color: white;
      font-size: 12px;
      font-weight: 700;
      transition: transform 0.24s ease, background 0.24s ease;
    }

    .quick-grid {
      display: grid;
      gap: 12px;
      margin-top: 16px;
      position: relative;
      z-index: 2;
    }

    .quick-side {
      display: grid;
      gap: 12px;
    }

    .utility-card,
    .overview-card,
    .stage-panel,
    .filter-bar {
      border: 1px solid rgba(197, 209, 226, 0.88);
      border-radius: var(--radius-lg);
      background: var(--panel);
      box-shadow: var(--shadow-soft);
    }

    .utility-card {
      position: relative;
      overflow: hidden;
      padding: 18px;
      transform-style: preserve-3d;
      --tilt-rotate-x: 0deg;
      --tilt-rotate-y: 0deg;
      --pointer-x: 50%;
      --pointer-y: 50%;
      transform: perspective(1000px) rotateX(var(--tilt-rotate-x)) rotateY(var(--tilt-rotate-y));
      transition: transform 0.2s ease, box-shadow 0.2s ease;
    }

    .utility-card.is-compact {
      padding: 14px 16px;
      background: rgba(255, 255, 255, 0.90);
      backdrop-filter: blur(16px);
    }

    .utility-card::before {
      content: "";
      position: absolute;
      inset: 0 auto auto 0;
      width: 100%;
      height: 4px;
      background: linear-gradient(90deg, rgba(var(--brand-rgb), 0.34), rgba(var(--accent-rgb), 0.56));
      z-index: 0;
    }

    .utility-card::after {
      content: "";
      position: absolute;
      inset: auto -16% -52% auto;
      width: 180px;
      height: 180px;
      border-radius: 50%;
      background: radial-gradient(circle at var(--pointer-x) var(--pointer-y), rgba(var(--accent-rgb), 0.18), transparent 56%);
      transform: translate3d(0, 0, 0);
      opacity: 0.7;
      pointer-events: none;
      z-index: 0;
    }

    .utility-card > *,
    .overview-card > *,
    .stage-panel > * {
      position: relative;
      z-index: 1;
    }

    .utility-kicker {
      color: rgba(var(--brand-rgb), 0.78);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      margin-bottom: 10px;
    }

    .utility-card h2,
    .overview-card h2 {
      margin: 0;
      font-size: 24px;
      line-height: 1.25;
      color: var(--brand-deep);
    }

    .utility-card.is-compact h2 {
      font-size: 18px;
      line-height: 1.2;
    }

    .section-title {
      min-width: 0;
    }

    .utility-card.is-compact .utility-kicker {
      margin-bottom: 6px;
    }

    .utility-card p,
    .overview-card p {
      margin: 10px 0 0;
      color: var(--ink-soft);
      font-size: 14px;
      line-height: 1.75;
    }

    .today-panel {
      padding: 20px;
      background:
        linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(246, 241, 231, 0.98)),
        linear-gradient(180deg, rgba(var(--accent-rgb), 0.12), transparent 60%);
    }

    .today-layout {
      display: grid;
      gap: 16px;
      align-items: start;
    }

    .today-date-tile {
      display: grid;
      gap: 8px;
      align-content: start;
      width: min(132px, 100%);
      padding: 16px 14px;
      border-radius: 26px;
      background: linear-gradient(160deg, rgba(31, 34, 111, 0.96), rgba(58, 61, 163, 0.94));
      color: white;
      box-shadow: 0 16px 34px rgba(45, 44, 150, 0.18);
    }

    .today-date-kicker {
      color: rgba(255, 255, 255, 0.72);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 0.10em;
      text-transform: uppercase;
    }

    .today-date-value {
      font-family: var(--font-display);
      font-size: clamp(34px, 10vw, 40px);
      line-height: 1;
      letter-spacing: 0.04em;
    }

    .today-date-weekday {
      font-size: 13px;
      color: rgba(255, 255, 255, 0.84);
    }

    .today-main {
      display: grid;
      gap: 8px;
      min-width: 0;
    }

    .today-heading-row {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      align-items: start;
      flex-wrap: wrap;
    }

    .today-heading-copy {
      min-width: 0;
    }

    .today-heading-copy h2 {
      margin: 0;
      font-size: clamp(26px, 5vw, 34px);
      line-height: 1.18;
      color: var(--brand-deep);
      overflow-wrap: anywhere;
    }

    .today-stage-note {
      display: inline-flex;
      align-items: center;
      min-height: 32px;
      padding: 6px 12px;
      border-radius: 16px;
      background: linear-gradient(135deg, rgba(var(--brand-rgb), 0.08), rgba(var(--accent-rgb), 0.18));
      border: 1px solid rgba(var(--brand-rgb), 0.10);
      color: var(--brand-deep);
      font-size: 12px;
      font-weight: 700;
      line-height: 1.35;
      white-space: normal;
    }

    #today-text {
      display: none;
    }

    .utility-card p:empty,
    .overview-card p:empty {
      display: none;
    }

    .subject-pill-row {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 10px;
    }

    .subject-token {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      min-height: 32px;
      max-width: 100%;
      min-width: 0;
      padding: 4px 12px 4px 6px;
      border-radius: 999px;
      background: var(--subject-bg, #f3efe5);
      border: 1px solid var(--subject-border, #e5dac2);
      color: var(--subject-accent, var(--brand-deep));
      font-size: 12px;
      font-weight: 700;
      line-height: 1.25;
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.55);
    }

    .subject-token-mark {
      display: grid;
      place-items: center;
      width: 22px;
      height: 22px;
      flex: none;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.82);
      border: 1px solid rgba(255, 255, 255, 0.9);
      color: var(--subject-accent, var(--brand-deep));
    }

    .subject-token-mark svg {
      width: 13px;
      height: 13px;
      fill: none;
      stroke: currentColor;
      stroke-width: 1.9;
      stroke-linecap: round;
      stroke-linejoin: round;
    }

    .subject-token-text {
      min-width: 0;
      overflow-wrap: anywhere;
    }

    .subject-token.is-rest {
      color: var(--ink-soft);
      background: #f5f2eb;
      border-color: #e3ddd1;
    }

    .subject-token.is-more {
      background: #f5f1e7;
      border-style: dashed;
      color: var(--ink-soft);
      padding: 0 10px;
      box-shadow: none;
    }

    .subject-token.is-more .subject-token-mark {
      display: none;
    }

    .subject-pill-row.is-compact .subject-token,
    .subject-token--micro {
      min-height: 28px;
      padding: 3px 10px 3px 4px;
      font-size: 11px;
    }

    .subject-pill-row.is-compact .subject-token,
    .subject-token--micro {
      gap: 6px;
    }

    .subject-pill-row.is-compact .subject-token .subject-token-mark,
    .subject-token--micro .subject-token-mark {
      width: 18px;
      height: 18px;
    }

    .subject-pill-row.is-compact .subject-token .subject-token-mark svg,
    .subject-token--micro .subject-token-mark svg {
      width: 11px;
      height: 11px;
    }

    .subject-token--session {
      background: rgba(255, 255, 255, 0.78);
      border-color: rgba(255, 255, 255, 0.92);
      box-shadow: none;
    }

    .today-meta,
    .date-result,
    .stage-summary-meta {
      margin-top: 10px;
      color: var(--ink-soft);
      font-size: 12px;
      line-height: 1.65;
    }

    .today-agenda {
      display: grid;
      gap: 8px;
      margin-top: 14px;
    }

    .agenda-row {
      display: grid;
      grid-template-columns: 96px minmax(0, 1fr);
      gap: 10px;
      align-items: start;
      padding: 10px 12px;
      border-radius: 16px;
      background: linear-gradient(135deg, #fbfaf6, #f5efe3);
      border: 1px solid #e6dcc7;
    }

    .agenda-time {
      color: var(--brand);
      font-size: 12px;
      font-weight: 700;
      line-height: 1.5;
    }

    .agenda-title {
      color: var(--ink);
      font-size: 13px;
      line-height: 1.7;
      overflow-wrap: anywhere;
    }

    .agenda-copy {
      min-width: 0;
      display: grid;
      gap: 8px;
    }

    .agenda-empty,
    .utility-empty,
    .schedule-placeholder {
      color: var(--ink-soft);
      font-size: 14px;
      line-height: 1.8;
    }

    .action-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 10px;
      margin-top: 12px;
    }

    .action-btn,
    .date-btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      min-height: 44px;
      border: 0;
      border-radius: 14px;
      background: linear-gradient(135deg, #2d2c96, #454ac0);
      color: white;
      font-size: 14px;
      font-weight: 700;
      box-shadow: 0 10px 22px rgba(45, 44, 150, 0.22);
      transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
    }

    .action-btn:disabled {
      opacity: 0.42;
      box-shadow: none;
    }

    .date-form {
      display: grid;
      gap: 10px;
      margin-top: 10px;
    }

    .date-input {
      min-height: 46px;
      width: 100%;
      padding: 0 14px;
      border-radius: 14px;
      border: 1px solid #d3dceb;
      background: #fbfcfe;
      color: var(--ink);
      box-shadow: inset 0 1px 2px rgba(24, 45, 79, 0.04);
    }

    .utility-search .date-result {
      margin-top: 8px;
    }

    .upcoming-list {
      display: grid;
      grid-auto-flow: column;
      grid-auto-columns: minmax(126px, 1fr);
      gap: 8px;
      margin-top: 10px;
      overflow-x: auto;
      scrollbar-width: none;
      scroll-snap-type: x proximity;
    }

    .upcoming-list::-webkit-scrollbar {
      display: none;
    }

    .upcoming-item {
      width: 100%;
      text-align: left;
      display: grid;
      grid-template-columns: 1fr;
      gap: 8px;
      align-items: center;
      padding: 10px;
      min-height: 124px;
      border: 1px solid rgba(var(--brand-rgb), 0.13);
      border-radius: 16px;
      background:
        radial-gradient(circle at 82% 18%, rgba(var(--accent-rgb), 0.12), transparent 30%),
        linear-gradient(135deg, rgba(255, 252, 246, 0.98), rgba(247, 239, 224, 0.96));
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7), 0 10px 22px rgba(7, 13, 46, 0.05);
      transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
      scroll-snap-align: start;
    }

    .upcoming-item-datebox {
      display: grid;
      gap: 2px;
      align-content: start;
      padding: 8px 10px;
      border-radius: 14px;
      background: rgba(255, 255, 255, 0.62);
      border: 1px solid rgba(255, 255, 255, 0.78);
      text-align: left;
    }

    .upcoming-item-datevalue {
      color: var(--brand-deep);
      font-size: 16px;
      font-weight: 800;
      line-height: 1.1;
    }

    .upcoming-item-weekday {
      color: var(--ink-soft);
      font-size: 10px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .upcoming-item-body {
      min-width: 0;
      display: grid;
      gap: 8px;
      align-content: start;
    }

    .upcoming-item-stage {
      color: var(--ink-soft);
      font-size: 11px;
      line-height: 1.5;
      overflow-wrap: anywhere;
    }

    .upcoming-subjects {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }

    .workspace {
      display: grid;
      gap: 16px;
      margin-top: 18px;
    }

    .chapter-divider {
      display: grid;
      place-items: center;
      margin: 18px auto 10px;
      opacity: 0.72;
      pointer-events: none;
    }

    .chapter-divider svg {
      width: min(360px, 72vw);
      height: auto;
      display: block;
      filter: drop-shadow(0 12px 24px rgba(7, 13, 46, 0.06));
    }

    .sidebar {
      display: grid;
      gap: 14px;
    }

    .overview-card,
    .stage-panel {
      padding: 18px;
    }

    .summary-chip-row {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 14px;
    }

    .panel-head {
      display: flex;
      justify-content: space-between;
      align-items: end;
      gap: 12px;
      margin-bottom: 12px;
    }

    .panel-head h2 {
      margin: 0;
      font-size: 20px;
    }

    .panel-head p {
      margin: 0;
      color: var(--ink-soft);
      font-size: 13px;
      line-height: 1.6;
    }

    .stage-card-grid {
      display: grid;
      gap: 10px;
    }

    .stage-card {
      position: relative;
      overflow: hidden;
      width: 100%;
      text-align: left;
      padding: 14px;
      border: 1px solid #e0d8c8;
      border-radius: 20px;
      background: linear-gradient(135deg, #fffdf8, #f7f1e7);
      color: var(--ink);
      transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
      transform-style: preserve-3d;
      --tilt-rotate-x: 0deg;
      --tilt-rotate-y: 0deg;
      --pointer-x: 50%;
      --pointer-y: 50%;
    }

    .stage-card::before {
      content: "";
      position: absolute;
      inset: 0;
      border-radius: inherit;
      background: radial-gradient(circle at var(--pointer-x) var(--pointer-y), rgba(255, 255, 255, 0.56), transparent 32%);
      opacity: 0;
      transition: opacity 0.2s ease;
      pointer-events: none;
    }

    .stage-card.is-selected {
      border-color: rgba(var(--brand-rgb), 0.34);
      background: linear-gradient(135deg, #f6f4ff, #ece9fb);
      box-shadow: inset 0 0 0 1px rgba(var(--brand-rgb), 0.12);
    }

    .stage-card[data-tilt='active'],
    .utility-card[data-tilt='active'] {
      transform: translateY(-4px) perspective(1000px) rotateX(var(--tilt-rotate-x)) rotateY(var(--tilt-rotate-y));
    }

    .stage-card[data-tilt='active']::before {
      opacity: 1;
    }

    .stage-card-top {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      align-items: center;
    }

    .stage-card-kicker {
      color: rgba(var(--brand-rgb), 0.78);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 0.12em;
      text-transform: uppercase;
    }

    .stage-card-range {
      color: var(--ink-faint);
      font-size: 11px;
      text-align: right;
    }

    .stage-card-title {
      margin-top: 10px;
      font-size: 22px;
      font-weight: 800;
      line-height: 1.25;
      color: var(--brand-deep);
    }

    .stage-card-raw {
      margin-top: 6px;
      color: var(--ink-soft);
      font-size: 13px;
      line-height: 1.65;
    }

    .stage-card-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 8px 14px;
      margin-top: 10px;
      color: var(--brand);
      font-size: 12px;
      font-weight: 700;
    }

    .stage-card-subjects {
      margin-top: 10px;
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }

    .schedule-panel {
      min-width: 0;
      order: 1;
    }

    .sidebar {
      order: 2;
    }

    .filter-bar {
      position: sticky;
      top: calc(10px + env(safe-area-inset-top));
      z-index: 12;
      padding: 14px;
      background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(249, 244, 236, 0.96));
      backdrop-filter: blur(16px);
    }

    .filter-bar::before {
      content: "";
      position: absolute;
      left: 14px;
      right: 14px;
      top: 0;
      height: 3px;
      border-radius: 999px;
      background: linear-gradient(90deg, rgba(var(--brand-rgb), 0.92), rgba(var(--accent-rgb), 0.84));
      width: var(--reading-progress);
      max-width: calc(100% - 28px);
      transition: width 0.16s linear;
    }

    .nav-block + .nav-block {
      margin-top: 10px;
    }

    .nav-label {
      display: inline-flex;
      align-items: center;
      margin-bottom: 8px;
      color: rgba(var(--brand-rgb), 0.78);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 0.14em;
      text-transform: uppercase;
    }

    .stage-chip-scroll,
    .day-chip-scroll {
      display: grid;
      grid-auto-flow: column;
      grid-auto-columns: max-content;
      gap: 10px;
      overflow-x: auto;
      scrollbar-width: none;
      scroll-snap-type: x proximity;
      overscroll-behavior-x: contain;
    }

    .stage-chip-scroll::-webkit-scrollbar,
    .day-chip-scroll::-webkit-scrollbar {
      display: none;
    }

    .stage-chip,
    .day-chip {
      text-align: left;
      border-radius: 16px;
      border: 1px solid #e3dac9;
      background: #fcf9f3;
      color: var(--ink);
      box-shadow: 0 8px 18px rgba(24, 45, 79, 0.04);
      scroll-snap-align: start;
      transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
      position: relative;
      overflow: hidden;
    }

    .stage-chip > *,
    .day-chip > *,
    .day-card summary > *,
    .day-card .day-body > * {
      position: relative;
      z-index: 1;
    }

    .stage-chip {
      display: grid;
      gap: 3px;
      min-width: 126px;
      padding: 11px 13px;
    }

    .stage-chip.is-selected,
    .day-chip.is-selected {
      background: linear-gradient(135deg, #2d2c96, #454ac0);
      color: white;
      border-color: rgba(var(--brand-rgb), 0.88);
      box-shadow: 0 10px 18px rgba(45, 44, 150, 0.16);
    }

    .stage-chip.is-selected::after,
    .day-chip.is-selected::after {
      content: "";
      position: absolute;
      inset: -50% auto auto -40%;
      width: 68%;
      height: 200%;
      background: linear-gradient(110deg, transparent 20%, rgba(255,255,255,0.34) 46%, transparent 70%);
      transform: rotate(16deg);
      animation: chip-sheen 5.6s ease-in-out infinite;
      pointer-events: none;
      z-index: 0;
    }

    .stage-chip-title {
      display: inline-flex;
      align-items: center;
      font-size: 14px;
      font-weight: 700;
      line-height: 1.4;
      overflow-wrap: anywhere;
    }

    .stage-chip-meta {
      font-size: 11px;
      opacity: 0.76;
    }

    .stage-chip-subjects {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin-top: 2px;
    }

    .day-chip {
      display: grid;
      gap: 4px;
      min-width: 136px;
      padding: 11px 13px 12px;
    }

    .day-chip.is-hidden {
      display: none;
    }

    .day-chip-date {
      font-size: 14px;
      font-weight: 800;
    }

    .day-chip-head {
      display: flex;
      justify-content: space-between;
      align-items: baseline;
      gap: 10px;
    }

    .day-chip-weekday {
      font-size: 11px;
      opacity: 0.76;
    }

    .day-chip-subjects {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin-top: 2px;
    }

    .day-list {
      display: grid;
      gap: 12px;
      margin-top: 14px;
    }

    .day-card {
      overflow: hidden;
      border-radius: 24px;
      background: var(--panel-soft);
      border: 1px solid rgba(197, 209, 226, 0.88);
      transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
      scroll-margin-top: 146px;
      box-shadow: var(--shadow-soft);
      transform-style: preserve-3d;
      position: relative;
    }

    .day-card::before {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, rgba(var(--brand-rgb), 0.06), transparent 26%);
      opacity: 0;
      transition: opacity 0.24s ease;
      pointer-events: none;
      z-index: 0;
    }

    .day-card.is-stage-hidden {
      display: none;
    }

    .day-card.is-focused {
      border-color: rgba(var(--brand-rgb), 0.34);
      box-shadow: 0 18px 34px rgba(24, 45, 79, 0.10);
    }

    .day-card[open] {
      background: white;
    }

    .day-card[open]::before,
    .day-card.is-focused::before {
      opacity: 1;
    }

    .day-card[open] .day-arrow {
      transform: translateY(-1px);
      background: rgba(var(--brand-rgb), 0.12);
    }

    .day-card summary {
      list-style: none;
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 14px;
      padding: 18px;
      cursor: pointer;
      transition: transform 0.2s ease;
    }

    .day-card summary::-webkit-details-marker {
      display: none;
    }

    .day-leading {
      display: grid;
      grid-template-columns: 84px minmax(0, 1fr);
      gap: 14px;
      min-width: 0;
    }

    .day-calendar {
      display: grid;
      gap: 8px;
      align-content: start;
      padding: 14px 10px;
      border-radius: 22px;
      background: linear-gradient(180deg, #f4f0e7, #fffdf8);
      border: 1px solid #e4dac7;
      text-align: center;
    }

    .day-calendar-date {
      font-size: 20px;
      font-weight: 800;
      line-height: 1.1;
      color: var(--brand);
    }

    .day-calendar-weekday {
      color: var(--ink-soft);
      font-size: 12px;
      line-height: 1.3;
    }

    .day-main {
      min-width: 0;
      display: grid;
      align-content: start;
    }

    .day-topline {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      align-items: center;
    }

    .day-stage-badge,
    .day-load-badge {
      display: inline-flex;
      align-items: center;
      min-height: 28px;
      padding: 0 11px;
      border-radius: 999px;
      font-size: 12px;
      font-weight: 700;
    }

    .day-stage-badge {
      background: rgba(var(--brand-rgb), 0.10);
      border: 1px solid rgba(var(--brand-rgb), 0.14);
      color: var(--brand);
    }

    .day-load-badge {
      background: rgba(var(--accent-rgb), 0.16);
      border: 1px solid rgba(var(--accent-rgb), 0.22);
      color: #8d6526;
    }

    .day-date {
      margin-top: 10px;
      font-size: 20px;
      font-weight: 800;
      line-height: 1.35;
    }

    .day-summary {
      margin-top: 10px;
      color: var(--ink-soft);
      font-size: 14px;
      line-height: 1.75;
      overflow-wrap: anywhere;
    }

    .day-arrow {
      flex: 0 0 auto;
      display: inline-flex;
      align-items: center;
      min-height: 34px;
      padding: 0 12px;
      border-radius: 999px;
      background: rgba(var(--brand-rgb), 0.08);
      color: var(--brand);
      font-size: 12px;
      font-weight: 700;
      transition: transform 0.22s ease, background 0.22s ease;
    }

    .day-body {
      display: grid;
      gap: 10px;
      padding: 0 18px 18px;
    }

    .day-card[open] .day-body {
      animation: day-body-reveal 0.34s cubic-bezier(0.2, 0.8, 0.2, 1);
    }

    .session-pill {
      opacity: 0.84;
      transform: translateY(0);
    }

    .day-card[open] .session-pill {
      animation: session-pill-rise 0.42s cubic-bezier(0.2, 0.8, 0.2, 1) both;
    }

    .day-card[open] .session-pill:nth-child(2) {
      animation-delay: 0.05s;
    }

    .day-card[open] .session-pill:nth-child(3) {
      animation-delay: 0.10s;
    }

    .day-card[open] .session-pill:nth-child(4) {
      animation-delay: 0.15s;
    }

    .session-pill {
      display: grid;
      grid-template-columns: 120px minmax(0, 1fr);
      gap: 14px;
      align-items: start;
      padding: 14px 16px;
      border-radius: 20px;
      background: var(--session-bg);
      border: 1px solid var(--session-border);
    }

    .session-time {
      color: var(--session-accent);
      font-size: 12px;
      font-weight: 800;
      line-height: 1.6;
      letter-spacing: 0.04em;
    }

    .session-copy {
      min-width: 0;
      display: grid;
      gap: 8px;
    }

    .session-title {
      color: var(--ink);
      font-size: 14px;
      line-height: 1.8;
      overflow-wrap: anywhere;
    }

    .footer-note {
      margin-top: 18px;
      padding: 0 6px;
      color: var(--ink-faint);
      font-size: 12px;
      line-height: 1.8;
      text-align: center;
    }

    .date-input:focus-visible,
    .action-btn:focus-visible,
    .date-btn:focus-visible,
    .stage-card:focus-visible,
    .stage-chip:focus-visible,
    .day-chip:focus-visible,
    .upcoming-item:focus-visible {
      outline: 2px solid rgba(var(--brand-rgb), 0.36);
      outline-offset: 2px;
    }

    @keyframes rise-in {
      from {
        opacity: 0;
        transform: translateY(12px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    @keyframes orb-drift-a {
      from {
        transform: translate3d(0, 0, 0) scale(1);
      }
      to {
        transform: translate3d(-16px, 12px, 0) scale(1.08);
      }
    }

    @keyframes orb-drift-b {
      from {
        transform: translate3d(0, 0, 0) scale(1);
      }
      to {
        transform: translate3d(18px, -14px, 0) scale(1.1);
      }
    }

    @keyframes logo-float {
      0%, 100% {
        transform: translateY(0);
      }
      50% {
        transform: translateY(-4px);
      }
    }

    @keyframes logo-watermark-breathe {
      0%, 100% {
        transform: translate3d(0, 0, 0) scale(1);
        opacity: 0.07;
      }
      50% {
        transform: translate3d(-6px, 4px, 0) scale(1.035);
        opacity: 0.11;
      }
    }

    @keyframes spotlight-breathe {
      0%, 100% {
        box-shadow: 0 20px 40px rgba(36, 36, 108, 0.20);
      }
      50% {
        box-shadow: 0 24px 50px rgba(36, 36, 108, 0.24);
      }
    }

    @keyframes spotlight-sheen {
      0%, 14% {
        transform: translate3d(-32%, -14%, 0) rotate(8deg);
        opacity: 0;
      }
      22% {
        opacity: 1;
      }
      48% {
        transform: translate3d(46%, 4%, 0) rotate(8deg);
        opacity: 0.74;
      }
      62%, 100% {
        transform: translate3d(62%, 10%, 0) rotate(8deg);
        opacity: 0;
      }
    }

    @keyframes day-body-reveal {
      from {
        opacity: 0;
        transform: translateY(8px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    @keyframes session-pill-rise {
      from {
        opacity: 0;
        transform: translateY(12px) scale(0.985);
      }
      to {
        opacity: 1;
        transform: translateY(0) scale(1);
      }
    }

    @keyframes chip-sheen {
      0%, 32% {
        transform: translate3d(-120%, 0, 0) rotate(16deg);
        opacity: 0;
      }
      42% {
        opacity: 1;
      }
      66% {
        transform: translate3d(210%, 0, 0) rotate(16deg);
        opacity: 0.76;
      }
      100% {
        transform: translate3d(240%, 0, 0) rotate(16deg);
        opacity: 0;
      }
    }

    .reveal {
      opacity: 0;
      transform: translateY(18px) scale(0.985);
      transition:
        opacity 0.68s cubic-bezier(0.2, 0.8, 0.2, 1) var(--reveal-delay, 0ms),
        transform 0.68s cubic-bezier(0.2, 0.8, 0.2, 1) var(--reveal-delay, 0ms);
    }

    .reveal.is-visible {
      opacity: 1;
      transform: translateY(0) scale(1);
    }

    .hero {
      animation: rise-in 0.52s ease both;
    }

    @media (hover: hover) {
      .action-btn:hover,
      .date-btn:hover,
      .stage-card:hover,
      .upcoming-item:hover {
        transform: translateY(-2px);
      }

      .spotlight-chip:hover {
        transform: translateY(-1px);
        background: rgba(255, 255, 255, 0.18);
      }

      .stage-card:hover,
      .stage-chip:hover,
      .day-chip:hover,
      .upcoming-item:hover {
        box-shadow: 0 14px 24px rgba(24, 45, 79, 0.10);
      }

      .utility-card:hover,
      .day-card:hover {
        box-shadow: 0 20px 36px rgba(34, 37, 96, 0.12);
      }
    }

    @media (hover: none), (pointer: coarse) {
      .back-home:hover {
        color: var(--brand);
        background: rgba(255, 248, 235, 0.78);
        transform: none;
      }

      .back-home:active,
      .action-btn:active,
      .date-btn:active,
      .stage-card:active,
      .stage-chip:active,
      .day-chip:active,
      .day-card summary:active,
      .upcoming-item:active {
        transform: scale(0.985);
      }

      .back-home.is-tap-motion,
      .action-btn.is-tap-motion,
      .date-btn.is-tap-motion,
      .stage-card.is-tap-motion,
      .stage-chip.is-tap-motion,
      .day-chip.is-tap-motion,
      .day-card summary.is-tap-motion,
      .upcoming-item.is-tap-motion {
        transform: scale(0.985);
      }

      .stage-card.is-selected:active,
      .stage-chip.is-selected:active,
      .day-chip.is-selected:active,
      .stage-card.is-selected.is-tap-motion,
      .stage-chip.is-selected.is-tap-motion,
      .day-chip.is-selected.is-tap-motion {
        transform: scale(0.98);
      }

      .stage-card.is-tap-motion::before {
        opacity: 1;
      }

      .action-btn:disabled:active,
      .action-btn:disabled.is-tap-motion {
        transform: none;
      }
    }

    @media (max-width: 479px) {
      .app {
        width: min(100% - 16px, 100%);
        padding-top: calc(10px + env(safe-area-inset-top));
      }

      .hero,
      .utility-card,
      .overview-card,
      .stage-panel,
      .filter-bar,
      .day-card {
        border-radius: 22px;
      }

      .hero {
        padding: 14px;
      }

      .hero-copy {
        max-width: 100%;
      }

      .hero-subtitle {
        font-size: 14px;
      }

      .day-leading {
        grid-template-columns: 74px minmax(0, 1fr);
      }

      .day-calendar-date {
        font-size: 18px;
      }

      .day-date {
        font-size: 18px;
      }

      .session-pill {
        grid-template-columns: 1fr;
      }

      .agenda-row {
        grid-template-columns: 1fr;
        gap: 4px;
      }

      .action-row {
        grid-template-columns: 1fr;
      }

      .today-layout {
        gap: 12px;
      }

      .today-date-tile {
        width: 100%;
      }

      .upcoming-list {
        grid-auto-columns: minmax(116px, 1fr);
      }
    }

    @media (min-width: 600px) {
      .stage-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .date-form {
        grid-template-columns: minmax(0, 1fr) 120px;
        align-items: center;
      }
    }

    @media (min-width: 768px) and (max-width: 1023px) {
      .app {
        width: min(100% - 28px, 920px);
      }

      .hero {
        padding: 20px;
      }

      .hero-top {
        align-items: center;
        margin-bottom: 14px;
      }

      .hero-grid {
        justify-content: start;
      }

      .hero-spotlight {
        width: min(420px, 100%);
      }

      .quick-grid {
        margin-top: 14px;
        grid-template-columns: minmax(0, 1fr);
      }

      .quick-side {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
      }

      .today-layout {
        grid-template-columns: 132px minmax(0, 1fr);
      }

      .workspace {
        gap: 18px;
      }

      .stage-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
    }

    @media (min-width: 1024px) {
      .hero {
        padding: 22px;
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(320px, 360px);
        gap: 20px;
        align-items: start;
      }

      .hero-top {
        margin-bottom: 0;
        min-height: 100%;
        align-items: start;
      }

      .hero-grid {
        display: block;
      }

      .hero-spotlight {
        width: 100%;
        margin-left: 0;
      }

      .quick-grid {
        margin-top: 18px;
        grid-template-columns: minmax(0, 1.28fr) minmax(320px, 0.72fr);
        align-items: start;
      }

      .quick-side {
        gap: 14px;
      }

      .today-layout {
        grid-template-columns: 132px minmax(0, 1fr);
      }

      .workspace {
        grid-template-columns: 330px minmax(0, 1fr);
        align-items: start;
        gap: 18px;
      }

      .sidebar {
        order: 1;
        position: sticky;
        top: calc(10px + env(safe-area-inset-top));
      }

      .schedule-panel {
        order: 2;
      }

      .stage-card-grid {
        grid-template-columns: 1fr;
      }
    }

    @media (min-width: 1180px) {
      .app {
        width: min(1280px, calc(100% - 32px));
      }

      .stats {
        grid-template-columns: repeat(4, minmax(0, 1fr));
      }
    }

    @media (prefers-reduced-motion: reduce) {
      html {
        scroll-behavior: auto;
      }

      *,
      *::before,
      *::after {
        animation: none !important;
        transition: none !important;
      }

      .reveal {
        opacity: 1 !important;
        transform: none !important;
      }
    }
