/* Motion stays on the portrait; type follows app components (paper/plum/muted, Noto/Georgia). */
#app .analysis-stage{--as-accent:var(--plum);--as-muted:var(--muted);border-color:#e0dbe6;box-shadow:0 18px 60px #33253e08}
.as-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center}
.as-visual{min-width:0;min-height:550px;overflow:visible;background:radial-gradient(ellipse at 50% 48%,#e9e4ee80,transparent 68%)}
.as-grid{background-image:linear-gradient(#33253e05 1px,transparent 1px),linear-gradient(90deg,#33253e05 1px,transparent 1px)}
.as-photo-frame{position:relative;isolation:isolate;flex-shrink:0;width:clamp(210px,24vw,306px);height:auto;aspect-ratio:1;transform:none;margin:48px 30px 80px}
.as-photo{border-radius:50%;background:#e5e0e9;box-shadow:0 12px 35px #33253e1c;z-index:1}.as-photo img{display:block;object-fit:cover;object-position:center 38%}.as-sample{background-position:0 26%;background-size:300% auto}
.as-photo-shade{background:linear-gradient(180deg,transparent 65%,#33253e55)}.as-photo-tag{bottom:22px;font-size:9px;letter-spacing:1.3px;z-index:2;pointer-events:none}
/* Ring dimensions derive entirely from the circular photo frame. */
.as-orbit{width:auto;height:auto;animation:none;pointer-events:none}
.as-orbit-outer{inset:-14px;border:2px solid #ddd4e5}
.as-orbit-outer:before{inset:-2px;border:3px solid transparent;border-top-color:#9b728e;border-right-color:#9b728e;animation:as-orbit 3.4s linear infinite;transform:none}
.as-orbit-outer:after{inset:5px;border:1px dashed #bca9c54d;transform:none}
.as-orbit-inner{inset:-24px;border:1px solid #33253e0d}
.as-orbit-inner:before{display:none}.as-orbit-inner:after{inset:-1px;border:2px solid transparent;border-bottom-color:#9eb56a;animation:as-orbit 7s linear infinite reverse;transform:none}
/* Line and trail clip to the circle and travel in both directions. */
.as-sweep{border-radius:inherit;pointer-events:none}
.as-sweep:after{top:-25%;bottom:auto;height:27%;background:linear-gradient(0deg,#edf5b93d,transparent);border-bottom:2px solid #e9f8ba;box-shadow:0 3px 12px #d1e96088;animation:portrait-sweep 3.8s ease-in-out infinite alternate}
.as-cross{color:#ab9eb5}.as-coordinate{color:#766b80;font-size:9px}.as-signal{opacity:.55}.as-signal i{background:#867291;animation:none}
.as-visual-caption{font-size:10px;color:var(--muted)}.as-elapsed{font:11px ui-monospace,monospace}.as-live i,.as-dot{background:var(--plum);box-shadow:none;animation:none}
.as-wordmark small{font-size:9px;color:var(--muted)}.as-wordmark>span{color:var(--plum)}
.as-info{padding:35px 38px 32px 18px}
#app .as-kicker{font-size:9px;color:var(--muted)}#app .as-intro{font-size:11px;line-height:2;color:var(--muted)}.as-info h1>span{color:var(--plum)}
.as-current{gap:15px;margin-top:29px;padding-bottom:21px;background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;min-height:0}
#app .as-phase-number{display:block;flex-shrink:0;width:auto;height:auto;border-radius:0;background:none;padding:0;font:38px Georgia,serif;color:var(--plum);font-variant-numeric:tabular-nums}
.as-current>div{min-width:0}
#app .as-info [data-as="mode"]{display:block;font-size:9px;line-height:1.6;color:var(--muted);letter-spacing:.04em;margin-bottom:5px;overflow-wrap:anywhere;opacity:1;filter:none;animation:none}
#app .as-info [data-as="title"],#app .analysis-stage.as-complete [data-as="title"]{display:block;font-size:13px;font-weight:500;line-height:1.6;color:var(--ink);background:none;filter:none;opacity:1;animation:none;-webkit-text-fill-color:currentColor}
.as-phases{margin:16px 0}.as-phases li{gap:12px;font-size:11px;color:var(--muted);padding:9px 0;background:none;border-radius:0;margin:0;min-height:0;transition:none}
.as-step-icon{flex-shrink:0;font-size:9px;width:21px;height:21px;border-color:var(--line);color:inherit;background:none;transition:none}.as-phases small{font-size:9px;white-space:nowrap}
.as-phases [aria-current]{color:var(--ink);background:none;font-weight:500}.as-phases [aria-current] .as-step-icon{border-color:var(--plum);color:var(--ink);background:none;box-shadow:none}
.as-phases .is-done{color:var(--muted)}.as-phases .is-done .as-step-icon{color:var(--plum);border-color:var(--plum);background:none}
#app .as-detail{min-height:38px;font-size:10px;line-height:1.9;color:var(--muted);margin:0}
.as-bottom{border-color:#e6e3e9;background:#f2eff5;padding-top:12px;padding-bottom:12px}.as-bottom p{font-size:9px;color:var(--muted)}.as-bottom p svg{width:13px;height:13px;flex-shrink:0}.as-bottom>div{gap:20px}.as-bottom button{padding:10px 0;min-height:38px;font-size:10px;color:var(--muted);white-space:nowrap}.as-bottom button:hover{color:var(--plum)}
/* Completion stays on screen. The check draws once, then all motion stops. */
.as-success-mark{display:none;position:absolute;bottom:7px;right:7px;z-index:3;width:60px;height:60px;background:#e9f3d3;border:5px solid #faf9fb;border-radius:50%;box-shadow:0 4px 18px #33253e20;place-items:center;color:#50682a}
.as-success-mark svg{width:36px;height:36px;stroke-width:3;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
.as-result{padding:18px 0 3px;animation:analysis-result-in .45s ease-out both}.as-result[hidden],.as-detail[hidden],[data-as-motion][hidden]{display:none}.as-result p{font-size:13px;line-height:1.9;color:var(--ink);margin-bottom:13px}.as-result .btn{width:100%;min-height:49px;white-space:normal}
#app .as-complete{border-color:#afc386}.as-complete .as-photo-frame:after{content:'';position:absolute;inset:-15px;border:2px solid #95b85a;border-radius:50%;animation:analysis-finish-ring .85s ease-out both;pointer-events:none}
.as-complete .as-success-mark{display:grid;animation:analysis-result-in .4s ease-out both}.as-complete .as-success-mark path{stroke-dasharray:38;stroke-dashoffset:38;animation:analysis-check .5s ease-out .12s forwards}
.as-complete .as-sweep,.as-complete .as-signal{display:none}.as-complete .as-orbit-outer{border-color:#a5bc78}.as-complete .as-orbit:before,.as-complete .as-orbit:after{animation:none;border-color:transparent}.as-complete .as-orbit-inner{border-color:#b5ca9244}.as-complete .as-photo{box-shadow:0 12px 35px #33253e20}
#app .as-complete .as-current{background:none;border:0;border-bottom:1px solid var(--line)}#app .as-complete .as-live{color:var(--plum)}
.as-reduced .as-sweep:after{top:36%;bottom:auto}.as-reduced .as-success-mark path{stroke-dashoffset:0}
@keyframes portrait-sweep{from{top:-25%}to{top:100%}}
@keyframes analysis-result-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes analysis-finish-ring{from{transform:scale(1);opacity:.8}to{transform:scale(1.16);opacity:0}}
@keyframes analysis-check{to{stroke-dashoffset:0}}
@media(min-width:1500px){.as-info{padding:42px 58px 38px 26px}.as-visual{min-height:580px}.as-photo-frame{width:326px;height:auto}}
@media(max-width:1050px) and (min-width:701px){.as-info{padding:28px 22px 24px 8px}.as-photo-frame{width:210px;height:auto;margin-left:25px;margin-right:25px}.as-bottom>div{gap:15px}.as-bottom p{max-width:230px}.as-current{gap:10px}.as-info h1{font-size:26px}.as-phases li{padding-left:5px;padding-right:5px}}
@media(max-width:700px){.as-layout{grid-template-columns:1fr}.as-visual{min-height:342px}.as-photo-frame{width:206px;height:auto;margin:58px 30px 72px;transform:none}.as-coordinate{font-size:8px}.as-visual-caption{bottom:15px;font-size:10px}.as-signal{bottom:43px;height:13px}.as-signal i{max-height:13px}.as-photo-tag{font-size:8px;bottom:17px}.as-info{padding:23px 22px 20px;border-color:#e6e3e9}.as-info h1{font-size:27px;line-height:1.5}.as-current{margin-top:20px;gap:12px}.as-phases li{font-size:11px;padding:8px 0}.as-bottom p{font-size:9px}.as-success-mark{width:51px;height:51px;bottom:0;right:0}.as-success-mark svg{width:29px;height:29px}.as-complete .as-info h1{font-size:26px}.as-wordmark small{font-size:8px;letter-spacing:1px}}
@media(prefers-reduced-motion:reduce){.analysis-stage *,.analysis-stage *:before,.analysis-stage *:after{animation:none!important;transition:none!important}.as-sweep:after{top:36%;bottom:auto}.as-complete .as-success-mark path{stroke-dashoffset:0}}
