/* R4: one assembly, with simultaneous slow motion and an immediate normal reply. */
/* Visibility preserves the page block's 3D faces; opacity/filter would flatten it. */
html.atlas-book-loading #book-object,html.atlas-book-loading #book-object *{visibility:hidden!important}
.book-edge.book-image-fallback{background:repeating-linear-gradient(#e5dbc4 0 2px,#cdbf9f 2px 3px);border:1px solid #c5b89a}
.book-edge-spine.book-image-fallback{background:linear-gradient(90deg,#a77634,#8d5f27)}
#book-object.book-font-fallback :is(.book-spine,.book-edition,.book-bottom,.book-marker){font-family:monospace}
#desk{gap:clamp(44px,6.5svh,70px);padding:35px 50px 50px;justify-content:center}
#desk>.eyebrow{position:relative;z-index:3;font-size:14px;line-height:1.45;letter-spacing:.12em;flex:none}
#book-object{--book-h:min(62svh,650px,103vw);--book-depth:calc(var(--book-h)*.06);--book-perspective:6000px;position:relative;transform-style:preserve-3d;height:var(--book-h);width:calc(var(--book-h)*.72);margin:0 3% calc(var(--book-h)*.02) 0;flex:none;transform:perspective(var(--book-perspective)) rotateY(-15deg) rotateX(7deg) rotateZ(-4deg);transition:transform .3s}
#open-book,#open-book:hover{--book-h:inherit;width:100%;height:100%;margin:0;transform:none;box-shadow:none;position:relative;z-index:1;transition:none}
/* One actual depth axis. Do not add a filter/isolation here: either would flatten
   these faces back into the old drawing. The rear plane owns the soft shadow. */
.book-depth{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
.book-edge{position:absolute;display:block;max-width:none;transform-origin:0 0;pointer-events:none}
.book-edge-bottom,.book-edge-top{left:0;width:100%;height:var(--book-depth);transform:rotateX(-90deg)}
.book-edge-bottom{top:100%}.book-edge-top{top:0}
.book-edge-fore,.book-edge-spine{top:0;width:var(--book-depth);height:100%;transform:rotateY(90deg)}
.book-edge-fore{left:100%}.book-edge-spine{left:0}
.book-back{position:absolute;inset:0;background:linear-gradient(90deg,#8d5f27 0 14%,#b1a180 14%);border-radius:0 3px 3px 0;transform:translateZ(calc(-1 * var(--book-depth)));box-shadow:24px 26px 22px #071b2355}
/* The tab's root shares the actual page depth, rather than a screen-space offset. */
#book-object>.book-marker{z-index:2;left:100%;right:auto;transform-style:preserve-3d;transform:translateZ(calc(-1 * var(--book-depth) * var(--bookmark-page) / 288));width:9%;min-width:max-content;font-size:calc(var(--book-h)*.021);padding:2% 1.8%;min-height:0;text-align:center}
#book-object>.marker-controls{--bookmark-page:84;top:16%}#book-object>.marker-transactions{--bookmark-page:146;top:42%}
#book-object>.book-marker:hover{background:#c99130}
/* The visible paper stays within the pages. Only the transparent finger target
   sits just in front of the cover, which cannot occlude its centered padding.
   A color hover avoids the flattening that a CSS filter would introduce. */
#book-object>.marker-controls:after{content:'';position:absolute;left:50%;top:50%;width:max(100%,56px);height:max(100%,56px);transform:translate(-50%,-50%) translateZ(calc(var(--book-depth) * var(--bookmark-page) / 288 + 1px))}
#book-object .book-spine{position:relative;background:linear-gradient(90deg,#8d5f27,#c59a50 55%,#a77634);color:#f5efd9;border-right-color:#8d5f27}
#open-book .book-cover{--cover-title-gap:calc(var(--book-h)*.038)}
#open-book .book-cover strong{font-size:calc(var(--book-h)*.054);line-height:1.03;letter-spacing:-.047em;margin-top:var(--cover-title-gap)}
#open-book .book-cover strong>span{display:block;white-space:nowrap}
#open-book .cover-art{flex:1;min-height:0;width:100%;position:relative}
/* Match the visible gaps above and below the capitals, including the SVG's small top inset. */
#open-book .cover-drawing{position:absolute;inset:auto;top:calc(var(--cover-title-gap) + var(--book-h)*.003);left:0;width:100%;height:88%;max-height:100%;object-fit:contain;object-position:center top;margin:0}
#open-book .book-bottom{margin-top:0;flex:none}
.controls-show .controls{display:flex;flex-wrap:nowrap;align-items:stretch;gap:8px}
#speed-controls{display:grid;grid-template-columns:repeat(2,1fr);align-items:stretch;gap:0;min-width:0}
.controls-show #explode,#speed-controls button{min-height:44px;white-space:nowrap;font:12px AtlasMono,monospace;letter-spacing:.03em;padding:11px 14px;justify-content:center}
#speed-controls button{border:1px solid #567e70;background:transparent;color:#456159}
#speed-controls button+button{border-left:0}
#speed-controls button[aria-pressed="true"]{background:#e9ce92;color:#493b22;border-color:#bc9451}
#speed-controls button:hover{background:#e1e8d8}
#speed-controls button[aria-pressed="true"]:hover{background:#efd7a1}
#viewport-tools{position:absolute;top:12px;left:12px;display:flex;align-items:center;gap:0;background:#294747;color:#fff2d4;border:2px solid #bd8a34;z-index:8;box-shadow:0 0 0 3px #f3f0e7,0 3px 8px #243a3e35}
#viewport-tools button{min-height:34px;min-width:34px;padding:5px 9px;background:none;color:#ffe09b;border:0;font:15px AtlasMono,monospace}
#viewport-tools button:hover:not(:disabled){background:#42675b}#viewport-tools output{font:10px AtlasMono,monospace;min-width:39px;text-align:center;color:#fff2d4}
#viewport-tools #zoom-fit,#viewport-tools #service-close{font-size:10px;border-left:1px solid #d1b47580;letter-spacing:.03em;color:#fff2d4}
.controls-show #canvas-slot>canvas{touch-action:none;cursor:grab}.controls-show #canvas-slot>canvas.is-dragging{cursor:grabbing}
.controls-show #canvas-slot>canvas:focus-visible{outline:2px solid #b7842c;outline-offset:-3px}
#loading-plate{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;pointer-events:none;opacity:1;transition:opacity 140ms ease-out}
#loading-plate.ready{opacity:0}
@media(prefers-reduced-motion:reduce){#loading-plate{transition:none}}
.service-controls{overflow:hidden}.service-note{bottom:10px}
@media(max-width:900px){
 #desk{gap:36px;padding:24px 34px 40px}#book-object{--book-h:min(61svh,105vw,610px)}
 .controls-show #explode,#speed-controls button{font-size:11px;padding:9px 10px;min-height:44px}
 #viewport-tools{top:8px;left:8px}#viewport-tools button{min-height:30px;min-width:30px;font-size:13px;padding:4px 7px}
}
@media(max-width:600px){#desk>.eyebrow{font-size:12px;letter-spacing:.1em}#desk>.eyebrow>.publisher-name,#desk>.eyebrow>.publisher-series{display:block}#desk>.eyebrow>.publisher-divider{display:none}}
@media(max-height:540px){#desk{gap:24px;padding:18px}#book-object{--book-h:min(57svh,95vw)}#desk>.eyebrow{font-size:11px}#viewport-tools{top:5px;left:5px}#viewport-tools button{min-height:27px;min-width:27px;font-size:12px;padding:4px 6px}}
@media(prefers-reduced-motion:reduce){#book-object{transition:none}}

@media(max-width:640px){.controls-show .controls{width:100%;gap:6px}.controls-show #explode{flex:1;min-width:0}#speed-controls{flex:2}#speed-controls button{flex:1;min-width:0}.controls-show #explode,#speed-controls button{font-size:10px;padding:8px 6px;min-height:44px;letter-spacing:0}.controls-show #position{margin-left:auto;font:10px AtlasMono,monospace}}


/* Removing the sidebar also shortens the masthead, title and footer rules. */
#reader.controls-show{width:min(100vw,1260px);margin-inline:auto}
#reader.controls-show[open]{grid-template-rows:auto auto minmax(0,1fr) auto}
#reader.controls-show #position{margin-left:auto;font:12px AtlasMono,monospace;white-space:nowrap}
#reader.controls-show .reader-footer{border-top:1px solid var(--rule)}
#reader.controls-show .plate-body{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:0}
#reader.controls-show .annotations{display:none}
#reader.controls-show #status{position:absolute;width:1px;height:1px;min-height:0;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#reader.controls-show .drawing-index{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;min-height:46px;gap:8px;padding:5px 0}
#reader.controls-show #viewport-tools{position:relative;top:auto;left:auto;grid-column:1;grid-row:1;justify-self:start;pointer-events:auto;box-shadow:0 2px 6px #243a3e20}
#reader.controls-show #figure-id{grid-column:2;text-align:center}
#reader.controls-show #view-name{grid-column:3;justify-self:end;text-align:right}
@media(max-width:600px){#reader.controls-show .drawing-index{grid-template-columns:auto 1fr;gap:4px 10px}#reader.controls-show #viewport-tools{grid-row:1}#reader.controls-show #view-name{grid-column:2;grid-row:1;font-size:8px}}
@media(min-width:480px) and (max-width:740px) and (max-height:420px){#reader.controls-show figure{grid-template-rows:auto minmax(0,1fr)}}

/* Phones use the drawing's pinch gesture. Reclaim the toolbar's row height,
   while retaining the panel-close action when the utility panel is opened. */
@media(max-width:640px),(max-width:900px) and (pointer:coarse){
 #reader.controls-show #explode,#reader.controls-show #speed-controls button{min-height:32px;padding:5px 6px;line-height:16px}
 #reader.controls-show .drawing-index{min-height:22px;padding:2px 0;grid-template-columns:1fr auto;gap:4px 10px}
 #reader.controls-show #view-name{grid-column:2;grid-row:1}
 #reader.controls-show #viewport-tools{display:none}
 #reader.controls-show #viewport-tools:has(#service-close:not([hidden])){display:flex}
 #reader.controls-show #viewport-tools>:not(#service-close){display:none}
 #reader.controls-show .figure-footer--hint{display:none}
}

/* Book covers use a quiet return arrow; reader headers retain their own Close. */
#back-to-shelf{position:fixed;top:max(14px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));z-index:30;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:transparent;color:#f4ead2;font:28px/1 AtlasMono,monospace;text-decoration:none;cursor:pointer}
#back-to-shelf:hover{color:#e0b95c}
#back-to-shelf:focus-visible{outline:2px solid #e0b95c;outline-offset:2px}
#back-to-shelf[hidden],body:has(dialog[open]) #back-to-shelf{display:none}
