@font-face{font-family:Source;src:url('assets/SourceSans3-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Source;src:url('assets/SourceSans3-Medium.ttf') format('truetype');font-weight:500 700;font-display:swap}
@font-face{font-family:Montserrat;src:url('assets/Montserrat-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--ink:#2c322f;--muted:#73766e;--taupe:#b1a18b;--paper:#faf8f3;--line:#d6d0c6;--page-ratio:210/148;color-scheme:light}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#eeebe5;color:var(--ink);font-family:Source,Arial,sans-serif}body{min-height:100svh;background:radial-gradient(ellipse at 50% 40%,#f8f6f1 0%,#eeeae3 60%,#e5dfd5 100%)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.25;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid #7b6c56;outline-offset:5px}button{border:0}a{color:inherit;text-decoration:none}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.topbar{height:88px;padding:0 clamp(20px,4vw,70px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d9d2c64d}.brand{display:flex;align-items:center;gap:22px}.brand b{font-family:Arial,sans-serif;font-size:39px;font-weight:700;letter-spacing:-2.8px;line-height:1}.brand span{border-left:1px solid #c8bfb0;padding-left:22px;font-size:15px;color:#62675e}.top-actions{display:flex;align-items:center;gap:24px}.tool{display:flex;align-items:center;gap:9px;background:transparent;font-size:14px;padding:8px 0}.tool:hover{color:#7d6b50}
.reader{min-height:calc(100svh - 88px);padding:24px 20px 27px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.edition{font-size:10px;letter-spacing:2.4px;color:#7a7c73;display:flex;align-items:center;gap:12px;margin-bottom:14px}.tricolor{width:27px;height:3px;background:linear-gradient(to right,#258447 0 33.333%,#fff 33.333% 66.666%,#c63139 66.666%);box-shadow:0 0 0 .3px #c5bdb1}
.stage{width:100%;position:relative;display:flex;justify-content:center;align-items:center;flex:1;min-height:200px;padding:16px 60px 25px;max-height:calc(100svh - 280px)}.book-space{width:min(1320px,100%,calc((100svh - 320px) * 2.83784));aspect-ratio:420/148;position:relative;perspective:2400px;perspective-origin:50% 45%;flex-shrink:0}.book{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform 860ms cubic-bezier(.25,.1,.25,1);touch-action:none;user-select:none;-webkit-user-select:none;isolation:isolate}.book[data-view=cover]{transform:translateX(-25%)}.book[data-view=back]{transform:translateX(25%)}.book[data-view=open]{transform:translateX(0)}
.leaf{position:absolute;top:0;width:50%;height:100%;background:var(--paper);box-shadow:0 1px 0 #c7bfb3,0 3px 0 #f7f4ed,0 4px 0 #c7bfb3,0 6px 0 #f2eee6,0 7px 0 #c9c0b1,0 18px 22px -9px #44362248,0 37px 55px -16px #40322434;cursor:grab}.left-leaf{left:0;border-radius:1px 0 0 2px}.right-leaf{left:50%;border-radius:0 1px 2px 0}.leaf img,.face img{width:100%;height:100%;display:block;object-fit:fill;pointer-events:none}.leaf[hidden]{display:none}.crease{position:absolute;inset:0;pointer-events:none}.left-leaf .crease{background:linear-gradient(to left,#322a2029 0%,#55452f0a 2%,transparent 8%)}.right-leaf .crease{background:linear-gradient(to right,#322a2029 0%,#55452f08 2%,transparent 8%)}.book[data-view=cover] .crease,.book[data-view=back] .crease{opacity:.35}.spine{position:absolute;left:50%;top:0;bottom:0;width:1px;transform:translateX(-.5px);background:#3931263d;pointer-events:none;z-index:2}.book:not([data-view=open]) .spine{opacity:0}
.turning-leaf{position:absolute;inset:0 0 0 50%;transform-origin:left center;transform-style:preserve-3d;z-index:5;pointer-events:none}.turning-leaf[hidden]{display:none}.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:var(--paper);box-shadow:3px 5px 10px #30261d22;overflow:hidden}.back{transform:rotateY(180deg)}.turn-shade{position:absolute;inset:0;opacity:var(--shade,0);background:linear-gradient(90deg,#312a2040,transparent 35%,#fdfbf226 70%,#4c403339)}.back .turn-shade{background:linear-gradient(270deg,#312a2040,transparent 45%,#fff3)}.book.is-dragging{cursor:grabbing}.book.is-dragging .leaf{cursor:grabbing}
.arrow{position:absolute;z-index:10;top:50%;margin-top:-24px;width:48px;height:48px;border:1px solid #c9bfb06b;border-radius:50%;background:#f7f4edb0;display:grid;place-items:center;transition:background .2s,border-color .2s}.arrow:hover:not(:disabled){background:var(--paper);border-color:#b2a18a}.previous{left:0}.next{right:0}.arrow svg{width:24px;height:24px}.gesture-hint{font-size:12px;color:#87867d;margin:17px 0 15px;letter-spacing:.1px}.reading-info{display:flex;justify-content:center;align-items:center;gap:11px;min-height:25px;font-size:15px;text-align:center}.reading-info #page-range{font-variant-numeric:tabular-nums;letter-spacing:.9px;font-size:13px;white-space:nowrap}.separator{color:var(--taupe)}#spread-title{font-family:Montserrat,Arial,sans-serif;font-size:13px}.dots{display:flex;align-items:center;gap:3px;margin:14px 0 18px}.dot{padding:8px;background:transparent;display:grid;place-items:center}.dot::after{content:'';width:5px;height:5px;background:#b8b0a3;border-radius:50%;transition:all .2s}.dot[aria-current=true]::after{background:#656b5e;width:22px;border-radius:5px}.dot:hover::after{background:#656b5e}.bottom-actions{display:flex;gap:12px}.pill{background:transparent;border:1px solid #c7beaf;border-radius:30px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 18px;font-size:13px;min-height:39px}.pill:hover{background:#faf8f3}.pill svg{width:16px;height:16px}
dialog{border:none;color:var(--ink);background:var(--paper);padding:0}dialog::backdrop{background:#24272180;backdrop-filter:blur(5px)}.index-dialog{width:min(1120px,94vw);max-height:90svh;border-radius:3px;box-shadow:0 30px 80px #25261d40}.dialog-heading{display:flex;align-items:center;justify-content:space-between;padding:28px 30px 20px;position:sticky;top:0;background:var(--paper);z-index:2}.eyebrow{font-size:10px;letter-spacing:2px;margin:0 0 6px;color:var(--muted)}h1{font:400 24px Montserrat,sans-serif;margin:0}.close{font:300 31px Source,sans-serif;border-radius:50%;width:42px;height:42px;background:transparent}.close:hover{background:#ece7de}.page-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 18px;padding:8px 30px 32px}.thumbnail{background:transparent;text-align:left;padding:0;display:flex;flex-direction:column;gap:8px}.thumbnail img{width:100%;aspect-ratio:210/148;box-shadow:0 4px 8px #42372217;border:1px solid #e2dcd1;transition:transform .2s}.thumbnail:hover img{transform:translateY(-4px)}.thumbnail[aria-current=true] img{outline:2px solid var(--taupe);outline-offset:2px}.thumbnail-label{display:flex;gap:8px;font-size:13px}.thumbnail-label b{color:#9b8b74;font-size:11px;font-weight:400;margin-top:1px}
.zoom-dialog{width:96vw;height:94svh;max-width:none;max-height:none;border-radius:3px;overflow:hidden;flex-direction:column}.zoom-dialog[open]{display:flex}.zoom-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 16px 8px 22px;border-bottom:1px solid var(--line);background:#faf8f3;flex-shrink:0}.zoom-toolbar strong{font-size:15px;font-weight:500}.zoom-toolbar>div{display:flex;align-items:center;gap:12px}.zoom-size{border:1px solid #c7beaf;background:transparent;border-radius:30px;min-width:62px;padding:5px 12px;font-size:13px}.zoom-scroll{flex:1;overflow:auto;overscroll-behavior:contain;background:#e5dfd5}.zoom-pages{display:flex;align-items:flex-start;justify-content:center;gap:1px;width:max-content;min-width:100%;padding:24px}.zoom-pages img{display:block;flex:0 0 auto;width:min(1000px,75vw);height:auto;box-shadow:0 8px 22px #30261d23}.zoom-pages.enlarged img{width:min(1480px,115vw);max-width:none}.zoom-navigation{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 16px;background:#faf8f3;flex-shrink:0}.zoom-navigation span{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.notice{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:100;background:#2c322f;color:#faf8f3;padding:12px 20px;border-radius:8px;max-width:90vw;text-align:center;font-size:14px}
.exit-presentation{display:none}body.presentation .exit-presentation{display:inline-flex}body.presentation .topbar{display:none}body.presentation .reader{min-height:100svh}body.presentation .stage{max-height:calc(100svh - 190px)}body.presentation .book-space{width:min(1460px,100%,calc((100svh - 220px) * 2.83784))}
@media(min-width:1600px){.stage{padding-left:85px;padding-right:85px}.reader{padding-left:50px;padding-right:50px}}
@media(max-width:800px){.topbar{height:72px;padding:0 20px}.brand{gap:15px}.brand b{font-size:33px}.brand span{padding-left:15px}.top-actions{gap:18px}.reader{padding:22px 14px;min-height:calc(100svh - 72px)}.stage{padding:18px 36px 20px;min-height:180px;flex:0;margin-top:auto;margin-bottom:0;max-height:none}.book-space{width:100%}.arrow{width:32px;height:40px;border-radius:20px;margin-top:-20px}.arrow svg{width:20px}.edition{margin-bottom:5px}.bottom-actions{margin-bottom:auto}.gesture-hint{font-size:11px;margin-top:15px}.reading-info{max-width:90%;gap:8px}.page-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:8px 20px 25px}.dialog-heading{padding:20px}.zoom-pages{flex-direction:column;gap:22px;align-items:center;padding:18px}.zoom-pages img{width:calc(94vw - 40px);max-width:1000px}.zoom-pages.enlarged img{width:140vw;max-width:none}.zoom-navigation .pill{padding:6px 12px}.tool span{display:none}.tool svg{width:22px}.dots{margin-bottom:15px}}
@media(max-width:480px){.edition{font-size:8px;letter-spacing:1.7px}.reader{padding-left:10px;padding-right:10px}.stage{padding:15px 23px 20px}.arrow{width:26px;background:#f7f4ed66;border:none}.reading-info{flex-wrap:wrap;gap:5px}#spread-title{width:100%;font-size:12px}.separator{display:none}.page-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.brand span{font-size:13px}.gesture-hint{font-size:10px}.book-space{min-width:0}.zoom-toolbar strong{font-size:13px}.zoom-navigation span{display:none}h1{font-size:21px}}
@media(max-height:540px) and (orientation:landscape){.topbar{height:48px}.brand b{font-size:29px}.reader{min-height:calc(100svh - 48px);padding-top:8px;padding-bottom:9px}.edition,.gesture-hint{display:none}.stage{min-height:0;flex:1;margin:0;padding:8px 40px 16px;max-height:calc(100svh - 148px)}.book-space{width:min(100%,calc((100svh - 178px) * 2.83784))}.dots{margin:4px 0}.reading-info{font-size:11px;min-height:20px}.bottom-actions{position:absolute;bottom:10px;right:18px;margin:0}.pill{padding:5px 11px;min-height:29px;font-size:11px}.reading-info #spread-title{font-size:11px}.edition{margin:0}.top-actions{gap:15px}body.presentation .book-space{width:min(100%,calc((100svh - 100px) * 2.83784))}body.presentation .stage{max-height:calc(100svh - 65px)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.book,.dot::after,.thumbnail img{transition:none}}

.brand img{display:block;width:82px;height:auto}.variant-switch{display:flex;gap:4px;padding:4px;border:1px solid #d3cbbb;border-radius:24px;background:#f8f5ef}.variant{padding:6px 15px;border-radius:20px;background:transparent;color:#77766e;font-size:13px;min-height:32px}.variant b{font-weight:500;margin-right:5px}.variant[aria-pressed=true]{background:#2c322f;color:#faf8f3}.variant:hover:not([aria-pressed=true]){background:#e8e1d5;color:#2c322f}.review-note{font-size:11px;margin:10px 0 0;color:#7a7b72;text-align:center}.reader>.edition{margin-bottom:10px}.stage{max-height:calc(100svh - 340px)}.book-space{width:min(1320px,100%,calc((100svh - 385px)*2.83784))}.bottom-actions{flex-wrap:wrap;justify-content:center}.kit-dialog{width:min(1180px,96vw);max-height:92svh;border-radius:4px;overflow:auto}.card-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:18px 30px;background:#e9e4dc}.card-pair figure{margin:0}.card-pair img{width:100%;display:block;box-shadow:0 7px 20px #352c2524}.card-pair figcaption{margin-top:12px;font-size:13px;color:#6d7067}.dialog-foot{padding:20px 30px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.dialog-foot p{font-size:13px;color:#6d7067;margin:0;max-width:430px}.comparison{width:100%;display:block}.notes-dialog{width:min(720px,94vw);max-height:90svh;overflow:auto;border-radius:4px}.notes-body{padding:0 30px 25px;font-size:16px;line-height:1.6}.notes-body li{margin-bottom:12px}.source-links{font-size:13px}.source-links a{text-decoration:underline;text-underline-offset:3px}.notes-body strong{font-weight:600}
@media(max-width:800px){.book-space{width:100%}.stage{max-height:none;margin-top:20px}.reader{justify-content:flex-start}.bottom-actions{margin-bottom:10px;gap:8px}.bottom-actions .pill{padding:7px 12px;font-size:12px}.review-note{max-width:310px;line-height:1.4}.card-pair{grid-template-columns:1fr;padding:20px;gap:25px}.dialog-foot{padding:20px}.notes-body{padding:0 20px 20px}.brand img{width:72px}.kit-dialog h1{font-size:20px}}
@media(max-height:540px) and (orientation:landscape){.variant-switch{position:absolute;left:50%;top:6px;transform:translateX(-50%);z-index:20;border:0;padding:0}.variant{padding:3px 10px;min-height:29px;font-size:11px}.review-note{display:none}.stage{max-height:calc(100svh - 155px);margin-top:0}.book-space{width:min(100%,calc((100svh - 185px)*2.83784))}.bottom-actions{bottom:7px;right:12px;gap:6px}.bottom-actions .pill{padding:5px 9px;font-size:10px}.reading-info{align-self:flex-start;margin-left:30px}.dots{margin:2px 0}.topbar .brand span{display:none}}
body.presentation .variant-switch,body.presentation .review-note{display:none}

/* Final portfolio: one publication, with generous reading space. */
.portfolio-label{font-family:Montserrat,Arial,sans-serif;font-size:12px;letter-spacing:.35px;color:#686b64;margin:4px 0 10px;text-align:center}
.stage{max-height:calc(100svh - 285px)}
.book-space{width:min(1320px,100%,calc((100svh - 320px)*2.83784))}
.gesture-hint{color:#686b64}
@media(max-width:800px){.book-space{width:100%}.stage{max-height:none;margin-top:20px}.portfolio-label{font-size:11px;line-height:1.5}.reader{justify-content:center}}
@media(max-height:540px) and (orientation:landscape){.portfolio-label{display:none}.stage{max-height:calc(100svh - 145px)}.book-space{width:min(100%,calc((100svh - 175px)*2.83784))}}
body.presentation .portfolio-label{display:none}

/* Responsive reader: full pages, unchanged approved colours. */
.leaf img,.face img{object-fit:contain;background:var(--paper)}
.book{isolation:auto}
body.single-page .book-space{width:100%;aspect-ratio:210/148}
.book[data-view=single]{transform:none}
.book[data-view=single] .right-leaf{left:0;width:100%;border-radius:1px}
.book[data-view=single] .crease,.book[data-view=single] .spine{display:none}
body.single-page .book{touch-action:pan-y;transition:none}
body.single-page .reader{justify-content:flex-start;padding-top:28px}
body.single-page .stage{flex:0;min-height:0;margin:25px 0 0;padding:18px 28px 24px}
body.single-page .dots{flex-wrap:wrap;justify-content:center;max-width:320px;gap:1px}
body.single-page .dot{padding:8px 6px}
body.single-page .bottom-actions{margin:0 0 24px}
body.single-page .reading-info{max-width:100%;padding-inline:8px}
body.single-page #spread-title{font-size:12px;line-height:1.5}
@media(max-width:700px){.zoom-toolbar{padding-left:12px;gap:8px}.zoom-toolbar strong{font-size:13px;min-width:0}.zoom-toolbar>div{gap:4px;flex-shrink:0}.zoom-size{min-width:50px;padding-inline:8px}.zoom-pages{padding:12px;align-items:flex-start}.zoom-pages img{width:calc(96vw - 24px)}.zoom-pages.enlarged img{width:140vw}.zoom-navigation{padding:9px}.zoom-navigation .pill{font-size:12px}}
