/* An imagined commune. Scene effects only represent actual server operations. */
.obs-assistant-wait{position:relative;isolation:isolate;box-sizing:border-box;min-width:0;margin-top:25px;overflow:hidden;border:1px solid #416c57;border-radius:20px;background:#123d30;background:radial-gradient(ellipse at 52% 33%,#315e47 0,#184333 46%,#0e3029 100%);color:#f5f1db;box-shadow:0 24px 55px -30px #0c3029,0 1px 0 #d5d5a91f inset}
.obs-assistant-wait:after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(120deg,#dbdcb609,transparent 40%,#041f190d);border-radius:inherit}
.obs-assistant-wait[hidden],.obs-assistant-wait [hidden]{display:none!important}
.obs-assistant-wait:focus-visible{outline:2px solid #b7a766;outline-offset:4px}
.obs-wait-heading{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:start;gap:16px;padding:27px 29px 0;min-width:0}
.obs-wait-heading>div{min-width:0}
.obs-wait-eyebrow{display:block;font-size:9px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;line-height:1.6;color:#c3ceb0}
#obs-assistant-wait-city{margin:6px 0 0;color:#f5f1db;font-size:28px;font-weight:500;letter-spacing:-.035em;line-height:1.2;overflow-wrap:anywhere}
.obs-wait-time{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:end;gap:6px 7px;flex-shrink:0;margin-top:2px;padding:8px 11px;border:1px solid #71826a88;border-radius:20px;background:#102f2926;font-size:10px;line-height:1.3;color:#d6ddc9}
#obs-assistant-wait-time{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";letter-spacing:.03em}
.obs-wait-time-dot{width:5px;height:5px;border-radius:50%;background:#e3d493;box-shadow:0 0 8px #e3d49366;flex-shrink:0}
.obs-wait-landscape{position:relative;margin:-20px auto -3px;width:100%;max-width:820px;pointer-events:none;overflow:hidden}
.obs-wait-scene{display:block;width:100%;height:auto;overflow:visible}
.obs-scene-contours{opacity:.15}
.obs-wait-copy{position:relative;padding:5px 26px 24px;text-align:center}
#obs-assistant-wait-title{margin:0;color:#f6f2df;font-size:24px;font-weight:500;letter-spacing:-.025em;line-height:1.35}
.obs-wait-copy>p{margin:8px auto 0;max-width:410px;color:#c8d3bc;font-size:12px;line-height:1.65}
.obs-assistant-wait.has-progress .obs-wait-copy{padding-bottom:8px}
.obs-wait-footer{display:flex;align-items:center;justify-content:space-between;gap:12px 22px;flex-wrap:wrap;padding:13px 26px;border-top:1px solid #6b86604d;background:#0c2c252e}
.obs-wait-caption{flex:1 1 160px;color:#bacbb3;font-size:10px;line-height:1.7}
.obs-wait-controls{display:flex;align-items:center;gap:8px 15px;flex-wrap:wrap;min-width:0}
.obs-wait-controls>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;max-width:100%;min-height:44px;padding:7px 0;margin:0;border:0;background:transparent;color:#e1e5cf;font:inherit;font-size:11px;line-height:1.5;text-align:left;text-decoration:underline;text-decoration-color:#739178;text-underline-offset:4px;cursor:pointer}
.obs-wait-controls>button:hover{color:#fffbea;text-decoration-color:currentColor}
.obs-wait-controls>button:focus-visible{outline:2px solid #efdd9c;outline-offset:4px;border-radius:3px}
.obs-wait-controls>button svg{flex-shrink:0;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.obs-wait-controls>#obs-assistant-stop{padding:8px 11px;border:1px solid #6b856b;border-radius:8px;text-decoration:none;color:#e7ead5}
.obs-wait-controls>#obs-assistant-stop:hover{background:#244b3c;border-color:#b1bf97}
/* Ambient movement is deliberately slow; the view itself never pans or rotates. */
.obs-wait-animated{animation-play-state:paused}
.obs-scene-arrival{animation:obs-scene-arrive 1.2s cubic-bezier(.16,1,.3,1) both;animation-play-state:paused}
.obs-scene-aura{animation:obs-scene-breathe 10s ease-in-out infinite;animation-play-state:paused}
.obs-wait-water{animation:obs-wait-river 19s linear infinite;animation-play-state:paused}
.obs-wait-window{opacity:.35;animation:obs-wait-lights 11s ease-in-out infinite;animation-play-state:paused}
.obs-wait-window-b{animation-delay:-4s}.obs-wait-window-c{animation-delay:-7s;animation-name:obs-scene-glass-light}
.obs-scene-stars{opacity:.5;animation:obs-wait-glow 9s ease-in-out infinite;animation-play-state:paused}
.obs-scene-fireflies{animation:obs-scene-drift 13s ease-in-out infinite;animation-play-state:paused}
.obs-scene-leaves{transform-box:fill-box;transform-origin:50% 100%;animation:obs-scene-sway 9s ease-in-out infinite;animation-play-state:paused}
.obs-scene-flag{transform-box:fill-box;transform-origin:0 50%;animation:obs-scene-sway 6s ease-in-out infinite reverse;animation-play-state:paused}
/* A phase selects a decorative layer. Finished, absent and failed operations do not loop. */
.obs-scene-effect{opacity:0;visibility:hidden;transition:opacity .45s ease,visibility .45s}
.obs-assistant-wait:is([data-phase=planning],[data-phase=local]) .obs-scene-local,
.obs-assistant-wait:is([data-phase=web],[data-phase=download]) .obs-scene-web,
.obs-assistant-wait:is([data-phase=pdf],[data-phase=ocr],[data-phase=html],[data-phase=cache]) .obs-scene-document,
.obs-assistant-wait[data-phase=writing] .obs-scene-writing,
.obs-assistant-wait:is([data-phase=review],[data-phase=validation],[data-phase=delivery]) .obs-scene-review{opacity:1;visibility:visible}
.obs-scene-network-base{stroke-width:1;stroke-opacity:.22}
.obs-scene-flow{stroke-width:1.8;stroke-dasharray:15 310;stroke-dashoffset:325;animation:obs-scene-flow 5s linear infinite;animation-play-state:paused}
.obs-scene-beacons{stroke-width:1;animation:obs-scene-beacon 4.5s ease-in-out infinite;animation-play-state:paused}
.obs-scene-scan{animation:obs-scene-scan 4.5s ease-in-out infinite;animation-play-state:paused}
.obs-scene-ocr-corners{opacity:0}
.obs-assistant-wait[data-phase=ocr] .obs-scene-ocr-corners{opacity:1}
.obs-scene-writing-lines{stroke-dasharray:100;animation:obs-scene-write 6s ease-in-out infinite;animation-play-state:paused}
.obs-scene-pen{animation:obs-scene-pen 6s ease-in-out infinite;animation-play-state:paused}
.obs-scene-reference{animation:obs-scene-reference 5s ease-in-out infinite;animation-play-state:paused}
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused) .obs-wait-animated{animation-play-state:running}
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused) .obs-scene-effect .obs-wait-animated{animation-play-state:paused}
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused):is([data-phase=planning],[data-phase=local]) .obs-scene-local .obs-wait-animated,
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused):is([data-phase=web],[data-phase=download]) .obs-scene-web .obs-wait-animated,
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused):is([data-phase=pdf],[data-phase=ocr],[data-phase=html]) .obs-scene-document .obs-wait-animated,
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused)[data-phase=writing] .obs-scene-writing .obs-wait-animated,
.obs-assistant-wait:not([hidden])[data-state=waiting]:not(.is-paused):is([data-phase=review],[data-phase=validation],[data-phase=delivery]) .obs-scene-review .obs-wait-animated{animation-play-state:running}
.obs-assistant-wait[data-phase=cache] .obs-scene-scan{display:none}
.obs-assistant-wait.is-paused .obs-wait-animated,.obs-assistant-wait[hidden] .obs-wait-animated{animation-play-state:paused!important}
.obs-assistant-wait.is-paused .obs-scene-effect{transition:none}
@keyframes obs-scene-arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes obs-scene-breathe{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes obs-wait-river{to{stroke-dashoffset:-162}}
@keyframes obs-wait-lights{0%,100%{opacity:.32}45%,65%{opacity:.82}}
@keyframes obs-scene-glass-light{0%,100%{opacity:.06}50%{opacity:.2}}
@keyframes obs-wait-glow{0%,100%{opacity:.35}50%{opacity:.8}}
@keyframes obs-scene-drift{0%,100%{opacity:.3;transform:translateY(2px)}50%{opacity:.8;transform:translateY(-6px)}}
@keyframes obs-scene-sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}
@keyframes obs-scene-flow{to{stroke-dashoffset:0}}
@keyframes obs-scene-beacon{0%,100%{opacity:.3;stroke-width:.7}50%{opacity:.85;stroke-width:2}}
@keyframes obs-scene-scan{0%,100%{transform:translateY(0)}50%{transform:translateY(58px)}}
@keyframes obs-scene-write{0%,10%{stroke-dashoffset:100;opacity:.5}70%,90%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:.3}}
@keyframes obs-scene-pen{0%,100%{transform:translate(-25px,-35px);opacity:0}15%{opacity:1}65%,85%{transform:translate(0,0);opacity:1}95%{opacity:0}}
@keyframes obs-scene-reference{0%,100%{opacity:.35}50%{opacity:1}}
/* One current operation, with the full history kept behind a disclosure. */
.obs-assistant-progress{padding:0 26px 18px;min-width:0;font-size:12px;line-height:1.6}
#obs-assistant-progress-current{display:flex;align-items:center;justify-content:center;gap:9px;min-height:28px;margin:0 0 10px;color:#f0dfa0;font-variant-numeric:tabular-nums;text-align:center;flex-wrap:wrap}
#obs-assistant-progress-current:before{content:'';display:block;width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
#obs-assistant-progress-current[data-state=running]:before{animation:obs-wait-glow 2.5s ease-in-out infinite}
.obs-assistant-wait.is-paused #obs-assistant-progress-current:before{animation-play-state:paused}
.obs-assistant-progress ol{list-style:none;margin:0;padding:0}
.obs-progress-step{display:flex;gap:11px;align-items:flex-start;padding:9px 0;border-top:1px solid #42604d;overflow-wrap:anywhere}
.obs-progress-mark{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px solid #789170;border-radius:50%;color:#e1d593;flex-shrink:0;margin-top:2px;font-size:12px}
.obs-progress-step[data-state=unavailable] .obs-progress-mark,.obs-progress-step[data-state=partial] .obs-progress-mark{color:#f5c792;border-color:#b29369}
.obs-progress-label{display:block;font-weight:500;color:#f5f1db}
.obs-progress-step small{display:block;color:#c8d3bc;font-size:11px;font-variant-numeric:tabular-nums}
.obs-assistant-progress details{margin-top:4px;border-top:1px solid #6b86604d}
.obs-assistant-progress summary{padding:12px 0 4px;color:#e1d593;cursor:pointer;min-height:28px;text-align:center;list-style-position:inside}
.obs-assistant-progress summary:focus-visible,#obs-assistant-progress-all:focus-visible{outline:2px solid #efdd9c;outline-offset:3px}
.obs-assistant-progress details ol{max-height:270px;overflow-y:auto;padding-right:7px;scrollbar-color:#b1bf97 #173e32;margin-top:10px}
.obs-assistant-response:not([hidden]){animation:obs-answer-arrive .45s ease-out both}
@keyframes obs-answer-arrive{from{opacity:.4;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.obs-assistant-wait{border-radius:15px}.obs-wait-heading{padding:22px 19px 0}.obs-wait-time{gap:5px;padding:7px 8px;font-size:10px}.obs-wait-time>span:last-child{display:none}.obs-wait-landscape{margin:0 auto 5px}.obs-wait-scene{width:118%;margin-left:-9%}.obs-wait-copy{padding:0 17px 21px}#obs-assistant-wait-title{font-size:21px}.obs-wait-copy>p{max-width:310px;font-size:12px}.obs-wait-footer{padding:12px 17px;gap:8px}.obs-wait-caption{flex-basis:100%;font-size:10px;text-align:center}.obs-wait-controls{justify-content:space-between;width:100%;gap:8px}.obs-wait-eyebrow{font-size:8px}#obs-assistant-wait-city{font-size:24px}.obs-assistant-progress{padding:0 17px 15px}#obs-assistant-progress-current{font-size:11px}.obs-progress-step{padding-block:8px}}
@media(max-width:360px){.obs-wait-heading{padding:18px 14px 0;gap:9px}.obs-wait-eyebrow{letter-spacing:.12em}#obs-assistant-wait-city{font-size:22px}.obs-wait-footer{padding:11px 14px}.obs-wait-controls{gap:6px 12px}.obs-wait-controls>#obs-assistant-stop{padding:7px 9px}.obs-wait-copy{padding-inline:12px}#obs-assistant-wait-title{font-size:20px}.obs-wait-copy>p{font-size:11px}.obs-wait-scene{width:125%;margin-left:-12.5%}}
@media(prefers-reduced-motion:reduce){.obs-assistant-wait .obs-wait-animated,.obs-assistant-response:not([hidden]),#obs-assistant-progress-current:before{animation:none!important}.obs-assistant-wait .obs-scene-effect{transition:none}.obs-scene-arrival{opacity:1;transform:none}.obs-wait-window{opacity:.65}.obs-wait-window-c{opacity:.12}.obs-scene-flow{stroke-dasharray:3 12;stroke-dashoffset:0;opacity:.6}.obs-scene-writing-lines{stroke-dashoffset:0}.obs-scene-pen{opacity:.7}.obs-scene-beacons,.obs-scene-stars{opacity:.6}}
@media print{.obs-assistant-wait{display:none!important}.obs-assistant-wait .obs-wait-animated,.obs-assistant-response{animation:none!important}}
