:root{--loading-ivory:#fbf8f3;--loading-paper:#fffdfa;--loading-ink:#292522;--loading-muted:#756f69;--loading-line:#e7dfd6;--loading-accent:#76549b;--loading-accent-soft:#eee6f5;--loading-skeleton:#e9e5df;--loading-shimmer:#f7f4ef}
.loading-page{position:fixed;z-index:10050;inset:0;display:grid;place-items:center;overflow:auto;background:radial-gradient(circle at 50% 22%,#fff 0,#fbf8f3 52%,#f3eee8 100%);color:var(--loading-ink);padding:24px;transition:opacity .32s ease,visibility .32s ease}
.loading-page[hidden]{display:none}.loading-page.is-leaving{visibility:hidden;opacity:0;pointer-events:none}.loading-page-card{width:min(520px,100%);text-align:center}.loading-brand{display:block;margin-bottom:26px;color:#292522;font-size:13px;font-weight:700;letter-spacing:.17em}.loading-brand span{font-weight:400;letter-spacing:.04em}
.studio-loading-overlay.loading-page>.loading-page-card{display:block;width:min(520px,100%);min-width:0;border:0;border-radius:0;background:transparent;color:var(--loading-ink);padding:0;box-shadow:none}
.loading-book{position:relative;display:grid;width:min(410px,86vw);height:218px;grid-template-columns:1fr 1fr;margin:0 auto 27px;filter:drop-shadow(0 18px 22px rgba(63,50,39,.13));perspective:900px}.loading-book-page{position:relative;overflow:hidden;border:1px solid #dfd7ce;background:var(--loading-paper);padding:20px}.loading-book-page:first-child{border-radius:12px 3px 3px 12px;transform:rotateY(2deg);transform-origin:right}.loading-book-page:last-child{border-radius:3px 12px 12px 3px;transform:rotateY(-2deg);transform-origin:left}.loading-book-spine{position:absolute;z-index:3;top:4px;bottom:4px;left:50%;width:12px;background:linear-gradient(90deg,rgba(79,61,47,.12),rgba(255,255,255,.7),rgba(79,61,47,.12));transform:translateX(-50%);pointer-events:none}.loading-book-photo,.loading-book-line{position:relative;overflow:hidden;border-radius:5px;background:var(--loading-skeleton)}.loading-book-photo::after,.loading-book-line::after,.loading-skeleton-block::after{position:absolute;inset:0;content:"";background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.68) 48%,transparent 66%);transform:translateX(-100%);animation:loading-shimmer 2s ease-in-out infinite}.loading-book-page:first-child .loading-book-photo{height:120px}.loading-book-page:last-child{display:grid;grid-template-columns:1fr 1fr;gap:10px}.loading-book-page:last-child .loading-book-photo{height:72px}.loading-book-copy{grid-column:1/-1;display:grid;gap:7px;align-content:end}.loading-book-line{height:8px}.loading-book-line.short{width:62%}
.loading-page h1{margin:0;font-size:clamp(25px,4vw,34px);font-weight:600;line-height:1.35;letter-spacing:-.025em}.loading-subtitle{min-height:24px;margin:8px 0 20px;color:var(--loading-muted);font-size:14px;line-height:1.65}.loading-progress{height:8px;overflow:hidden;border:1px solid #e2dad2;border-radius:999px;background:#eee9e3;box-shadow:inset 0 1px 2px rgba(61,45,34,.06)}.loading-progress>span{display:block;width:8%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#9d7abb,var(--loading-accent));transition:width .35s ease}.loading-progress-copy{display:flex;justify-content:space-between;margin-top:7px;color:var(--loading-muted);font-size:11px}.loading-stage-list{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin:18px 0 0;padding:0;list-style:none}.loading-stage-list li{display:grid;justify-items:center;gap:5px;color:#9b958f;font-size:10px;line-height:1.35}.loading-stage-list i{display:grid;width:20px;height:20px;place-items:center;border:1px solid #d8d0c7;border-radius:50%;background:#fff;font-style:normal}.loading-stage-list li.done{color:#655b53}.loading-stage-list li.done i{border-color:#9d7abb;background:var(--loading-accent-soft);color:#694889}.loading-stage-list li.active{color:#4e3468;font-weight:600}.loading-stage-list li.active i{border-color:var(--loading-accent);box-shadow:0 0 0 4px rgba(118,84,155,.1);color:var(--loading-accent)}.loading-tip{margin:18px 0 0;color:#827b74;font-size:11px}.loading-slow-tip{margin:8px 0 0;color:#8a5c40;font-size:12px;line-height:1.55}.loading-slow-tip[hidden]{display:none}
.loading-error-card{display:none;margin-top:20px;border:1px solid #eadbd1;border-radius:14px;background:#fff;padding:18px;text-align:left;box-shadow:0 12px 30px rgba(65,48,36,.08)}.loading-page.has-error .loading-book,.loading-page.has-error .loading-progress,.loading-page.has-error .loading-progress-copy,.loading-page.has-error .loading-stage-list,.loading-page.has-error .loading-tip,.loading-page.has-error .loading-slow-tip{display:none}.loading-page.has-error .loading-error-card{display:block}.loading-error-card h2{margin:0 0 5px;font-size:20px}.loading-error-card p{margin:0;color:var(--loading-muted);font-size:13px;line-height:1.65}.loading-error-actions{display:flex;gap:8px;margin-top:15px}.loading-error-actions button,.loading-error-actions a{display:inline-grid;min-height:40px;place-items:center;border:1px solid #d8cec5;border-radius:999px;background:#fff;color:var(--loading-ink);padding:0 17px;font:500 13px "Prompt",sans-serif;text-decoration:none;cursor:pointer}.loading-error-actions button{border-color:var(--loading-accent);background:var(--loading-accent);color:#fff}.loading-error-card details{margin-top:13px;color:var(--loading-muted);font-size:11px}.loading-error-card code{display:block;margin-top:6px;overflow-wrap:anywhere}
.loading-skeleton{position:relative;overflow:hidden;background:var(--loading-skeleton)!important;color:transparent!important;pointer-events:none}.loading-skeleton::after{position:absolute;inset:0;content:"";background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.66) 48%,transparent 66%);transform:translateX(-100%);animation:loading-shimmer 2s ease-in-out infinite}.loading-skeleton-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.loading-skeleton-card{overflow:hidden;border:1px solid var(--loading-line);border-radius:14px;background:#fff}.loading-skeleton-block{position:relative;overflow:hidden;background:var(--loading-skeleton)}.loading-skeleton-card .loading-skeleton-media{aspect-ratio:4/3}.loading-skeleton-card .loading-skeleton-body{display:grid;gap:10px;padding:15px}.loading-skeleton-line{height:11px;border-radius:5px}.loading-skeleton-line.short{width:64%}.loading-skeleton-button{width:45%;height:32px;margin-top:4px;border-radius:999px}.loading-content-ready>*{animation:loading-content-in .3s ease both}@keyframes loading-content-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.loading-image-shell{background:var(--loading-skeleton)}.loading-image-shell-positioned{position:relative}.loading-image-shell::after{position:absolute;inset:0;content:"";background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.58) 48%,transparent 66%);animation:loading-shimmer 2s ease-in-out infinite;pointer-events:none}.loading-image-shell>img{opacity:0;transition:opacity .28s ease}.loading-image-shell.image-ready::after{display:none}.loading-image-shell.image-ready>img{opacity:1}
@keyframes loading-shimmer{0%{transform:translateX(-100%)}55%,100%{transform:translateX(100%)}}
@media(max-width:760px){.loading-page{align-items:start;padding:18px 14px}.loading-page-card{margin:auto}.loading-brand{margin-bottom:15px}.loading-book{width:min(310px,82vw);height:160px;margin-bottom:18px}.loading-book-page{padding:14px}.loading-book-page:first-child .loading-book-photo{height:85px}.loading-book-page:last-child .loading-book-photo{height:51px}.loading-stage-list{grid-template-columns:repeat(5,1fr)}.loading-stage-list li span{display:none}.loading-subtitle{margin-bottom:14px}.loading-skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
@media(max-width:420px){.loading-page{padding-block:12px}.loading-book{height:138px}.loading-page h1{font-size:23px}.loading-stage-list{margin-top:13px}.loading-tip{margin-top:13px}.loading-skeleton-grid{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.loading-page,.loading-progress>span,.loading-image-shell>img{transition:none}.loading-book-photo::after,.loading-book-line::after,.loading-skeleton::after,.loading-skeleton-block::after,.loading-image-shell::after{animation:none;background:rgba(255,255,255,.18)}}
