/* Moon Within: one type scale and one responsive reading column. */
:root{color-scheme:dark;--bg:#101c28;--panel:#192733;--ink:#f5f0e7;--muted:#c1cdd3;--gold:#efd09a;--line:#33424b;--serif:"Noto Serif TC","Songti TC",serif;--body:1.125rem;--meta:.875rem;--field:#111e2a;--field-border:#71818b;--soft:#26343d;--space-group:16px;--space-section:32px;--reading-width:36em;--content-width:900px}
*{box-sizing:border-box}
html{scroll-behavior:smooth;line-break:strict;word-break:normal;overflow-wrap:break-word;scrollbar-color:var(--line) var(--bg)}
body{margin:0;background:radial-gradient(ellipse at 75% 0,#243444 0,transparent 44%),var(--bg);color:var(--ink);font:var(--body)/1.85 system-ui,-apple-system,sans-serif}
::selection{background:var(--gold);color:var(--bg)}
a{color:inherit;text-decoration:none;text-underline-offset:.25em}
button,input,textarea{font:inherit}button{cursor:pointer}input,textarea{caret-color:var(--gold)}
:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
[hidden]{display:none!important}
header,main{max-width:996px;margin:auto;padding-inline:48px}
header{padding-block:20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--space-group)}
.brand{display:flex;align-items:center;gap:12px;font-size:1.25rem;letter-spacing:.12em;min-height:44px}.brand small{font-size:.625rem;letter-spacing:.15em;color:var(--muted);margin-left:12px}.brandmark{font-size:1.875rem;color:var(--gold)}
.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:48px 0 24px}.intro>div:first-child{max-width:640px}
h1,h2,h3{overflow-wrap:normal;text-wrap:balance}h1{font:400 2.25rem/1.55 var(--serif);letter-spacing:.025em;margin:0 0 20px}h1 span{display:block}h2{font:400 1.5rem/1.6 var(--serif);margin:0 0 24px}h3{font-size:1.125rem;line-height:1.65}
p{margin:0 0 16px;text-align:start;text-wrap:pretty}.lede{color:var(--muted);max-width:28em;margin:0}
.moon-art{width:220px;height:220px;position:relative;flex-shrink:0}.orbit{position:absolute;inset:0;border:1px solid #69707955;border-radius:50%;transform:rotate(-28deg) scaleY(.8)}.orbit:after{content:"";position:absolute;inset:24px;border:1px solid #69707944;border-radius:50%}.moon{width:100px;height:100px;position:absolute;top:40px;left:64px;border-radius:50%;background:radial-gradient(circle at 27% 30%,#eed7ac,#bd9b6b)}.moon:after{content:"";position:absolute;background:#233343;inset:-8px -24px 17px 29px;border-radius:50%}.star{position:absolute;color:var(--gold)}.s1{top:17px;right:25px;font-size:30px}.s2{bottom:48px;left:24px;font-size:19px}
.trust{font-size:1rem;margin:12px 0 4px}.disclosure{color:var(--muted);font-size:var(--meta);max-width:42em;margin-bottom:24px}
#app-content,.about{max-width:var(--content-width);margin:var(--space-section) auto}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:var(--space-section)}.view-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px;border-bottom:1px solid var(--line)}.view-nav a{padding:12px 16px;min-height:48px;color:var(--muted);border-bottom:3px solid transparent}.view-nav a[aria-current]{color:var(--gold);border-color:var(--gold)}[aria-disabled=true]{cursor:wait}
label,legend{font-size:1rem;color:var(--ink)}textarea,input{color:var(--ink);background:var(--field);border:1px solid var(--field-border);border-radius:6px}textarea{width:100%;min-height:136px;resize:vertical;display:block;margin-top:8px;padding:14px;line-height:1.8;font-size:1.125rem}::placeholder{color:var(--muted)}
.input-meta{display:flex;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;font-size:var(--meta);color:var(--muted);margin:8px 0 24px}#counter{white-space:nowrap;font-variant-numeric:tabular-nums}fieldset{min-width:0;border:0;padding:0;margin:0 0 16px}.choices{display:flex;gap:12px;margin-top:12px}.choice{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--line);border-radius:6px;flex:1;cursor:pointer}.choice:has(input:checked){border-color:var(--gold);background:#c5ad7910}.choice input{accent-color:var(--gold);width:18px;height:18px;flex-shrink:0}.choice strong{font-size:1rem;font-weight:600;display:block}.choice small{color:var(--muted);font-size:var(--meta);display:block;margin-top:4px}
.orientation-choice{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}.orientation-choice input{width:20px;height:20px;accent-color:var(--gold);flex-shrink:0}.deck-note{font-size:1rem;margin:4px 0 24px;max-width:32em}.muted{color:var(--muted)}
.cta{border:0;border-radius:6px;padding:12px 20px;background:var(--gold);color:#202a31;font-size:1rem;font-weight:600;min-height:48px}#draw{width:100%}.cta:hover{background:#edd1a1}button:disabled{opacity:.55;cursor:wait}.text-button{background:none;color:var(--gold);border:0;min-height:44px;min-width:44px;padding:8px;font-size:1rem}.text-button:hover{color:var(--ink);text-decoration:underline}.micro{font-size:var(--meta);color:var(--muted);margin:8px 0 0}
.login-panel{max-width:480px;margin:32px auto}.login-panel input{display:block;width:100%;min-width:0;margin:8px 0 24px;padding:10px 12px;min-height:48px}.login-panel label{display:block}.login-panel .cta{width:100%}
.result{scroll-margin-top:24px;background:transparent;border:0;padding-inline:0}.quote{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);border-left:1px solid var(--gold);padding-left:16px}.mini-mode{font-size:var(--meta);color:var(--gold)}.cards{display:flex;align-items:start;gap:18px;margin:32px 0 40px}.tarot-card{flex:1;min-width:0;border:1px solid #877856;border-radius:9px;padding:20px 14px;text-align:center}.tarot-card:only-child{max-width:340px;width:100%;margin-inline:auto}.tarot-card h3{font:500 1.375rem/1.6 var(--serif);margin:8px 0}.tarot-card p{font-size:1.125rem;line-height:1.75;color:var(--gold);margin:8px 0;text-align:center}.position{font-size:1.125rem;font-weight:500;color:var(--ink)}.card-frame{width:100%;max-width:280px;aspect-ratio:210 / 360;margin:12px auto 16px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:4px}.card-art{display:block;width:100%;height:100%;object-fit:contain}.card-art.reversed{transform:rotate(180deg)}
.insight-block{max-width:var(--reading-width);margin:40px auto}.insight-block>h3{margin:0 0 24px;color:var(--gold)}.insight-copy{white-space:pre-line;font-size:1.125rem;line-height:1.95;color:var(--ink);margin:0}.insight-copy+.insight-copy{margin-top:1.65em}.reflection-section{padding-bottom:24px;margin-bottom:32px;border-bottom:1px solid var(--line)}.reflection-card-name{font:400 1.375rem/1.7 var(--serif);color:var(--gold);margin:0 0 12px}.action-box{margin-top:24px;padding:24px;background:var(--soft);border-radius:8px}.action-box h3{color:var(--gold);margin:0 0 12px}.turn{border-top:1px solid var(--line);padding-top:24px;margin-top:40px}.turn .quote{font-size:1.125rem;font-weight:500;margin-bottom:28px}.turn{max-width:var(--reading-width);margin-inline:auto}.turn>.action-box{margin-top:32px}
#followup-form{border-top:1px solid var(--line);padding-top:24px;margin-top:32px}.followup-row{display:flex;gap:12px;margin-top:12px}.followup-row textarea{width:0;min-width:0;flex:1;margin:0;min-height:112px;max-height:280px;padding:12px 14px;font-size:1.125rem;line-height:1.8;overflow-y:auto;resize:vertical}.followup-row{align-items:flex-start}.followup-row button{flex-shrink:0}.result-actions{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid var(--line);margin-top:28px;padding-top:16px}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-heading h2{margin:0}.history .muted{margin:12px 0 16px;font-size:1rem}.history-item{display:block;text-align:left;width:100%;border:0;border-bottom:1px solid var(--line);padding:24px 12px;color:var(--ink);background:transparent;font-size:1.125rem;line-height:1.8}.history-item:hover{color:var(--gold);background:var(--field)}.history-item small{display:block;color:var(--muted);font-size:var(--meta);margin-top:8px}.empty{padding:24px 0;color:var(--muted)}.error{background:#482c2b;border:1px solid #a96f61;padding:16px;border-radius:8px;color:#ffd8cf;font-size:1rem}
/* Single pending surface, no duplicate submit status or imagined progress. */
.waiting-panel{margin-top:24px;padding:28px 12px 12px;border-top:1px solid var(--line);text-align:center}
.waiting-heading{display:flex;flex-direction:column;align-items:center;gap:var(--space-group)}
.waiting-panel h3{font:400 1.375rem/1.7 var(--serif);color:var(--gold);margin:0;text-wrap:balance}
.waiting-orb{width:132px;height:132px;flex-shrink:0;color:var(--gold)}
.waiting-orb svg{display:block;width:100%;height:100%;overflow:visible}
.lunar-ring{fill:none;stroke:currentColor;stroke-width:.7;opacity:.35;transform-origin:72px 72px;animation:lunar-breathe 7s ease-in-out infinite}
.lunar-ring.inner{opacity:.16;animation-delay:-3.5s}
.lunar-crescent{fill:currentColor;opacity:.95}
.lunar-star{fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;opacity:.65}
.waiting-status{font-size:1rem;max-width:22em;margin:12px auto 20px;line-height:1.85;text-align:center;text-wrap:pretty}
.waiting-controls{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 24px}
.waiting-clock{font-size:var(--meta);font-variant-numeric:tabular-nums;color:var(--muted);margin:0}
.waiting-controls .text-button{font-size:var(--meta);padding:8px;min-height:44px}
.motion-paused .lunar-ring,.motion-hidden .lunar-ring,.motion-offscreen .lunar-ring{animation-play-state:paused}
@keyframes lunar-breathe{0%,100%{transform:scale(.92);opacity:.18}50%{transform:scale(1);opacity:.48}}

.about{color:var(--muted);font-size:1rem;border-top:1px solid var(--line);padding-top:16px}.about summary{cursor:pointer;min-height:44px;color:var(--gold)}.about p{max-width:40em;margin-top:16px}footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid var(--line);color:var(--muted);margin-top:40px;padding:24px 0 32px;font-size:var(--meta)}
/* Task / reading hierarchy: align every surface to the same content axis. */
.skip-link{position:fixed;inset:8px auto auto 16px;z-index:10;padding:12px 20px;background:var(--gold);color:var(--bg);transform:translateY(-160%);clip-path:inset(50%);border-radius:6px}
.skip-link:focus{transform:translateY(0);clip-path:none}
#main-content:focus{outline:none}
body[data-auth="signed-in"] .intro{padding-block:32px 16px}
body[data-auth="signed-in"] .intro h1{font-size:1.75rem;line-height:1.5;margin-bottom:12px}
body[data-auth="signed-in"] .intro h1 span{display:inline}
body[data-auth="signed-in"] .moon-art{width:160px;height:148px;transform:scale(.8);transform-origin:right center}
body[data-auth="signed-in"] .trust{margin-top:16px}
body[data-view="result"] .trust,body[data-view="history"] .trust{margin-top:24px}
.login-panel h2{margin-bottom:8px}.login-panel>.muted{font-size:1rem;margin-bottom:24px}
.view-nav a:hover{color:var(--ink);background:var(--field)}
.view-nav a[aria-current]{font-weight:600}
label,legend{font-weight:500}
.choice{border-color:var(--field-border)}
.choice:hover{background:var(--field)}
.choice:has(input:focus-visible){outline:2px solid var(--gold);outline-offset:4px}
#ask-title{margin-bottom:var(--space-section)}
#reading-form fieldset{padding-top:24px;border-top:1px solid var(--line)}
.input-meta{margin-bottom:24px}
#result-back,#history-back{margin:0 0 16px -8px}
#result-title{font-size:1.75rem;margin-bottom:16px}
#result-question{max-width:var(--reading-width);margin-bottom:12px}
#summary{max-width:var(--reading-width);margin:32px auto}
#summary .action-box{padding:0;background:none;border-radius:0}
#summary h3{font-size:1rem;margin-bottom:12px}
#insight .action-box{border-radius:0;background:none;padding:0;margin-top:32px}
#insight .action-box+.action-box{border-top:1px solid var(--line);padding-top:32px}
#followup-form,#followup-limit,.result-actions{max-width:var(--reading-width);margin-inline:auto}
#followup-form{padding-top:32px;margin-top:48px}
.result-actions{align-items:center}
.secondary-button{min-height:48px;padding:10px 20px;border:1px solid var(--gold);border-radius:6px;background:none;color:var(--gold);font-size:1rem;font-weight:600}
.secondary-button:hover{background:var(--field);color:var(--ink)}
.history-date{display:block;font-size:var(--meta);font-variant-numeric:tabular-nums;color:var(--muted);margin-bottom:8px}
.history-question{display:block;font-weight:500}
.history-item:focus-visible{outline-offset:-2px}
.history-item:last-child{border-bottom:0}
#history-list{margin-top:24px}
.about summary{display:list-item;padding-block:8px}
@media(max-width:800px){header,main{padding-inline:24px}.intro{padding-top:32px}.moon-art{width:180px;height:200px}.moon{left:40px}}
@media(max-width:540px){body[data-auth="signed-in"] .intro h1 span{display:block}header,main{padding-inline:16px}.brand small{display:none}.intro{position:relative;overflow:hidden;padding:28px 0 20px}.intro>div:first-child{position:relative;z-index:1}.intro h1{font-size:1.875rem}.moon-art{position:absolute;right:-24px;top:8px;opacity:.18;transform:scale(.7);pointer-events:none}.panel{padding:24px 18px}.view-nav{gap:0}.view-nav a{padding:12px 8px;font-size:1rem}.choices{flex-direction:column}.choice{padding:14px}.cards{flex-direction:column;gap:24px}.tarot-card{width:100%;padding:16px 12px}.tarot-card:only-child{max-width:none}.card-frame{max-width:300px}.result.panel{padding-inline:0}.insight-block{margin:32px 0}.action-box{padding:20px 16px}.followup-row{flex-direction:column}.followup-row textarea{width:100%;min-height:112px;flex:none}.followup-row button{width:100%}.result-actions{flex-direction:column;align-items:stretch}.result-actions .text-button{text-align:left;padding-inline:0}.result-actions .secondary-button{align-self:flex-start}.waiting-panel{margin-top:20px}.waiting-controls{gap:0 8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.waiting-orb,.lunar-ring{animation:none}}

/* Account actions remain secondary to reflection. */
#line-login{width:100%;margin-top:20px} .line-account{display:flex;justify-content:flex-end;margin:0 0 12px;font-size:18px} #line-notice{font-size:18px;line-height:1.7;margin-block:20px}

/* Waiting feedback: real operation first, lunar breath second. */
.job-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid var(--line);font-size:1.125rem;line-height:1.7}
.job-banner span{min-width:0;overflow-wrap:anywhere}
.job-banner button{flex-shrink:0}
.waiting-panel{margin:24px 0;padding:24px 16px;scroll-margin-top:16px;border:1px solid var(--line);background:var(--panel)}
.waiting-panel h3.waiting-status{font-size:1.5rem;line-height:1.6;margin:0;max-width:26em}
.waiting-help{font-size:1.125rem;line-height:1.85;max-width:32em;margin:16px auto 24px;text-wrap:pretty}
.waiting-orb{width:88px;height:88px;margin:0 auto}
.waiting-ritual{text-align:center;color:var(--muted);font-size:1.125rem;margin:12px 0}
@media(max-width:540px){.job-banner{align-items:flex-start;flex-direction:column;gap:4px}.waiting-panel{padding:24px 16px}.waiting-panel h3.waiting-status{font-size:1.25rem}}

/* Followup work belongs to its question; the notice never changes document height. */
.turn-count{font-size:1.125rem;color:var(--gold);font-variant-numeric:tabular-nums;margin:0 0 12px}
.turn{scroll-margin-top:24px;overflow-anchor:none}
.turn .waiting-panel{border:0;border-top:1px solid var(--line);padding-inline:0;background:transparent}
.followup-error{color:#ffd8cf;font-size:1.125rem}
#followup-help{font-size:1.125rem}
.job-banner.followup-notice{position:fixed;z-index:5;inset:auto 16px 16px;max-width:600px;margin-inline:auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 16px;box-shadow:0 8px 24px #0005;font-size:1rem}
body:has(.followup-notice) main{padding-bottom:160px}
#result{overflow-anchor:none}
/* A footer anchor must not drag the viewport when an inline turn grows above it. */
body:has(.followup-notice){overflow-anchor:none}

/* A submitted question is locked, not an editable draft. Keep text legible on iOS. */
#question:disabled,#followup:disabled{background:var(--soft);border-color:var(--line);color:var(--muted);-webkit-text-fill-color:var(--muted);opacity:1;cursor:not-allowed;resize:none;box-shadow:none}
#followup-form[aria-busy="true"] #followup-input-help{color:var(--gold)}

/* Optional reflection and a quiet, reversible end to this conversation. */
.autonomy-note,#conversation-controls,.reading-closure{max-width:var(--reading-width);margin:32px auto;font-size:1.125rem;line-height:1.85}
.autonomy-note{border-left:2px solid var(--gold);padding:0 20px}.autonomy-note p{margin:0 0 8px}.autonomy-note small{color:var(--muted);font-size:1rem}
#conversation-controls,.closure-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px}
.reading-closure{padding:24px 20px;border:1px solid var(--line);background:var(--soft);border-radius:8px}.reading-closure h3{color:var(--gold);margin-top:0;font-size:1.375rem}
#conversation-controls+.reading-closure+#followup-form{margin-top:24px}

.wallet{color:var(--muted);font-size:.9rem;min-height:3em;margin:0 0 1rem}#reading-cost,#followup-cost{line-height:1.7;min-height:1.7em}

.point-price{display:block}.point-hint{display:grid}.point-hint>span{grid-area:1/1}.point-hidden{visibility:hidden}

.cta[aria-disabled="true"]{opacity:.55;cursor:default}#followup-cost{margin-bottom:12px}

#reading-form[aria-busy="true"] #question-help{color:var(--gold)}
.choice:has(input:disabled),.orientation-choice:has(input:disabled){cursor:not-allowed;color:var(--muted)}
