:root{

  --navy-deep:#07111F;
  --navy-blueprint:#102747;
  --blue-tech:#1D4E89;
  --blue-steel:#7893AC;
  --white-paper:#F2EEE5;
  --ivory:#E8DFCF;
  --graphite:#252A31;
  --silver:#AEB8C4;
  --gold:#C9A86A;
  --gold-light:#DDBF85;

  --font-serif:'Newsreader',Georgia,'Times New Roman',serif;
  --ease-book:cubic-bezier(.65,.05,.25,1);
  --ease-soft:cubic-bezier(.2,.7,.2,1);

  --paper:#F2EEE5;
  --paper-dark:#E8DFCF;
  --ink:#252A31;
  --ink-muted:#5C6672;
  --accent:#1D4E89;
  --accent-light:#2F69AA;
  --blueprint:#7893AC;
  --blueprint-light:#AEB8C4;
  --border:#CFC5B3;
  --border-light:#DFD6C6;

  --page-frame:rgba(29,78,137,.32);
  --page-light:rgba(255,255,255,.5);
  --page-gutter:rgba(7,17,31,.11);
  --edge-a:#EEE7DA;
  --edge-b:#C8BEAC;
  --dogear-under:#102747;
  --dogear-crease:rgba(37,42,49,.32);

  --pt-flap-crease:rgba(37,42,49,.30);
  --pt-flap-hl:rgba(255,255,255,.62);
  --pt-flap-mid:rgba(255,255,255,.14);
  --pt-flap-edge:rgba(37,42,49,.12);

  --pg-top:0px;
  --pg-right:0px;
  --pg-bottom:0px;
  --pg-left:0px;
}
[data-theme="dark"]{

  --paper:#0F1B2C;
  --paper-dark:#0B1524;
  --ink:#E8DFCF;
  --ink-muted:#9DADBF;
  --accent:#8FB3DA;
  --accent-light:#B7CDE6;
  --blueprint:#2A3F5C;
  --blueprint-light:#3B5476;
  --border:#22344D;
  --border-light:#192940;

  --page-frame:rgba(143,179,218,.26);
  --page-light:rgba(143,179,218,.05);
  --page-gutter:rgba(0,0,0,.35);
  --edge-a:#1B2B42;
  --edge-b:#0A1422;
  --dogear-under:#07111F;
  --dogear-crease:rgba(0,0,0,.5);

  --pt-flap-crease:rgba(0,0,0,.5);
  --pt-flap-hl:rgba(174,184,196,.16);
  --pt-flap-mid:rgba(174,184,196,.05);
  --pt-flap-edge:rgba(0,0,0,.25);
}

.loader{display:none}
.site-wrap{animation:none;opacity:1}

.app-main{position:relative}
.app-view{
  display:flex;position:absolute;height:auto;
  top:var(--pg-top);right:var(--pg-right);bottom:var(--pg-bottom);left:var(--pg-left);
  visibility:hidden;z-index:1;
  background-color:var(--paper);
  background-image:
    linear-gradient(90deg,var(--page-gutter),transparent 46px),
    radial-gradient(ellipse 80% 55% at 72% 0%,var(--page-light),transparent 70%);
}
.app-view.is-active{visibility:visible;z-index:2}
.app-view.pt-under{visibility:visible;z-index:2}
.app-view.pt-page{visibility:visible;z-index:3;pointer-events:none}

.app-view::after{content:"";position:absolute;inset:9px;border:1px solid var(--page-frame);pointer-events:none;z-index:5}

.app-view:not(:last-of-type)::before{
  content:"";position:absolute;right:0;bottom:0;z-index:6;pointer-events:none;
  width:calc(30px + var(--pt-pull,0) * 74px);height:calc(30px + var(--pt-pull,0) * 74px);
  background:linear-gradient(315deg,var(--dogear-under) 0 calc(50% - .5px),var(--dogear-crease) 50%,var(--paper-dark) 62%,var(--paper) 100%);
  transition:width .22s var(--ease-soft),height .22s var(--ease-soft);
}

.view-title{font-family:var(--font-serif);font-weight:500;letter-spacing:-.018em;line-height:1.04}
.view-title em{font-style:italic;font-weight:400;color:var(--accent)}
.view-deck{font-family:var(--font-serif);font-style:italic;font-size:.98rem;color:var(--ink-muted)}
.view-rule{background:linear-gradient(90deg,var(--accent),transparent);opacity:.5}
.profile-lede{font-family:var(--font-serif);font-size:.92rem;line-height:1.6}

.view-head[data-sheet]::after{
  content:attr(data-sheet);position:absolute;right:clamp(1.2rem,2.4vw,2.4rem);bottom:.95rem;
  padding:.24rem .55rem;border:1px solid var(--page-frame);
  font:600 .54rem var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);
}

.app-view.is-entering > *{animation:dr-rise .8s var(--ease-soft) both}
.app-view.is-entering > :nth-child(2){animation-delay:.12s}
.app-view.is-entering > :nth-child(3){animation-delay:.22s}
@keyframes dr-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

@media (hover:hover) and (pointer:fine){
  .profile-panel{transition:transform .35s var(--ease-soft),box-shadow .35s var(--ease-soft),border-color .35s}
  .profile-panel:hover{transform:translateY(-2px);border-color:var(--page-frame);box-shadow:0 14px 26px -18px rgba(7,17,31,.55)}
  #blueprint-archive .case-file{transition:box-shadow .4s var(--ease-soft),transform .4s var(--ease-soft)}
  #blueprint-archive .case-file:hover{transform:translateY(-2px);box-shadow:0 26px 44px -26px rgba(7,17,31,.6)}
}

@media (min-width:1025px){
  :root{--pg-top:20px;--pg-right:30px;--pg-bottom:56px;--pg-left:0px;--sidebar-w:318px;--spread-left:20px}
  body{background:var(--navy-deep)}
  .app-main{overflow:visible}

  .app-shell{
    position:relative;
    background:
      radial-gradient(ellipse 70% 55% at 55% 0%,rgba(120,147,172,.2),transparent 70%),
      linear-gradient(rgba(120,147,172,.09) 1px,transparent 1px) 0 0/160px 160px,
      linear-gradient(90deg,rgba(120,147,172,.09) 1px,transparent 1px) 0 0/160px 160px,
      linear-gradient(rgba(120,147,172,.04) 1px,transparent 1px) 0 0/32px 32px,
      linear-gradient(90deg,rgba(120,147,172,.04) 1px,transparent 1px) 0 0/32px 32px,
      linear-gradient(160deg,var(--navy-blueprint),var(--navy-deep) 70%);
  }

  .app-shell::before{
    content:"";position:absolute;z-index:0;
    top:calc(var(--pg-top) - 9px);right:calc(var(--pg-right) - 16px);bottom:calc(var(--pg-bottom) - 11px);left:calc(var(--spread-left) - 12px);
    border-radius:7px;
    background:linear-gradient(90deg,#0A1930,#13305A 55%,#0E2443);
    box-shadow:0 28px 50px -12px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.05),inset -1px 0 0 rgba(201,168,106,.18);
  }

  .app-view{
    border-radius:0 3px 3px 0;
    box-shadow:
      1px 1px 0 var(--edge-a),2px 2px 0 var(--edge-b),3px 2px 0 var(--edge-a),
      4px 3px 0 var(--edge-b),5px 4px 0 var(--edge-a),6px 5px 0 var(--edge-b),
      7px 5px 0 var(--edge-a),20px 24px 34px -14px rgba(0,0,0,.6);
  }

  .app-main > .pt-layer{z-index:950}

  .app-sidebar{
    top:var(--pg-top);bottom:var(--pg-bottom);left:var(--spread-left);
    width:calc(var(--sidebar-w) - var(--spread-left));
    border-right:0;border-radius:3px 0 0 3px;
    overflow-x:hidden;overflow-y:auto;scrollbar-width:none;
    color:var(--ink);
    background-color:var(--paper);
    background-image:
      linear-gradient(270deg,var(--page-gutter),rgba(7,17,31,.04) 22px,transparent 58px),
      radial-gradient(ellipse 85% 55% at 25% 0%,var(--page-light),transparent 70%);
    box-shadow:
      -1px 1px 0 var(--edge-a),-2px 2px 0 var(--edge-b),-3px 2px 0 var(--edge-a),
      -4px 3px 0 var(--edge-b),-5px 4px 0 var(--edge-a),-6px 5px 0 var(--edge-b),
      -7px 5px 0 var(--edge-a),-20px 24px 34px -14px rgba(0,0,0,.6);
  }
  .app-sidebar::-webkit-scrollbar{display:none}

  .app-sidebar::before{content:"";position:absolute;inset:9px;border:1px solid var(--page-frame);pointer-events:none}

  .app-sidebar::after{content:"";position:absolute;top:0;bottom:0;right:0;width:1px;background:linear-gradient(180deg,transparent,var(--page-gutter) 12%,var(--page-gutter) 88%,transparent);pointer-events:none}

  .sidebar-brand-inner{gap:.85rem;margin:0 1.5rem;padding:1.7rem 0 1.15rem;border-bottom:1px solid var(--page-frame)}
  .sidebar-brand-mark img{height:2.7rem;border-radius:50%;box-shadow:0 0 0 1px var(--page-frame),0 0 0 4px color-mix(in srgb,var(--accent) 8%,transparent)}
  .sidebar-brand-title{font-family:var(--font-serif);font-size:1.18rem;font-weight:500;letter-spacing:-.015em;color:var(--ink)}
  .sidebar-brand-sub{margin-top:.15rem;font-size:.5rem;letter-spacing:.2em;color:var(--ink-muted)}

  .sidebar-nav{flex:0 0 auto;gap:0;padding:1.3rem 0 .6rem}
  .sidebar-ref{padding:0 1.5rem .65rem;font:600 .56rem var(--font-mono);letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}

  .nav-item{
    position:relative;display:grid;
    grid-template-columns:2rem minmax(0,1fr) auto;
    grid-template-areas:"num label folio" "num desc desc";
    column-gap:.5rem;row-gap:.12rem;align-items:baseline;
    width:100%;padding:.9rem 1.5rem .9rem 1.55rem;
    border:0;border-left:0;border-radius:0;
    border-bottom:1px dotted color-mix(in srgb,var(--ink) 18%,transparent);
    background:none;color:var(--ink);
    transition:background .25s ease,color .25s ease;
  }
  .nav-item:first-of-type{border-top:1px dotted color-mix(in srgb,var(--ink) 18%,transparent)}
  .nav-item:hover{background:color-mix(in srgb,var(--accent) 6%,transparent);color:var(--ink)}
  .nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
  .nav-item-mark{
    grid-area:num;width:auto;height:auto;border:0;background:none;justify-content:flex-start;
    font:600 .66rem var(--font-mono);letter-spacing:.06em;color:var(--accent);
  }
  .nav-item.is-active .nav-item-mark{border:0;background:none;color:var(--accent)}
  .nav-item-label{
    grid-area:label;display:flex;align-items:baseline;gap:.45rem;min-width:0;
    font:500 1.12rem/1.2 var(--font-serif);letter-spacing:-.01em;
    white-space:nowrap;overflow:hidden;
  }

  .nav-item-label::after{content:"";flex:1 1 auto;min-width:.8rem;border-bottom:1px dotted color-mix(in srgb,var(--ink) 40%,transparent);transform:translateY(-.25em)}
  .nav-item-desc{grid-area:desc;font:italic .84rem/1.3 var(--font-serif);color:var(--ink-muted)}
  .nav-item-folio{grid-area:folio;font:500 .58rem var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted)}
  .nav-item.is-active .nav-item-label{color:var(--accent);font-style:italic}
  .nav-item.is-active .nav-item-folio{color:var(--accent)}

  .nav-item::before{
    content:"";position:absolute;z-index:2;left:.3rem;top:-12px;width:12px;height:calc(100% + 30px);
    background:linear-gradient(90deg,#12355F,#2C67AC 42%,#1A4679 68%,#0F2D52);
    clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 8px),0 100%);
    transform:scaleY(0);transform-origin:50% 0;
    transition:transform .5s var(--ease-soft);pointer-events:none;
  }
  .nav-item.is-active::before{transform:scaleY(1)}
  [data-theme="dark"] .nav-item::before{background:linear-gradient(90deg,#2A5C93,#5F92CC 42%,#3C6FA6 68%,#244F80)}

  .sidebar-titleblock{
    display:grid;grid-template-columns:1fr 1fr;margin:auto 1.5rem 0;
    border:1px solid var(--page-frame);
  }
  .sidebar-titleblock div{padding:.5rem .65rem;border-top:1px solid var(--page-frame)}
  .sidebar-titleblock div:nth-child(-n+2){border-top:0}
  .sidebar-titleblock div:nth-child(even){border-left:1px solid var(--page-frame)}
  .sidebar-titleblock dt{font:600 .48rem var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
  .sidebar-titleblock dd{margin-top:.1rem;font:500 .72rem var(--font-mono);color:var(--ink)}

  .sidebar-footer{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.85rem 1.5rem 1.35rem;border-top:0}
  .sidebar-status{color:var(--ink-muted)}
  .sidebar-footer::after{content:"— ii —";font:italic .82rem var(--font-serif);color:var(--ink-muted)}
  .sidebar-handle{display:none}

  .theme-toggle-fixed{top:auto;bottom:10px;right:20px;background:transparent}
  .theme-toggle-fixed .lamp-icon{background:var(--navy-blueprint);border-color:rgba(174,184,196,.3)}
  .theme-toggle-fixed .lamp-icon svg{stroke:var(--ivory)}
  .theme-toggle-fixed .lamp-label{color:var(--silver)}
  html.dossier-closed:not([data-theme="dark"]) .theme-toggle-fixed .lamp-label{color:#4F5D6E}

  .dossier-bar{
    display:flex;align-items:center;justify-content:space-between;gap:1.2rem;
    position:absolute;z-index:3;left:calc(var(--pg-left) + 4px);right:calc(var(--pg-right) + 104px);bottom:0;
    height:calc(var(--pg-bottom) - 12px);
    color:var(--silver);font:500 .6rem var(--font-mono);letter-spacing:.14em;text-transform:uppercase;
  }
  .dossier-bar__status{display:flex;align-items:center;gap:.55rem;white-space:nowrap}
  .dossier-bar__status [data-dossier-chapter]{color:var(--ivory)}
  .dossier-bar__dot{width:8px;height:8px;border-radius:50%;background:#6BBF8A;box-shadow:0 0 0 3px rgba(107,191,138,.18),0 0 10px rgba(107,191,138,.5)}
  .dossier-bar__sep{color:var(--blue-steel)}
  .dossier-bar__hint{color:rgba(174,184,196,.55);letter-spacing:.12em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dossier-bar__controls{display:flex;align-items:center;gap:.7rem}
  .dossier-bar button{font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}
  .dossier-bar__close{
    display:inline-flex;align-items:center;gap:.45rem;height:30px;padding:0 .8rem;
    border:1px solid rgba(174,184,196,.28);border-radius:6px;
    background:rgba(16,39,71,.65);color:var(--ivory);
    transition:border-color .2s,background .2s,transform .2s var(--ease-soft);
  }
  .dossier-bar__close svg,.dossier-bar__pager svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .dossier-bar__close:hover{border-color:var(--gold);background:rgba(29,78,137,.6);transform:translateY(-1px)}
  .dossier-bar__pager{display:inline-flex;align-items:center;height:30px;border:1px solid rgba(174,184,196,.28);border-radius:6px;background:rgba(16,39,71,.65);overflow:hidden}
  .dossier-bar__pager button{display:grid;place-items:center;width:32px;height:100%;border:0;background:transparent;color:var(--ivory);transition:background .2s,color .2s}
  .dossier-bar__pager button:hover:not(:disabled){background:var(--blue-tech);color:#fff}
  .dossier-bar__pager button:disabled{opacity:.32;cursor:default}
  .dossier-bar__pager [data-dossier-count]{min-width:4.6em;padding:0 .4rem;text-align:center;color:var(--ivory);border-left:1px solid rgba(174,184,196,.2);border-right:1px solid rgba(174,184,196,.2);line-height:30px}
  .dossier-bar button:focus-visible{outline:2px solid var(--gold-light);outline-offset:2px}
}
@media (min-width:1025px) and (max-width:1240px){
  .dossier-bar__hint{display:none}
}

@media (prefers-reduced-motion:reduce){
  .dossier-stage,.dossier-stage *{transition:none!important;animation:none!important}
  .app-view.is-entering > *{animation:none}
  .app-view:not(:last-of-type)::before{transition:none}
  .profile-panel,.profile-panel:hover,#blueprint-archive .case-file,#blueprint-archive .case-file:hover{transform:none;transition:none}
}
