/* /symbol/ (set up your symbol), its demo and fake pages, and /v/<token> (the click, verified on PageID). */
.sym-main, .v-main { padding-top: 28px; padding-bottom: 64px; display: grid; gap: 16px; }
.sym-card, .v-card, .v-yours, .v-nocookie { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 22px; box-shadow: var(--shadow); }
.sym-card h1, .v-card h1 { margin: 4px 0 8px; font-family: var(--display); letter-spacing: -.02em; }
.sym-card h2 { font-size: 18px; margin: 18px 0 8px; }
.sym-card h2:first-child { margin-top: 0; }
.sym-card .lead { color: var(--text-2); }
.sym-form { display: grid; gap: 10px; margin-top: 14px; }
.sym-form label { font-weight: 600; }
.sym-form input { font: inherit; font-size: 17px; padding: 12px 14px; border: 1.5px solid var(--border-strong); border-radius: var(--radius); background: #fff; color: var(--text); }
.sym-form input:focus { outline: 3px solid var(--ring); border-color: var(--accent); }
.sym-form.inline { grid-template-columns: 1fr auto; align-items: end; }
.sym-form.inline label { grid-column: 1 / -1; }
.sym-warn { margin: 0; padding: 10px 12px; border-radius: var(--radius-sm); background: var(--warn-soft); border: 1px solid var(--warn-border); color: #5c3605; font-size: 14px; }
.sym-note.warn { padding: 10px 12px; border-radius: var(--radius-sm); background: var(--warn-soft); border: 1px solid var(--warn-border); }
.sym-privacy { font-size: 14px; color: var(--text-2); padding: 12px 14px; border-radius: var(--radius); background: var(--accent-soft); margin: 4px 0 0; }
.sym-big { flex: none; display: grid; place-items: center; width: 148px; height: 148px; border-radius: 28px; background: #fff; border: 2px solid var(--ok-border); box-shadow: inset 0 0 0 6px #f1faf5, var(--shadow); }
.sym-big svg { width: 112px; height: 112px; }
.sym-phrase-line { margin: 0; font-size: 17px; color: var(--text-2); word-break: break-word; }
.sym-phrase-line b { color: var(--text); }
.sym-rule { font-size: 16px; line-height: 1.5; margin: 0; }
.sym-tests { margin: 0; padding-left: 20px; display: grid; gap: 8px; }
.sym-tests a { font-weight: 600; color: var(--accent-text); }
.sym-reset summary { list-style: none; display: inline-flex; cursor: pointer; }
.sym-reset summary::-webkit-details-marker { display: none; }
.btn.danger { background: var(--bad); color: #fff; border-color: var(--bad); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.mono { font-family: var(--mono); }
/* the fake page's imitations (drawn by the page, not by PageID) */
.fake-pill { display: flex; align-items: center; gap: 10px; max-width: 400px; margin-top: 16px; padding: 8px 14px 8px 10px; min-height: 64px; border-radius: 32px; background: linear-gradient(180deg, #fff 0%, #f4fbf7 100%); box-shadow: 0 0 0 .6px rgba(4, 120, 87, .55), 0 8px 18px rgba(11, 31, 23, .14); }
.fake-face { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1.5px var(--ok-border); }
.fake-face svg { width: 30px; height: 30px; }
.fake-body { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: 12.5px; color: var(--text-2); }
.fake-body b { font-size: 16px; color: var(--text); }
.fake-body i { font-style: normal; color: var(--accent); }
.fake-side { font-weight: 700; font-size: 13px; } .fake-side b { color: var(--accent); }
.fake-why { margin: 6px 0 0; padding: 8px 12px; border-left: 4px solid var(--bad); background: var(--bad-soft); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
/* /v/<token> */
.v-card { position: relative; }
.v-card .v-lead { font-size: 18px; margin: 4px 0; }
.v-ok { border-color: var(--ok-border); background: linear-gradient(180deg, #fff 0%, var(--ok-soft) 100%); }
.v-bad { border-color: var(--bad-border); background: var(--bad-soft); }
.v-bad h1 { color: var(--bad); }
.v-warn { border-color: var(--warn-border); background: var(--warn-soft); }
.v-tick, .v-x { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; font: 700 34px/1 var(--sans); color: #fff; background: var(--grad-ok); margin-bottom: 6px; }
.v-x { background: var(--bad); }
.v-yours { display: flex; gap: 22px; align-items: center; border: 2px solid var(--ok-border); }
.v-sym { flex: none; display: grid; place-items: center; width: 148px; height: 148px; border-radius: 28px; background: #fff; border: 2px solid var(--ok-border); box-shadow: inset 0 0 0 6px #f1faf5; }
.v-sym svg { width: 112px; height: 112px; }
.v-symname { margin: 2px 0; font-size: 15px; color: var(--text-3); text-transform: capitalize; }
.v-phrase { margin: 4px 0 0; font: 700 clamp(22px, 5vw, 32px)/1.2 var(--display); letter-spacing: -.01em; word-break: break-word; }
.v-check { margin: 0; padding: 12px 14px; border-radius: var(--radius); background: var(--accent-soft); font-size: 16px; }
.v-nocookie h2 { margin-top: 0; }
@media (max-width: 520px) {
  .v-yours { flex-direction: column; align-items: flex-start; }
  .sym-form.inline { grid-template-columns: 1fr; }
}

/* ---- /symbol/: the step form (draw → words → done), the tutorial and the returning view ---------------------- */
.wiz, .tour { background: var(--surface); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow-lg); padding: 14px 22px 26px; max-width: 480px; width: 100%; margin: 0 auto; overflow: hidden; }
.wiz-top { display: flex; align-items: center; gap: 10px; min-height: 44px; margin-bottom: 6px; }
.wiz-back { display: grid; place-items: center; width: 44px; height: 44px; margin-left: -10px; border: 0; border-radius: 50%; background: transparent; color: var(--text-2); cursor: pointer; }
.wiz-back:hover { background: var(--surface-2); color: var(--text); }
.wiz-back svg { width: 22px; height: 22px; }
.wiz-progress { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.wiz-top .wiz-back[hidden] + .wiz-progress { margin-left: 0; }
.tour .wiz-progress { margin-left: 0; }
.dots { display: inline-flex; gap: 6px; }
.dots i { display: block; width: 22px; height: 6px; border-radius: 3px; background: var(--border); transition: background-color 240ms ease-out, width 240ms ease-out; }
.dots i.on { background: var(--accent); }
.wiz-count { font: 600 13px/1 var(--sans); color: var(--text-2); font-variant-numeric: tabular-nums; }
.wiz-step, .tour-card { will-change: transform, opacity; }
.wiz-step > .eyebrow { margin: 10px 0 6px; }
.wiz h1, .tour h2 { margin: 0 0 10px; font: 650 clamp(28px, 7.4vw, 34px)/1.12 var(--display); letter-spacing: -.025em; outline: none; }
.tour h2 { font-size: clamp(24px, 6.4vw, 28px); margin-top: 8px; }
/* headings take focus programmatically (each step moves focus there for screen readers): no ring, they aren't controls */
.wiz h1:focus, .tour h2:focus, .mine-hero h1:focus { outline: none; }
.wiz-lead { margin: 0 0 18px; font-size: 17px; line-height: 1.5; color: var(--text-2); }
.wiz-lead b { color: var(--text); }
.wiz-actions { display: grid; gap: 10px; justify-items: center; margin-top: 8px; }
.wiz-actions .btn.lg { min-height: 56px; font-size: 1.06rem; border-radius: 14px; }
.wiz-actions .error { justify-self: stretch; text-align: center; }
.muted-on { opacity: .92; font-weight: 500; }
.linkish { min-height: 44px; padding: 8px 14px; border: 0; border-radius: 10px; background: transparent; color: var(--accent-text); font: 600 15px/1.2 var(--sans); cursor: pointer; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.linkish:hover { background: var(--accent-soft); color: var(--accent-strong); }
.linkish[disabled] { opacity: .5; cursor: default; }
/* step 1: the draw */
.draw-stage { display: grid; justify-items: center; gap: 12px; margin: 26px 0 20px; }
.draw-box { position: relative; display: grid; place-items: center; width: 168px; height: 168px; border-radius: 36px; background: linear-gradient(180deg, #fff 0%, var(--ok-soft) 100%); border: 2px dashed var(--ok-border); box-shadow: inset 0 0 0 6px #f6fcf9; }
.draw-box svg { width: 112px; height: 112px; }
.draw-q { font: 700 64px/1 var(--display); color: var(--ok-border); }
.draw-box.rolling { border-style: solid; }
.draw-box.rolling svg { opacity: .55; transform: scale(.82); filter: saturate(.6); }
.draw-box.landed { border: 2px solid var(--ok-border); background: #fff; box-shadow: inset 0 0 0 6px #f1faf5, 0 14px 32px -16px rgba(4, 120, 87, .45); animation: sym-land 620ms cubic-bezier(.2, 1.3, .35, 1) both; }
.draw-box.landed::after { content: ''; position: absolute; inset: -2px; border-radius: 36px; box-shadow: 0 0 0 0 rgba(16, 185, 129, .45); animation: sym-ring 900ms ease-out 120ms both; pointer-events: none; }
.draw-box.landed svg { animation: sym-pop 620ms cubic-bezier(.2, 1.4, .35, 1) both; }
.draw-box.still, .draw-box.still svg, .draw-box.still::after { animation: none; }
@keyframes sym-land { 0% { transform: scale(.94); } 55% { transform: scale(1.04); } 100% { transform: none; } }
@keyframes sym-pop { 0% { transform: scale(.6) rotate(-8deg); opacity: .4; } 60% { transform: scale(1.08) rotate(2deg); opacity: 1; } 100% { transform: none; } }
@keyframes sym-ring { 0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, .5); } 100% { box-shadow: 0 0 0 18px rgba(16, 185, 129, 0); } }
.draw-name { margin: 0; min-height: 1.4em; font: 600 18px/1.3 var(--display); color: var(--text); }
/* step 2: the words */
.words { display: grid; gap: 10px; }
.words-field { position: relative; display: flex; align-items: center; }
.words-sym { position: absolute; left: 12px; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1.5px var(--ok-border); pointer-events: none; }
.words-sym svg { width: 24px; height: 24px; }
.words input { width: 100%; min-height: 60px; padding: 14px 16px 14px 58px; font: 600 20px/1.2 var(--sans); color: var(--text); background: #fff; border: 2px solid var(--border-strong); border-radius: 14px; }
.words input::placeholder { color: var(--text-3); font-weight: 500; }
.words input:focus { outline: 3px solid var(--ring); outline-offset: 0; border-color: var(--accent); }
.words-meta { display: flex; justify-content: space-between; gap: 12px; margin: 0 0 6px; font-size: 14px; line-height: 1.45; color: var(--text-2); }
.words-warn b { color: var(--text); }
.words-count { flex: none; font-variant-numeric: tabular-nums; color: var(--text-2); }
/* step 3 and the tutorial: the pill as it looks on a real site (drawn by this page) */
.pv-stage { position: relative; display: grid; justify-items: center; padding: 22px 12px 26px; margin: 4px 0 14px; border-radius: 16px; background: linear-gradient(180deg, var(--bg-tint) 0%, var(--bg) 100%); border: 1px solid var(--border); overflow: hidden; }
.pv-stage::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 10px; background: var(--surface-2); border-bottom: 1px solid var(--border); }
.pv-pill { position: relative; display: flex; align-items: center; gap: 8px; width: min(400px, 100%); min-height: 64px; padding: 8px 6px 8px 10px; border-radius: 32px; background: linear-gradient(180deg, #fff 0%, #f4fbf7 100%); box-shadow: 0 0 0 .6px rgba(4, 120, 87, .55), 0 8px 18px rgba(11, 31, 23, .16), 0 1px 2px rgba(11, 31, 23, .1); color: #0b1f17; text-align: left; container-type: inline-size; }
.pv-slot { position: relative; flex: none; width: 46px; height: 46px; }
.pv-face { position: absolute; inset: 1px; display: grid; place-items: center; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1.5px #bfe6d4; }
.pv-face svg { width: 30px; height: 30px; }
.pv-badge { position: absolute; right: -2px; bottom: -2px; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%; background: var(--accent); color: #fff; box-shadow: 0 0 0 2px #fff; }
.pv-badge svg { width: 12px; height: 12px; }
.pv-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pv-l1 { font: 700 16px/1.25 var(--sans); letter-spacing: -.012em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv-l1 .wm b { color: var(--accent); }
.pv-l2 { font-size: 12.5px; line-height: 1.3; color: #33433b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv-btn { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px 0 12px; border-radius: 22px; background: var(--accent); color: #fff; font: 700 14px/1 var(--sans); white-space: nowrap; box-shadow: 0 1px 2px rgba(3, 92, 67, .35), inset 0 1px 0 rgba(255, 255, 255, .14); }
.pv-btn .vb-wm, .vbtn-demo .vb-wm { font-weight: 800; letter-spacing: -.02em; padding-right: 7px; border-right: 1px solid rgba(255, 255, 255, .45); }
.pv-btn .vb-wm b, .vbtn-demo .vb-wm b { color: #fff; }
.pv-btn .vb-mark { display: none; width: 16px; height: 16px; }
.pv-btn .vb-mark svg { display: block; width: 100%; height: 100%; }
@container (max-width: 360px) { .pv-btn .vb-mark { display: block; } .pv-btn .vb-wm { display: none; } .pv-btn { padding: 0 12px 0 10px; gap: 5px; } }
.pv-pill.fake .pv-face { box-shadow: inset 0 0 0 1.5px #bfe6d4; }
.pv-x { position: absolute; top: -12px; right: -8px; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--bad); color: #fff; box-shadow: 0 0 0 3px #fff, 0 6px 14px -4px rgba(180, 35, 24, .5); }
.pv-x svg { width: 18px; height: 18px; }
.pv-stage.fake { background: linear-gradient(180deg, var(--bad-soft) 0%, var(--bg) 100%); border-color: var(--bad-border); }
.pv-stage.play .pv-pill { animation: pv-drop 640ms cubic-bezier(.2, 1.08, .32, 1) both; }
.pv-stage.play.fake .pv-x { animation: pv-x 420ms cubic-bezier(.2, 1.3, .35, 1) 420ms both; }
@keyframes pv-drop { from { transform: translateY(-90px); } to { transform: none; } }
@keyframes pv-x { from { transform: scale(0); } to { transform: none; } }
.saved-note { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0 0 16px; font: 600 15px/1.3 var(--sans); color: var(--accent-text); }
.saved-note svg { width: 18px; height: 18px; }
/* the tutorial */
.tour-skip { margin-left: auto; }
.tour-viewport { touch-action: pan-y; min-height: 340px; }
.tour-card p { margin: 0 0 12px; font-size: 17px; line-height: 1.5; color: var(--text-2); }
.tour-card p b { color: var(--text); }
.tour-verify { display: grid; justify-items: center; gap: 8px; padding: 20px 12px; margin: 4px 0 14px; border-radius: 16px; background: linear-gradient(180deg, var(--bg-tint) 0%, var(--bg) 100%); border: 1px solid var(--border); }
.vbtn-demo { display: inline-flex; align-items: center; gap: 6px; min-height: 52px; padding: 0 20px 0 16px; border-radius: 26px; background: var(--accent); color: #fff; font: 700 17px/1 var(--sans); box-shadow: 0 1px 2px rgba(3, 92, 67, .35), 0 10px 22px -10px rgba(4, 120, 87, .6); }
.tour-arrow { width: 24px; height: 24px; color: var(--text-3); }
.addr { display: inline-flex; align-items: center; gap: 7px; padding: 7px 16px; border-radius: 999px; background: #fff; border: 1.5px solid var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); font: 500 15px/1.2 var(--mono); color: var(--text); }
.addr svg { width: 14px; height: 14px; color: var(--accent); }
.addr-page { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px 8px 8px; border-radius: 14px; background: #fff; border: 1px solid var(--ok-border); font: 700 16px/1.2 var(--display); max-width: 100%; }
.addr-page b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.addr-sym { flex: none; display: grid; place-items: center; width: 34px; height: 34px; }
.addr-sym svg { width: 30px; height: 30px; }
.try { display: grid; gap: 10px; margin: 6px 0 4px; }
.try-btn { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 10px 16px; border-radius: 14px; border: 1.5px solid var(--border-strong); background: #fff; color: var(--text); text-decoration: none; box-shadow: var(--shadow-sm); transition: border-color 150ms, background-color 150ms, transform 100ms; }
.try-btn:hover { color: var(--text); border-color: var(--accent); background: var(--accent-soft); }
.try-btn:active { transform: scale(.985); }
.try-btn > span:nth-child(2) { flex: 1; display: grid; gap: 2px; }
.try-btn b { font: 650 17px/1.2 var(--display); }
.try-btn small { font-size: 13.5px; color: var(--text-2); }
.try-ic { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: #fff; font: 700 17px/1 var(--sans); background: var(--accent); }
.try-btn.fake .try-ic { background: var(--bad); }
.try-btn.fake:hover { border-color: var(--bad-border); background: var(--bad-soft); }
.tour-nav { display: grid; grid-template-columns: 1fr 1.6fr; gap: 10px; margin-top: 8px; }
.tour-nav .btn.lg { min-height: 56px; border-radius: 14px; font-size: 1.04rem; }
/* the returning view */
.mine-hero { display: grid; justify-items: center; text-align: center; gap: 6px; }
.mine-hero .sym-big { margin: 4px 0 10px; }
.mine-hero h1 { margin: 0; outline: none; }
.mine-hero .pv-stage { width: 100%; margin: 12px 0 6px; }
.mine-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 12px; }
.mine-box { width: 100%; margin-top: 12px; padding: 14px; border-radius: var(--radius); background: var(--surface-2); text-align: left; }
.mine-box p { margin: 0 0 4px; }
.mine-box.warnbox { background: var(--warn-soft); border: 1px solid var(--warn-border); }
.mine-box .mine-actions { justify-content: flex-start; }
.mine-box .sym-form { margin-top: 0; }
.mine-box .sym-form label { display: flex; justify-content: space-between; }
.host-line { margin: 12px 0 0; font-size: 14.5px; }
/* moving between steps and cards: transform/opacity only */
.in-fwd { animation: step-in-fwd 340ms cubic-bezier(.22, .8, .3, 1) both; }
.in-back { animation: step-in-back 340ms cubic-bezier(.22, .8, .3, 1) both; }
@keyframes step-in-fwd { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: none; } }
@keyframes step-in-back { from { opacity: 0; transform: translateX(-28px); } to { opacity: 1; transform: none; } }
@media (max-width: 520px) {
  .sym-main:has(.wiz:not([hidden]), .tour:not([hidden])) { padding-top: 12px; }
  .wiz, .tour { padding: 10px 16px 20px; border-radius: 18px; }
  .pv-stage { padding: 20px 6px 22px; }
  .mine-actions .btn { flex: 1 1 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .in-fwd, .in-back, .draw-box.landed, .draw-box.landed svg, .draw-box.landed::after, .pv-stage.play .pv-pill, .pv-stage.play.fake .pv-x { animation: none !important; }
  .dots i, .try-btn { transition: none; }
}
