.stable-auth-screen{max-width:520px;margin:0 auto}.stable-auth-card .field{margin-top:10px;text-align:left}.stable-or{text-align:center;color:var(--muted,#9f93a6);font-size:12px;margin:12px 0}.stable-link{display:block;width:100%;border:0;background:transparent;color:var(--app-accent,#9b6ee8);padding:12px 6px;cursor:pointer}.stable-email-card{margin-top:14px}.stable-verify-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:10px}.stable-verify-row input{min-width:0}.stable-ok{margin-top:10px}.stable-report-delivery{display:grid;gap:8px;margin-top:10px}.stable-report-delivery button:disabled{opacity:.55;cursor:not-allowed}@media(min-width:700px){body:not(.telegram-webview) .app-shell{max-width:520px;margin:0 auto;box-shadow:0 0 60px rgba(24,5,15,.18)}}
.stable-generation-progress{display:grid;gap:7px;margin:18px 0;text-align:left}.stable-gen-step{display:flex;align-items:center;gap:10px;opacity:.52}.stable-gen-step b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1px solid rgba(218,183,111,.28);font-size:12px}.stable-gen-step.active{opacity:1}.stable-gen-step.active b{box-shadow:0 0 0 5px rgba(218,183,111,.08)}.stable-gen-step.done{opacity:.8}.stable-gen-step.done b{background:rgba(218,183,111,.12)}
.stable-report-delivery{display:grid;gap:12px;margin-top:14px;padding:14px;border:1px solid rgba(218,183,111,.18);border-radius:18px;background:rgba(255,255,255,.035)}
.stable-delivery-title h3{margin:0 0 4px}.stable-delivery-title p{margin:0}
.stable-delivery-row{display:grid;gap:7px;padding:12px;border-radius:14px;background:rgba(16,8,18,.12);border:1px solid rgba(255,255,255,.06)}
.stable-delivery-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.stable-delivery-head span{font-variant-numeric:tabular-nums;font-size:12px;opacity:.8}
.stable-delivery-track{height:7px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.08)}.stable-delivery-track i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,rgba(218,183,111,.72),rgba(163,111,232,.9));transition:width .3s ease}
.stable-delivery-row small{min-height:18px;line-height:1.35;opacity:.78}.stable-delivery-row[data-state="completed"] .stable-delivery-track i{width:100%}.stable-delivery-row[data-state="failed"] .stable-delivery-track{opacity:.55}
.stable-repeat-delivery{padding:6px 4px 2px}.v98-report-actions button[disabled]{opacity:.62;cursor:not-allowed}

/* PATCH_004: iOS/Telegram viewport + clean route loading */
:root{--stable-viewport-height:100dvh;--stable-safe-bottom:env(safe-area-inset-bottom)}
html,body{min-height:var(--stable-viewport-height,100dvh)}
.app-shell{min-height:var(--stable-viewport-height,100dvh)}
#app{min-height:calc(var(--stable-viewport-height,100dvh) - 70px - 72px - var(--stable-safe-bottom,env(safe-area-inset-bottom)))}
.stable-route-loading{min-height:calc(var(--stable-viewport-height,100dvh) - 70px - 72px - var(--stable-safe-bottom,env(safe-area-inset-bottom)));display:grid;place-items:center;padding:22px 18px 34px}
.stable-route-loading-card{width:min(100%,360px);display:grid;justify-items:center;gap:10px;text-align:center;padding:26px 22px;border:1px solid #e6d0c3;background:linear-gradient(180deg,#fffaf3,#f7e9dc);border-radius:26px;box-shadow:0 18px 40px rgba(75,21,32,.10);color:#4b1428}
.stable-route-loading-card b{font:500 22px Georgia,serif}.stable-route-loading-card small{color:#90777a}
.stable-route-spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(123,28,58,.14);border-top-color:#7b1c3a;animation:stableRouteSpin .8s linear infinite}
@keyframes stableRouteSpin{to{transform:rotate(360deg)}}
body.telegram-webview{overscroll-behavior-y:none}
body.telegram-webview .app-shell{padding-bottom:calc(86px + var(--stable-safe-bottom,env(safe-area-inset-bottom)))}
body.telegram-webview .bottom-nav{height:calc(72px + var(--stable-safe-bottom,env(safe-area-inset-bottom)));padding-bottom:max(7px,var(--stable-safe-bottom,env(safe-area-inset-bottom)));}
@media(max-width:760px){.stable-report-delivery .stable-delivery-row{padding:11px}.stable-report-delivery .btn{min-height:48px}.screen.report{padding-bottom:38px}}
/* Keep the sticky app header reliable while clipping decorative overflow on modern iOS. */
@supports (overflow:clip){.app-shell{overflow:clip}}
