
/* V101 unified experience hardening: additive only. */
:where(h1,h2,h3,.display-title,.hero-title){word-break:normal!important;overflow-wrap:normal!important;hyphens:none!important;max-width:100%}
:where(.card,.hero,.panel,.project-card,section,article,aside,main){min-width:0}
.glossary-modal{position:fixed!important;inset:0!important;width:100dvw!important;height:100dvh!important;min-height:100vh!important;z-index:2147483000!important;align-items:center!important;justify-content:center!important;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))!important;overflow:hidden!important;transform:none!important;contain:none!important}
.glossary-modal.open{display:flex!important}
.glossary-dialog{position:relative!important;inset:auto!important;width:min(560px,100%)!important;max-width:calc(100dvw - 32px)!important;max-height:min(78dvh,720px)!important;overflow:auto!important;overscroll-behavior:contain!important;margin:auto!important;transform:none!important}
html.rd-modal-open,html.rd-modal-open body{overflow:hidden!important;overscroll-behavior:none!important}
@media(max-width:760px){
  :where(.hero h1,.card h1,main h1){font-size:clamp(2.15rem,11vw,3.75rem)!important;line-height:.98!important;letter-spacing:-.045em!important}
  :where(.hero h2,.card h2,main h2){font-size:clamp(1.55rem,7vw,2.5rem)!important;line-height:1.05!important}
  .glossary-modal{padding:12px!important}
  .glossary-dialog{width:100%!important;max-width:100%!important;max-height:calc(100dvh - 24px)!important;border-radius:20px!important;padding:22px!important}
}
@media(max-width:390px){:where(.hero h1,.card h1,main h1){font-size:clamp(2rem,10.5vw,3rem)!important}}


/* V102 — phone-first reliability + contextual NovaAI */
html,body{max-width:100%;overflow-x:clip!important}
*{min-width:0}
:where(p,li,label,span,strong,em,a,button,input,textarea,select){overflow-wrap:break-word;word-break:normal}
@supports not (overflow:clip){html,body{overflow-x:hidden!important}}

/* ScholarSpace: protect step numbers and consent text from column collapse. */
.steps .card{padding-left:4.5rem!important}
.steps .card:before{width:2.15rem;text-align:center;line-height:1;top:1.65rem!important;left:1.15rem!important}
.request-form .consent{display:grid!important;grid-template-columns:28px minmax(0,1fr)!important;align-items:start!important;column-gap:.75rem!important;white-space:normal!important}
.request-form .consent input{grid-column:1!important;width:24px!important;height:24px!important;margin:.12rem 0 0!important;padding:0!important}
.request-form .consent a{display:inline!important;white-space:normal!important}
@media(max-width:700px){
  .steps .card{padding:1.25rem!important;padding-top:3.3rem!important}
  .steps .card:before{top:1.05rem!important;left:1.25rem!important;width:auto!important}
  .searchbox{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:.6rem!important}
  .searchbox input{min-width:0!important;width:100%!important}
  .searchbox button{min-width:88px!important;white-space:nowrap!important}
  .hero .cta{display:grid!important;grid-template-columns:1fr!important;gap:.7rem!important}
  .hero .cta .btn{width:100%!important;justify-content:center!important;text-align:center!important}
}

/* Portfolio/glossary terms remain readable and dialog always fits a phone. */
.project-card .chips,.project-card .tags{display:flex!important;flex-wrap:wrap!important;gap:.55rem!important}
.project-card .tag{max-width:100%!important;white-space:normal!important;line-height:1.25!important}
.glossary-dialog{box-sizing:border-box!important}
@media(max-width:640px){
 .glossary-modal{padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))!important}
 .glossary-dialog{width:100%!important;max-width:100%!important;max-height:calc(100dvh - 20px)!important;padding:20px!important}
 .glossary-dialog h3{font-size:1.22rem!important;padding-right:42px!important;overflow-wrap:anywhere!important}
 .glossary-dialog p{font-size:.98rem!important;line-height:1.58!important}
}

/* Project universe: open at its real beginning, never as a deceptive blank sheet. */
.universe-dialog[open]{display:block!important}
.universe-shell{scroll-padding-top:1rem}
@media(max-width:720px){
 .universe-dialog{width:calc(100dvw - 16px)!important;max-height:calc(100dvh - 20px)!important;border-radius:22px!important;margin:auto!important}
 .universe-shell{max-height:calc(100dvh - 20px)!important;padding:1rem!important;overflow-y:auto!important}
 .universe-head{padding-right:48px!important}
 .universe-groups{grid-template-columns:1fr!important;gap:.8rem!important}
 .universe-group{padding:.85rem!important}
 .universe-card{padding:1rem .2rem!important}
 .project-explorer-actions{display:grid!important;grid-template-columns:1fr!important;gap:.7rem!important}
 .universe-trigger{width:100%!important;justify-content:center!important;text-align:center!important}
}

/* Contextual NovaAI surface */
#novaUniversalLauncher,#novaTutorialLauncher{font-family:inherit}
#novaUniversalLauncher{left:max(12px,env(safe-area-inset-left,0px))!important;bottom:calc(env(safe-area-inset-bottom,0px) + 82px)!important}
#novaTutorialLauncher{position:fixed;left:max(12px,env(safe-area-inset-left,0px));bottom:calc(env(safe-area-inset-bottom,0px) + 136px);z-index:9799;width:42px;height:42px;border-radius:50%;border:1px solid rgba(243,207,120,.34);background:rgba(5,18,38,.92);color:#f3cf78;font-weight:900;font-size:17px;box-shadow:0 12px 30px rgba(0,0,0,.3);backdrop-filter:blur(12px);cursor:pointer}
.nova-context-backdrop{position:fixed;inset:0;z-index:2147482500;background:rgba(1,7,18,.46);backdrop-filter:blur(4px);display:none}
.nova-context-backdrop.open{display:block}
.nova-context-panel{position:fixed;z-index:2147482600;right:14px;top:14px;bottom:14px;width:min(430px,calc(100dvw - 28px));display:flex;flex-direction:column;border:1px solid rgba(243,207,120,.3);border-radius:24px;background:linear-gradient(155deg,rgba(7,23,48,.985),rgba(2,9,23,.99));box-shadow:0 32px 100px rgba(0,0,0,.58);transform:translateX(calc(100% + 34px));transition:transform .22s ease;overflow:hidden;color:#eef4ff}
.nova-context-panel.open{transform:none}
.nova-context-head{display:grid;grid-template-columns:1fr auto;gap:.7rem;align-items:start;padding:1rem;border-bottom:1px solid rgba(255,255,255,.09)}
.nova-context-kicker{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#f3cf78;font-weight:900}.nova-context-title{font-size:1.15rem;font-weight:900;margin:.15rem 0}.nova-context-page{font-size:.78rem;color:#91a5bf;line-height:1.4}.nova-context-close{width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);color:#fff;font-size:1.35rem}.nova-context-messages{flex:1;overflow:auto;padding:1rem;overscroll-behavior:contain}.nova-context-welcome,.nova-context-message{border:1px solid rgba(255,255,255,.09);border-radius:17px;padding:.85rem 1rem;line-height:1.55;margin-bottom:.75rem;background:rgba(255,255,255,.035)}.nova-context-message.user{margin-left:12%;background:rgba(64,133,211,.11)}.nova-context-message.ai{margin-right:5%;border-color:rgba(243,207,120,.16)}.nova-context-message p{margin:.35rem 0}.nova-context-message pre{max-width:100%;overflow:auto}.nova-context-compose{border-top:1px solid rgba(255,255,255,.09);padding:.85rem;background:rgba(3,13,29,.94)}.nova-context-compose textarea{width:100%;min-height:82px;max-height:180px;resize:vertical;border:1px solid rgba(143,180,220,.25);border-radius:16px;background:#07182d;color:#fff;padding:.85rem;font:inherit;font-size:16px;outline:none}.nova-context-compose textarea:focus{border-color:rgba(243,207,120,.55);box-shadow:0 0 0 3px rgba(243,207,120,.07)}.nova-context-actions{display:flex;justify-content:space-between;gap:.65rem;align-items:center;margin-top:.65rem}.nova-context-actions small{color:#8093aa;line-height:1.35}.nova-context-send{flex:0 0 auto;min-width:92px;min-height:44px;border:0;border-radius:13px;background:linear-gradient(135deg,#ffe083,#dfa83b);color:#07101d;font-weight:950;padding:.7rem 1rem}.nova-context-send:disabled{opacity:.55}.nova-context-expand{font-size:.76rem;color:#aac8e8;text-decoration:none}.nova-context-thinking{color:#91a5bf;font-style:italic}
@media(max-width:700px){
 .nova-context-backdrop{background:rgba(1,7,18,.32)}
 .nova-context-panel{left:max(8px,env(safe-area-inset-left,0px));right:max(8px,env(safe-area-inset-right,0px));top:auto;bottom:max(8px,env(safe-area-inset-bottom,0px));width:auto;max-height:min(78dvh,680px);border-radius:24px;transform:translateY(calc(100% + 28px))}
 .nova-context-panel.open{transform:none}
 .nova-context-head{padding:.85rem}.nova-context-messages{padding:.8rem}.nova-context-compose{padding:.75rem}
 .nova-context-actions{align-items:flex-end}.nova-context-actions small{font-size:.68rem}.nova-context-send{min-width:72px;padding:.65rem .8rem}
}
@media(prefers-reduced-motion:reduce){.nova-context-panel{transition:none!important}}

/* Full NovaAI: guarantee composer/actions never push beyond the phone viewport. */
.nova-app,.app-shell,.chat-main,.chat-scroll,.messages,.composer-wrap,.composer,.composer-bottom,.composer-tools{min-width:0!important;max-width:100%!important}
.composer{width:100%!important;box-sizing:border-box!important}
.composer-bottom{gap:.6rem!important}
.composer-tools{flex:1 1 auto!important;min-width:0!important;flex-wrap:wrap!important}
.send-btn{flex:0 0 44px!important;width:44px!important;height:44px!important}
@media(max-width:520px){
 .composer-wrap{padding-left:max(8px,env(safe-area-inset-left))!important;padding-right:max(8px,env(safe-area-inset-right))!important}
 .composer{padding:11px!important}
 .composer-tools{gap:.45rem!important}.tool-chip{white-space:nowrap!important}
 .messages,.message,.message-content{max-width:100%!important;min-width:0!important;overflow-wrap:anywhere!important}
 .message-actions,.source-actions{max-width:100%!important;overflow-x:auto!important;flex-wrap:nowrap!important;padding-bottom:3px}
}

/* Homepage ScholarSpace pillar */
.scholarspace-feature-card{grid-column:1/-1;min-height:0!important;display:grid;grid-template-columns:minmax(0,1.35fr) auto;align-items:center;gap:1rem;background:radial-gradient(circle at 88% 50%,rgba(216,166,62,.16),transparent 32%),linear-gradient(155deg,rgba(9,32,66,.96),rgba(3,12,30,.98))!important}
.scholarspace-feature-card h3{font-size:clamp(2rem,4vw,3.6rem)!important;margin:.35rem 0!important}.scholarspace-feature-actions{display:flex;gap:.65rem;flex-wrap:wrap;justify-content:flex-end}.scholarspace-feature-actions a{margin:0!important;border:1px solid rgba(216,166,62,.4);padding:.75rem 1rem;border-radius:999px;text-decoration:none}.scholarspace-feature-actions a:first-child{background:linear-gradient(135deg,#ffe083,#dfa83b);color:#08111f!important;border-color:transparent}
@media(max-width:760px){.scholarspace-feature-card{grid-template-columns:1fr!important}.scholarspace-feature-actions{justify-content:flex-start}.scholarspace-feature-actions a{width:100%;text-align:center}}


/* V102 accessibility/mobile header correction: keep skip link off-canvas until keyboard focus. */
a.skip,.skip-link{position:fixed!important;left:max(10px,env(safe-area-inset-left,0px))!important;top:-120px!important;z-index:2147482800!important;max-width:calc(100dvw - 20px)!important}
a.skip:focus,a.skip:focus-visible,.skip-link:focus,.skip-link:focus-visible{top:max(10px,env(safe-area-inset-top,0px))!important}
.novaai-tutorial-link{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:.45rem .65rem;border:1px solid rgba(232,190,99,.25);border-radius:999px;color:#e8be63;text-decoration:none;font-size:11px;font-weight:800;white-space:nowrap}
@media(max-width:480px){.novaai-tutorial-link{font-size:10px;padding:.4rem .55rem}}
