/* Final authoritative release layer: auth privacy, responsive dialogs, and requested polish. */

/* Never expose account-only data while signed out or while authentication is unresolved. */
body:not(.signed-in) #projectsSignedIn,
body:not(.signed-in) #materialsSignedIn,
body:not(.signed-in) #inventorySignedIn,
body:not(.signed-in) #accountManagePanel,
body:not(.signed-in) .signedInOnly,
body:not(.signed-in) [data-auth-only],
body:not(.signed-in) [data-private-account],
body.signed-out #projectsSignedIn,
body.signed-out #materialsSignedIn,
body.signed-out #inventorySignedIn,
body.signed-out #accountManagePanel,
body.signed-out .signedInOnly,
body.signed-out [data-auth-only],
body.signed-out [data-private-account]{display:none!important;visibility:hidden!important}
body.signed-in #projectsSignedOut,
body.signed-in #materialsSignedOut,
body.signed-in #inventorySignedOut,
body.signed-in #accountSignedOutActions{display:none!important;visibility:hidden!important}
body.signed-in #projectsSignedIn{display:block!important;visibility:visible!important}
body.signed-in #materialsSignedIn{display:flex!important;visibility:visible!important}
body.signed-in #inventorySignedIn{display:block!important;visibility:visible!important}
body.signed-out #projectsSignedOut,
body.signed-out #materialsSignedOut,
body.signed-out #inventorySignedOut{display:block!important;visibility:visible!important}

/* HTML's hidden contract wins over late component rules. */
#projectsSignedIn[hidden],#materialsSignedIn[hidden],#inventorySignedIn[hidden],
#projectsSignedOut[hidden],#materialsSignedOut[hidden],#inventorySignedOut[hidden]{display:none!important;visibility:hidden!important}

/* The workspace shield covers OAuth return and signed-in refresh until settings hydrate. */
body.authPending #releaseAuthShield{display:grid!important;visibility:visible!important;pointer-events:auto!important}
body.authPending #releaseAuthShield[hidden]{display:grid!important}
.releaseAuthShield{position:fixed;inset:0;z-index:12000;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--accent) 18%,var(--bg)) 0,var(--bg) 46%,color-mix(in srgb,var(--bg) 94%,#000) 100%);color:var(--text)}
.releaseAuthShield[hidden]{display:none!important}
.releaseAuthCore{display:flex;align-items:center;gap:22px;width:min(520px,92vw);padding:26px 28px;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--edge));border-radius:26px;background:color-mix(in srgb,var(--surface-raised) 92%,transparent);box-shadow:0 26px 90px rgba(0,0,0,.35),0 0 55px color-mix(in srgb,var(--accent) 15%,transparent);backdrop-filter:blur(18px)}
.releaseAuthCore>div{display:grid;gap:5px}.releaseAuthCore span{font-size:.7rem;font-weight:800;letter-spacing:.16em;color:var(--accent2)}.releaseAuthCore strong{font-size:1.25rem}.releaseAuthCore small{color:var(--muted);line-height:1.45}
.releaseAuthOrbit{position:relative;flex:0 0 76px;width:76px;height:76px;border:1px solid color-mix(in srgb,var(--accent) 42%,transparent);border-radius:50%;animation:releaseAuthSpin 3.6s linear infinite}
.releaseAuthOrbit::before,.releaseAuthOrbit::after{content:"";position:absolute;border-radius:50%;inset:10px;border:1px dashed color-mix(in srgb,var(--accent2) 50%,transparent);animation:releaseAuthSpin 2.4s linear infinite reverse}.releaseAuthOrbit::after{inset:25px;border-style:solid;background:radial-gradient(circle,var(--accent2) 0 20%,color-mix(in srgb,var(--accent) 35%,transparent) 22% 100%);box-shadow:0 0 22px color-mix(in srgb,var(--accent) 55%,transparent)}
.releaseAuthOrbit i{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--accent2);box-shadow:0 0 14px var(--accent);left:33px;top:-5px}.releaseAuthOrbit i:nth-child(2){left:auto;right:-2px;top:45px;transform:scale(.72)}.releaseAuthOrbit i:nth-child(3){left:4px;top:57px;transform:scale(.5)}
@keyframes releaseAuthSpin{to{transform:rotate(1turn)}}

/* Compact global session preference. The server remains authoritative: this
   control only chooses a browser-session cookie or a 30-day persistent one. */
.rememberMeControl{position:relative;display:inline-flex;align-items:center;gap:6px;margin-left:2px;padding-left:9px;border-left:1px solid color-mix(in srgb,var(--line) 78%,transparent);color:var(--muted);font-size:.69rem;font-weight:800;line-height:1;white-space:nowrap;cursor:pointer;user-select:none}
.rememberMeControl[hidden],body.signed-in .rememberMeControl{display:none!important}
.rememberMeControl input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.rememberMeBox{position:relative;width:15px;height:15px;flex:0 0 15px;border:1px solid color-mix(in srgb,var(--accent) 58%,var(--line));border-radius:4px;background:color-mix(in srgb,var(--surface-raised) 88%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 0%,transparent);transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}
.rememberMeControl input:checked+.rememberMeBox{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 17%,transparent)}
.rememberMeControl input:checked+.rememberMeBox::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.rememberMeControl input:focus-visible+.rememberMeBox{outline:2px solid var(--accent2);outline-offset:3px}
.rememberMeControl:hover{color:var(--text)}

/* Keep returning users from briefly seeing signed-out benefits while the session
   check and workspace hydration are still resolving. */
body.auth-resolving #headerAccountIndicator,
body.auth-resolving #projectsSignedOut,
body.auth-resolving #materialsSignedOut,
body.auth-resolving #inventorySignedOut,
body.auth-resolving #calculatorSignedOutBenefits,
body.auth-restore-pending #headerAccountIndicator,
body.auth-restore-pending #projectsSignedOut,
body.auth-restore-pending #materialsSignedOut,
body.auth-restore-pending #inventorySignedOut,
body.auth-restore-pending #calculatorSignedOutBenefits{visibility:hidden!important}
body.auth-resolving #projectsSignedOut,
body.auth-resolving #materialsSignedOut,
body.auth-resolving #inventorySignedOut,
body.auth-restore-pending #projectsSignedOut,
body.auth-restore-pending #materialsSignedOut,
body.auth-restore-pending #inventorySignedOut{display:none!important}

.stripProjectTitleRow{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.topEstimatedProfit{font-size:.78rem;font-weight:600;color:var(--accent2);white-space:nowrap}
.stripPrice{align-items:flex-end}.stripPrice #topPriceRules{display:block;text-align:right;max-width:190px}

/* Shared themed controls and account actions. */
#account-page .btn.secondary:not(.danger),
#account-page [data-manage-billing],
#account-page [data-manage-integrations],
#account-page #exportAccountDataBtn,
#account-page #goAdvanced{border-color:color-mix(in srgb,var(--accent) 62%,var(--edge-strong))!important;color:var(--accent2)!important;background:color-mix(in srgb,var(--accent) 10%,var(--surface-raised))!important}
.autoRenewToggle{align-self:center}

/* Smaller project sort control and stable selection state. */
.projectLibrarySortButton,[data-project-sort-button]{min-height:42px!important;padding:8px 12px!important;font-size:.82rem!important;gap:7px!important}
.projectLibraryCard.is-selected,.projectLibraryCard.selected{outline:2px solid var(--accent)!important;outline-offset:-2px;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)!important}
.projectLibraryCard.is-selected [data-project-card-check],.projectLibraryCard.selected [data-project-card-check]{opacity:1!important;visibility:visible!important}

/* The add-inventory form is a dialog only in the signed-in workspace. */
body.signed-in #inventoryAddForm:not(.inventoryAddModalBackdrop *){display:none!important}
.inventoryAddModalBackdrop{z-index:4100!important}
.inventoryAddModalPanel{max-height:min(90dvh,900px)!important;overflow:hidden!important}
.inventoryAddModalScroll{max-height:calc(min(90dvh,900px) - 88px)!important;overflow:auto!important;scrollbar-color:var(--accent) transparent}
.inventoryAddModalScroll::-webkit-scrollbar{width:10px}.inventoryAddModalScroll::-webkit-scrollbar-track{background:transparent}.inventoryAddModalScroll::-webkit-scrollbar-thumb{background:var(--accent);border:3px solid transparent;border-radius:999px;background-clip:padding-box}
.inventoryDialogColorPicker .colorToggle,.inventoryItemDialog .colorToggle,.inventoryAddModalPanel .colorToggle{appearance:none!important;border:1px solid var(--accent)!important;border-radius:999px!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface-raised))!important;color:var(--accent2)!important;padding:9px 15px!important;font:500 .82rem var(--app-font,system-ui)!important;cursor:pointer!important}

/* Inventory table gets an internal viewport rather than growing forever. */
body.signed-in #inventorySignedIn .inventoryTableWrap{max-height:620px!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-color:var(--accent) transparent}
body.signed-in #inventorySignedIn .inventoryTableWrap::-webkit-scrollbar{width:10px;height:10px}
body.signed-in #inventorySignedIn .inventoryTableWrap::-webkit-scrollbar-thumb{background:var(--accent);border:3px solid transparent;border-radius:999px;background-clip:padding-box}

/* Modal confirmations must always sit above notifications. */
.themedDialogOverlay,.themedDialogBackdrop,.themedConfirmBackdrop,.appDialogOverlay,.confirmDialogOverlay{z-index:10050!important}
.notificationCenterOverlay{z-index:9000!important}

/* Signed-out showcase corrections. */
body.signed-out .signedOutProfileShowcase h1,
body.signed-out .profileShowcaseHero h1{text-transform:uppercase;letter-spacing:-.025em}
body.signed-out .signedOutProfileShowcase .emptyIcon,
body.signed-out .profileShowcaseHero .emptyIcon{display:none!important}

/* Support reads as a discrete sheet on mobile. */
@media(max-width:700px){
  body.supportChatOpen::before{content:"";position:fixed;inset:0;z-index:4390;background:rgba(5,9,15,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
  .supportChatPanel{z-index:4400!important}
  .heroRenewDate{position:static!important;max-width:100%!important;order:3;flex:1 0 100%;margin:0!important}
  .heroTop{flex-wrap:wrap!important}
  .heroGraphic,.heroArt,.logoWrap{transform:translateY(-8px)}
  .projectLibraryDialog,.notificationCenter,.inventoryAddModalPanel,.themedDialog{max-height:calc(100dvh - 16px)!important;margin:8px!important;border-radius:22px!important}
}
@media(min-width:701px){
  .heroGraphic,.heroArt,.logoWrap{transform:translateY(8px)}
}

@media(prefers-reduced-motion:reduce){.projectLibraryCard,.supportChatPanel{transition:none!important}}
