    :root {
      color-scheme: dark;
      --ink: #f5f1e8;
      --dim: rgba(245, 241, 232, .58);
      --line: rgba(255, 255, 255, .16);
      --hot: #ff5b2d;
      --panel: rgba(8, 8, 8, .72);
      --ease: cubic-bezier(.2, .8, .2, 1);
    }
    * { box-sizing: border-box; }
    html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; background: #0d161c; }
    body {
      font-family: "Microsoft YaHei UI", "PingFang SC", sans-serif;
      overscroll-behavior: none;
      touch-action: none;
      -webkit-user-select: none;
      user-select: none;
    }
    #viewport {
      position: fixed;
      inset: 0;
      overflow: hidden;
      background:
        radial-gradient(circle at 50% 50%, #1a2831 0%, #0d161c 68%);
    }
    #stage {
      position: absolute;
      left: 50%;
      top: 50%;
      width: 1600px;
      height: 900px;
      transform: translate(-50%, -50%);
      transform-origin: center;
      background: #000;
      cursor: grab;
    }
    #stage.dragging { cursor: grabbing; }
    canvas { display: block; width: 100%; height: 100%; }

    .chrome {
      position: fixed;
      z-index: 10;
      pointer-events: none;
      color: var(--ink);
      text-shadow: 0 1px 10px #000;
    }
    #brand {
      left: max(18px, env(safe-area-inset-left));
      top: max(16px, env(safe-area-inset-top));
      display: flex;
      align-items: center;
      gap: 10px;
      font-size: 12px;
      letter-spacing: .18em;
      text-transform: uppercase;
      opacity: .72;
    }
    #brand::before {
      content: "";
      width: 8px;
      height: 8px;
      border: 1px solid var(--hot);
      transform: rotate(45deg);
      box-shadow: 0 0 14px rgba(255, 91, 45, .65);
    }
    #readout {
      right: max(18px, env(safe-area-inset-right));
      top: max(16px, env(safe-area-inset-top));
      min-width: 176px;
      padding: 11px 13px;
      border: 1px solid var(--line);
      background: var(--panel);
      backdrop-filter: blur(12px);
      font: 11px/1.7 ui-monospace, "Cascadia Mono", monospace;
      letter-spacing: .06em;
    }
    #readout b { color: var(--hot); font-weight: 500; }
    #hint {
      left: 50%;
      bottom: max(15px, env(safe-area-inset-bottom));
      transform: translateX(-50%);
      color: var(--dim);
      font-size: 11px;
      letter-spacing: .13em;
      white-space: nowrap;
      padding: 7px 11px;
      border-radius: 999px;
      background: rgba(5, 12, 16, .58);
      backdrop-filter: blur(8px);
      transition: opacity .35s var(--ease);
    }
    #hint.hidden { opacity: 0; }
    #actor-status {
      left: max(18px, env(safe-area-inset-left));
      bottom: max(16px, env(safe-area-inset-bottom));
      padding: 8px 11px;
      border-left: 2px solid var(--hot);
      background: rgba(0, 0, 0, .58);
      font: 10px/1.5 ui-monospace, "Cascadia Mono", monospace;
      letter-spacing: .12em;
      text-transform: uppercase;
    }

    .overlay {
      position: fixed;
      z-index: 50;
      inset: 0;
      display: grid;
      place-items: center;
      padding: 28px;
      background:
        radial-gradient(circle at 50% 42%, rgba(255, 91, 45, .11), transparent 32%),
        rgba(0, 0, 0, .91);
      color: var(--ink);
      text-align: center;
    }
    .overlay[hidden] { display: none; }
    .intro-card { width: min(440px, 92vw); }
    .eyebrow {
      margin: 0 0 14px;
      color: var(--hot);
      font: 11px ui-monospace, monospace;
      letter-spacing: .28em;
      text-transform: uppercase;
    }
    h1 {
      margin: 0;
      font: 400 clamp(30px, 7vw, 58px)/.98 Georgia, "Songti SC", serif;
      letter-spacing: -.045em;
    }
    .lede {
      max-width: 32em;
      margin: 20px auto 24px;
      color: var(--dim);
      font-size: 13px;
      line-height: 1.8;
    }
    button {
      border: 1px solid rgba(255, 255, 255, .42);
      padding: 13px 24px;
      color: #fff;
      background: #0c0c0c;
      font: 12px "Microsoft YaHei UI", sans-serif;
      letter-spacing: .16em;
      cursor: pointer;
      transition: border-color .2s, background .2s, transform .2s;
    }
    button:hover { border-color: var(--hot); background: #18100d; transform: translateY(-1px); }
    button:active { transform: translateY(0); }
    button:focus-visible {
      outline: 2px solid #fff;
      outline-offset: 3px;
    }
    #bottom-controls { display: contents; }
    #recalibrate {
      position: fixed;
      z-index: 22;
      right: max(14px, env(safe-area-inset-right));
      bottom: max(66px, calc(env(safe-area-inset-bottom) + 58px));
      min-height: 44px;
      padding: 10px 14px;
      border-color: rgba(255,255,255,.2);
      border-radius: 999px;
      background: rgba(5,12,16,.72);
      backdrop-filter: blur(10px);
      font-size: 11px;
      letter-spacing: .08em;
    }
    #recalibrate[hidden] { display: none; }
    #character-switch {
      position: fixed;
      z-index: 22;
      left: max(14px, env(safe-area-inset-left));
      bottom: max(14px, env(safe-area-inset-bottom));
      min-height: 44px;
      padding: 10px 14px;
      border-color: rgba(255,255,255,.2);
      border-radius: 999px;
      background: rgba(5,12,16,.72);
      backdrop-filter: blur(10px);
      font-size: 11px;
      letter-spacing: .06em;
    }
    #character-switch[disabled] { opacity: .5; cursor: wait; }
    #photo-button {
      position: fixed;
      z-index: 22;
      right: max(14px, env(safe-area-inset-right));
      bottom: max(14px, env(safe-area-inset-bottom));
      min-height: 44px;
      padding: 10px 14px;
      border-color: rgba(255,255,255,.2);
      border-radius: 999px;
      background: rgba(5,12,16,.72);
      backdrop-filter: blur(10px);
      font-size: 11px;
      letter-spacing: .06em;
    }
    #photo-input {
      position: fixed;
      width: 1px;
      height: 1px;
      overflow: hidden;
      opacity: 0;
      pointer-events: none;
    }
    #cg-button {
      position: fixed;
      z-index: 22;
      right: max(14px, env(safe-area-inset-right));
      bottom: max(118px, calc(env(safe-area-inset-bottom) + 110px));
      min-height: 44px;
      padding: 10px 14px;
      border-color: rgba(255,168,112,.35);
      border-radius: 999px;
      background: rgba(20,12,10,.78);
      backdrop-filter: blur(10px);
      font-size: 11px;
      letter-spacing: .08em;
    }
    .cg-modal {
      position: fixed;
      z-index: 80;
      inset: 0;
      display: grid;
      place-items: center;
      padding: max(14px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
      background: rgba(2,7,10,.82);
      backdrop-filter: blur(18px);
      -webkit-backdrop-filter: blur(18px);
    }
    .cg-modal[hidden] { display: none; }
    .cg-shell {
      width: min(780px, 100%);
      max-height: min(760px, 100%);
      overflow: auto;
      padding: 18px;
      border: 1px solid rgba(255,255,255,.16);
      border-radius: 22px;
      background: #0b1419;
      box-shadow: 0 28px 90px rgba(0,0,0,.55);
    }
    .cg-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; }
    .cg-header small, .cg-copy small { color: #ff8a59; font: 9px ui-monospace, monospace; letter-spacing: .18em; }
    .cg-header h2, .cg-copy h2 { margin: 3px 0 0; font: 400 22px Georgia, "Songti SC", serif; }
    #cg-close, #cg-viewer-close { width: 42px; height: 42px; padding: 0; border-radius: 50%; font-size: 22px; }
    #cg-progress { margin: 14px 0; color: rgba(255,255,255,.6); font-size: 11px; }
    #cg-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; }
    .cg-card { position: relative; min-width: 0; padding: 0; overflow: hidden; border-radius: 14px; text-align: left; letter-spacing: 0; background: #111b20; }
    .cg-card img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #080d10; }
    .cg-card span { display: block; padding: 10px; font-size: 11px; }
    .cg-card.locked img { filter: grayscale(1) brightness(.16); }
    .cg-card.locked::after { content: "LOCKED"; position: absolute; inset: 0 0 34px; display: grid; place-items: center; color: rgba(255,255,255,.46); font: 10px ui-monospace, monospace; letter-spacing: .18em; }
    .cg-card.bad { border-color: rgba(255,70,70,.42); }
    .cg-card.bad span { color: #ff8f85; }
    .cg-card.bad:not(.locked)::before { content: "BAD"; position: absolute; z-index: 2; top: 8px; left: 8px; padding: 4px 7px; border-radius: 999px; background: rgba(120,0,0,.82); color: #fff; font: 8px ui-monospace, monospace; letter-spacing: .12em; }
    .cg-viewer-card { position: relative; width: min(720px,100%); overflow: hidden; border: 1px solid rgba(255,255,255,.16); border-radius: 22px; background: #0b1419; }
    #cg-viewer-close { position: absolute; z-index: 2; top: 12px; right: 12px; background: rgba(5,8,10,.72); }
    #cg-viewer-image { display: block; width: 100%; max-height: 58vh; object-fit: contain; background: #05090b; }
    .cg-copy { padding: 18px 20px 22px; }
    .cg-copy p { margin: 10px 0 0; color: rgba(255,255,255,.7); font-size: 12px; line-height: 1.7; }
    #care-panel {
      position: fixed;
      z-index: 20;
      left: max(14px, env(safe-area-inset-left));
      top: max(54px, calc(env(safe-area-inset-top) + 46px));
      width: 210px;
      padding: 11px 12px;
      border: 1px solid rgba(255,255,255,.13);
      border-radius: 12px;
      background: rgba(5,12,16,.68);
      color: var(--ink);
      backdrop-filter: blur(12px);
      box-shadow: 0 12px 34px rgba(0,0,0,.18);
    }
    .care-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 8px;
      font-size: 10px;
      letter-spacing: .08em;
    }
    #care-level { color: #ffb38f; }
    #care-coins { color: #f4d57a; }
    .care-stat {
      display: grid;
      grid-template-columns: 32px 1fr 24px;
      gap: 7px;
      align-items: center;
      margin: 5px 0;
      font-size: 9px;
      color: rgba(245,241,232,.72);
    }
    .care-track {
      height: 5px;
      overflow: hidden;
      border-radius: 999px;
      background: rgba(255,255,255,.1);
    }
    .care-fill {
      height: 100%;
      width: 50%;
      border-radius: inherit;
      background: linear-gradient(90deg, #ff7045, #ffb36f);
      transition: width .35s var(--ease), filter .2s;
    }
    .care-fill.low { filter: saturate(.65) brightness(.72); }
    .care-value { text-align: right; font-variant-numeric: tabular-nums; }
    #care-xp {
      height: 2px;
      margin-top: 8px;
      overflow: hidden;
      background: rgba(255,255,255,.08);
    }
    #care-xp > span {
      display: block;
      height: 100%;
      background: var(--hot);
      transition: width .35s var(--ease);
    }
    #care-actions {
      position: fixed;
      z-index: 22;
      left: 50%;
      bottom: max(14px, env(safe-area-inset-bottom));
      display: flex;
      gap: 8px;
      transform: translateX(-50%);
    }
    #care-actions button {
      min-height: 44px;
      padding: 9px 13px;
      border-color: rgba(255,255,255,.18);
      border-radius: 999px;
      background: rgba(5,12,16,.76);
      backdrop-filter: blur(10px);
      font-size: 11px;
      letter-spacing: .04em;
      white-space: nowrap;
    }
    #care-actions button[disabled] { opacity: .38; cursor: not-allowed; transform: none; }
    #feedback {
      position: fixed;
      z-index: 24;
      left: 50%;
      top: max(18px, env(safe-area-inset-top));
      transform: translate(-50%, -10px);
      padding: 9px 14px;
      border: 1px solid rgba(255,255,255,.16);
      border-radius: 999px;
      background: rgba(5,12,16,.84);
      color: var(--ink);
      font-size: 12px;
      opacity: 0;
      pointer-events: none;
      transition: opacity .2s var(--ease), transform .2s var(--ease);
    }
    #feedback.visible { opacity: 1; transform: translate(-50%, 0); }
    #dialogue {
      position: fixed;
      z-index: 26;
      left: 50%;
      top: 50%;
      max-width: min(260px, 72vw);
      padding: 10px 13px;
      border: 1px solid rgba(255,255,255,.2);
      border-radius: 14px 14px 14px 4px;
      background: rgba(250,246,236,.94);
      color: #1d252a;
      box-shadow: 0 10px 32px rgba(0,0,0,.28);
      font-size: 12px;
      line-height: 1.55;
      text-align: center;
      opacity: 0;
      transform: translate(-50%, calc(-100% - 12px)) scale(.94);
      transform-origin: 50% 100%;
      pointer-events: none;
      transition: opacity .16s var(--ease), transform .2s var(--ease);
    }
    #dialogue.visible {
      opacity: 1;
      transform: translate(-50%, calc(-100% - 12px)) scale(1);
    }
    #gift-fx {
      position: fixed;
      z-index: 27;
      left: 0;
      top: 0;
      font-size: 30px;
      line-height: 1;
      pointer-events: none;
      opacity: 0;
      filter: drop-shadow(0 4px 8px rgba(0,0,0,.35));
    }
    body:not(.debug-ui) #readout,
    body:not(.debug-ui) #actor-status { display: none; }
    #rotate-overlay { z-index: 60; }
    #rotate-icon {
      width: 70px;
      height: 45px;
      margin: 0 auto 22px;
      border: 2px solid var(--ink);
      border-radius: 9px;
      transform: rotate(90deg);
      animation: rotate-phone 1.7s ease-in-out infinite;
    }
    #rotate-overlay h2 { margin: 0 0 10px; font: 400 24px Georgia, "Songti SC", serif; }
    #rotate-overlay p { margin: 0; color: var(--dim); font-size: 13px; }
    @keyframes rotate-phone {
      0%, 25% { transform: rotate(90deg); }
      70%, 100% { transform: rotate(0deg); }
    }
    @media (orientation: portrait) and (max-width: 700px) {
      body.started #rotate-overlay { display: none !important; }
      #brand {
        top: max(10px, env(safe-area-inset-top));
        left: max(10px, env(safe-area-inset-left));
        font-size: 9px;
        letter-spacing: .11em;
      }
      #readout {
        top: max(10px, env(safe-area-inset-top));
        right: max(10px, env(safe-area-inset-right));
        min-width: 126px;
        padding: 7px 9px;
        font-size: 9px;
        line-height: 1.45;
      }
      #hint { bottom: 12px; font-size: 9px; }
      #actor-status { bottom: 12px; left: 10px; }
      #brand { opacity: .48; }
      #bottom-controls {
        position: fixed;
        z-index: 32;
        left: max(10px, env(safe-area-inset-left));
        right: max(10px, env(safe-area-inset-right));
        bottom: max(10px, env(safe-area-inset-bottom));
        display: grid;
        grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
        gap: 7px;
        padding: 9px;
        border: 1px solid rgba(255,255,255,.12);
        border-radius: 20px;
        background: rgba(5,12,16,.84);
        box-shadow: 0 12px 42px rgba(0,0,0,.34);
        backdrop-filter: blur(18px);
        -webkit-backdrop-filter: blur(18px);
      }
      #bottom-controls > #care-actions,
      #bottom-controls > #character-switch,
      #bottom-controls > #photo-button,
      #bottom-controls > #cg-button,
      #bottom-controls > #recalibrate {
        position: static;
        transform: none;
        min-width: 0;
        margin: 0;
      }
      #bottom-controls > #care-actions {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 6px;
      }
      #bottom-controls > #character-switch {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
      #bottom-controls > #photo-button,
      #bottom-controls > #cg-button,
      #bottom-controls > #recalibrate {
        white-space: nowrap;
      }
      #bottom-controls button {
        width: 100%;
        min-height: 40px;
        padding: 8px 7px;
        border-color: rgba(255,255,255,.16);
        background: rgba(10,18,23,.88);
        font-size: 10px;
        letter-spacing: .02em;
      }
      #cg-grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 9px; }
      .cg-shell { padding: 14px; border-radius: 18px; }
      #care-panel {
        top: max(42px, calc(env(safe-area-inset-top) + 38px));
        left: 10px;
        width: 164px;
        padding: 8px 9px;
      }
      .care-stat { grid-template-columns: 28px 1fr 20px; gap: 5px; margin: 4px 0; }
      #care-actions button { min-height: 40px; padding: 8px 6px; font-size: 10px; }
    }
    @media (orientation: landscape), (pointer: fine) {
      #rotate-overlay { display: none !important; }
    }
    @media (prefers-reduced-motion: reduce) {
      * { animation: none !important; transition: none !important; }
    }
    #tuner-toggle, #tuner {
      display: none;
    }
    @media (pointer: fine) {
      body.debug-ui #tuner-toggle {
        display: block;
        position: fixed;
        z-index: 31;
        right: 18px;
        bottom: 18px;
        padding: 9px 13px;
        border-color: rgba(255,255,255,.25);
        background: rgba(8,8,8,.82);
      }
      #tuner {
        position: fixed;
        z-index: 30;
        right: 18px;
        bottom: 62px;
        width: min(330px, calc(100vw - 36px));
        max-height: calc(100vh - 92px);
        overflow: auto;
        padding: 16px;
        border: 1px solid var(--line);
        background: rgba(5,5,5,.9);
        backdrop-filter: blur(16px);
        box-shadow: 0 20px 70px rgba(0,0,0,.5);
        color: var(--ink);
      }
      #tuner.open { display: block; }
      #tuner h2 { margin: 0 0 5px; font: 500 14px ui-monospace, monospace; letter-spacing: .1em; }
      #tuner p { margin: 0 0 12px; color: var(--dim); font-size: 10px; line-height: 1.55; }
      .tuner-row { display: grid; grid-template-columns: 105px 1fr 45px; gap: 8px; align-items: center; margin: 8px 0; }
      .tuner-row label { color: rgba(255,255,255,.76); font-size: 10px; }
      .tuner-row output { text-align: right; color: var(--hot); font: 10px ui-monospace, monospace; }
      .tuner-row input { width: 100%; accent-color: var(--hot); }
      .tuner-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; }
      .tuner-actions button { padding: 9px 6px; font-size: 10px; letter-spacing: .06em; }
      #share-note { min-height: 1.4em; margin-top: 8px; color: #ff9b73; font-size: 10px; }
    }
