/* THE KI · mockup v1 (2-nov-2026) — fable-first site with the archive graph as spine.
   System fonts only (production self-hosts TikTok Sans + Inter to fix the 3.0 s mobile LCP). */
:root{
  --paper:#ECE9DF; --paper-hi:#F5F3EC; --ink:#151515; --night:#0E1A1F; --night-2:#16272D;
  --mute:#6C6A64; --rule:#AAA79E; --blue:#4564FF; --blue-lt:#8396FF;
  --luz:#D79416; --agua:#315CF4; --aire:#8396FF; --tierra:#8D4B34; --misterio:#B13A2D;
  --sand:#E2B877; --pad:clamp(18px,4vw,56px);
  --serif:Georgia,"Iowan Old Style","Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Inter,Arial,sans-serif;
  --display:"Arial Black","Helvetica Neue",-apple-system,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{background:var(--paper);color:var(--ink);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
/* paper grain, pure CSS/SVG, no image request */
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.35;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .3 0 0 0 0 .28 0 0 0 0 .22 0 0 0 .18 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
main,header,footer{position:relative;z-index:1}
a{color:inherit}
img{display:block;max-width:100%}
.wrap{max-width:1240px;margin:0 auto;padding:0 var(--pad)}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

/* ---- Rótulo C: every word on its own ink tile, like the reels ---- */
.rotulo{display:flex;flex-wrap:wrap;gap:.18em .16em;font:700 1em/1 var(--serif);font-style:italic;letter-spacing:-.01em}
.rotulo span{background:var(--ink);color:var(--paper-hi);padding:.16em .3em .2em;display:inline-block;transform:rotate(var(--r,0deg))}
.rotulo.on-night span{background:#050a0c}
h1.rotulo{font-size:clamp(34px,6.4vw,78px)}
h2.rotulo{font-size:clamp(24px,3.6vw,42px)}

/* ---- header ---- */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px var(--pad);max-width:1240px;margin:0 auto}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.logo{background:var(--ink);color:var(--paper);font:900 17px/1 var(--display);padding:7px 10px 6px;transform:rotate(-4deg);letter-spacing:-.5px;display:inline-block}
.brand small{font:600 12px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.top nav{display:flex;gap:clamp(10px,2.2vw,26px);font:600 14px var(--sans)}
.top nav a{text-decoration:none;padding:6px 0;border-bottom:2px solid transparent}
.top nav a:hover,.top nav a[aria-current]{border-color:var(--ink)}
@media(max-width:640px){.top{flex-wrap:wrap}.top nav{width:100%;justify-content:space-between;border-top:1px solid var(--rule);padding-top:10px}}

/* ---- hero (compact; the shelf comes first on mobile) ---- */
.hero{padding-top:clamp(18px,4vw,48px);padding-bottom:18px}
.hero p.lead{font:400 clamp(17px,2vw,21px)/1.45 var(--serif);max-width:34ch;margin-top:16px;color:#2b2a27}
.hero .meta{margin-top:10px;font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}

/* ---- shelf of fables ---- */
.shelf{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:clamp(10px,1.6vw,20px);overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 2px 18px;-webkit-overflow-scrolling:touch}
@media(max-width:760px){.shelf{grid-auto-columns:44%}.pages{grid-auto-columns:78%}}
.fable{scroll-snap-align:start;text-decoration:none;display:block}
.fable .poster{position:relative;aspect-ratio:9/16;overflow:hidden;background:var(--night);box-shadow:0 1px 0 rgba(0,0,0,.08),6px 8px 0 -2px rgba(21,21,21,.12);transition:transform .25s}
.fable:hover .poster{transform:translateY(-4px) rotate(-.6deg)}
.fable .poster img{width:100%;height:100%;object-fit:cover}
.graph .node text{font-size:var(--gf,15px)}
.fable .date{font:600 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-top:9px}
.fable .line{font:400 14px/1.35 var(--serif);margin-top:3px}
.badge{position:absolute;top:10px;left:10px;background:var(--luz);color:var(--ink);font:800 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:5px 8px;transform:rotate(-3deg)}
.fable.next .poster{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;background:radial-gradient(circle at 50% 30%,#22363d,var(--night));color:var(--paper);text-align:center;padding:14px}
.fable.next .moon{width:46px;height:46px;border-radius:50%;background:#efe6c8;box-shadow:0 0 30px 6px rgba(239,230,200,.25)}
.fable.next .rotulo{font-size:15px;justify-content:center}
.fable.next .rotulo span{background:#050a0c}

/* ---- section heads ---- */
.sec{padding-top:clamp(40px,7vw,90px);padding-bottom:clamp(40px,7vw,90px)}
.kicker{font:700 12px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:12px}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.more{font:700 14px var(--sans);text-decoration:none;border-bottom:2px solid currentColor;padding-bottom:2px}

/* ---- night band: who lives here ---- */
.night{background:var(--night);color:var(--paper);position:relative;overflow:hidden}
.night::after{content:"";position:absolute;left:0;right:0;top:-1px;height:22px;background:var(--paper);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 22' preserveAspectRatio='none'%3E%3Cpath d='M0 0h1200v8c-40 6-70-4-110 3s-60 9-100 2-80 6-120 1-70-7-110 0-60 10-100 3-90-5-130 2-60 6-100 0-70 5-110 2-90-6-130 0-60 7-100 2-50-4-90 1V0z'/%3E%3C/svg%3E") 0 0/100% 100%;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 22' preserveAspectRatio='none'%3E%3Cpath d='M0 0h1200v8c-40 6-70-4-110 3s-60 9-100 2-80 6-120 1-70-7-110 0-60 10-100 3-90-5-130 2-60 6-100 0-70 5-110 2-90-6-130 0-60 7-100 2-50-4-90 1V0z'/%3E%3C/svg%3E") 0 0/100% 100%}
.night .kicker{color:#93a3a6}
.night p{color:#d9d3c2}
.graph-shell{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}
@media(max-width:900px){.graph-shell{grid-template-columns:1fr}}
.graph{width:100%;height:auto;display:block;touch-action:manipulation;user-select:none}
.graph .star{fill:#cfd6cf}
.graph .star.sel{fill:#f3ead0}
.graph .star.origin{fill:var(--luz)}
.graph a.work:hover .star,.graph a.work:focus .star{fill:#fff}
.graph .tie{stroke:#efe6c8;stroke-width:1.2;stroke-dasharray:3 5;opacity:.55}
.graph .node{cursor:pointer}
.graph .node .ring{fill:none;stroke-width:3}
.graph .node:hover .ring,.graph .node.on .ring{stroke-width:5}
.graph .node text{font:700 italic var(--gf,15px) var(--serif);fill:var(--paper-hi)}
.graph .node .tag{fill:#050a0c}
.graph .next circle{fill:none;stroke:#efe6c8;stroke-dasharray:2 4;animation:breathe 3.2s ease-in-out infinite}
.graph .next text{font:600 12px var(--sans);fill:#93a3a6;letter-spacing:.08em}
@keyframes breathe{50%{opacity:.35}}
.graph .twinkle{animation:tw 4s ease-in-out infinite}
@keyframes tw{50%{opacity:.25}}
.card{background:var(--night-2);border:1px solid #2a3d43;padding:20px;min-height:260px}
.card img{width:92px;height:92px;border-radius:50%;object-fit:cover;border:3px solid var(--c,#efe6c8)}
.card h3{font:700 italic 24px/1.15 var(--serif);margin:14px 0 6px}
.card .from{font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:#93a3a6;margin-bottom:12px}
.card p{font:400 15px/1.5 var(--serif)}
.card .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.btn{display:inline-flex;align-items:center;gap:8px;font:700 14px var(--sans);text-decoration:none;padding:10px 14px;border:2px solid currentColor;background:none;color:inherit;cursor:pointer}
.btn.solid{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.night .btn.solid{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.sound{font:600 13px var(--sans);color:#d9d3c2;background:none;border:1px solid #3a4f55;padding:8px 12px;cursor:pointer}
.sound[aria-pressed=true]{background:#efe6c8;color:var(--ink)}
.cast-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px 20px;margin-top:22px;font:400 15px var(--serif)}
.cast-list a{color:var(--paper);text-decoration:none;border-bottom:1px solid #3a4f55}
.legend{font:400 13px/1.5 var(--sans);color:#93a3a6;margin-top:10px;max-width:60ch}

/* ---- archive ---- */
.archive-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(20px,4vw,60px);align-items:center}
@media(max-width:820px){.archive-grid{grid-template-columns:1fr}}
.loops{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.loops a{aspect-ratio:1;background:#d8d3c4 center/cover;display:block;position:relative;overflow:hidden}
.loops a span{position:absolute;left:6px;bottom:6px;background:var(--ink);color:var(--paper);font:700 italic 11px var(--serif);padding:2px 5px}
.big-num{font:900 clamp(44px,7vw,92px)/.9 var(--display);letter-spacing:-.03em}
.readings{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.readings a{font:600 13px var(--sans);text-decoration:none;border:1px solid var(--ink);padding:7px 11px}

/* ---- sunday letter ---- */
.letter{background:var(--paper-hi);border:1px solid var(--rule);padding:clamp(22px,4vw,44px);display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}
@media(max-width:760px){.letter{grid-template-columns:1fr}}
.letter form{display:flex;gap:8px;flex-wrap:wrap}
.letter input{font:16px var(--sans);padding:11px 12px;border:2px solid var(--ink);background:#fff;min-width:240px}

/* ---- fable page ---- */
.fable-hero{padding-left:0;padding-right:0;display:grid;grid-template-columns:minmax(260px,400px) 1fr;gap:clamp(22px,5vw,70px);align-items:start;padding:clamp(18px,4vw,48px) 0}
@media(max-width:820px){.fable-hero{grid-template-columns:1fr}}
.player{position:relative;aspect-ratio:9/16;background:var(--night);max-height:78vh;margin:0 auto;width:100%}
.player video,.player img{width:100%;height:100%;object-fit:cover}
.player .play{position:absolute;inset:0;margin:auto;width:84px;height:84px;border-radius:50%;border:0;background:rgba(21,21,21,.82);color:var(--paper);font:700 13px var(--sans);cursor:pointer}
.facts{display:flex;flex-wrap:wrap;gap:6px 16px;font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin:16px 0 22px}
.story{font:400 clamp(19px,2.2vw,24px)/1.55 var(--serif);max-width:30ch}
.story p+p{margin-top:.15em}
.made{font:400 14px/1.5 var(--sans);color:var(--mute);max-width:52ch;margin-top:22px;border-left:3px solid var(--rule);padding-left:12px}
.pages{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,300px);gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:16px}
.pages figure{scroll-snap-align:start}
.pages img{aspect-ratio:4/5;object-fit:cover;width:100%;height:auto;box-shadow:5px 6px 0 -1px rgba(21,21,21,.12)}
.pages.tall img{aspect-ratio:9/16}
.crumbs{font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--mute);padding-top:14px}.crumbs a{color:inherit}
.pages figcaption{font:600 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-top:8px}
.born{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center;background:var(--night);color:var(--paper);padding:clamp(20px,3vw,34px)}
@media(max-width:640px){.born{grid-template-columns:1fr}}
.born img{width:110px;height:110px;border-radius:50%;object-fit:cover;border:3px solid var(--agua)}
.pager{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pager a{display:block;text-decoration:none;border-top:2px solid var(--ink);padding-top:10px;font:700 italic 20px var(--serif)}
.pager a small{display:block;font:600 11px var(--sans);font-style:normal;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.pager a.next{text-align:right}

/* ---- footer ---- */
footer{border-top:1px solid var(--rule);margin-top:40px;padding:32px 0 60px;font:400 14px/1.6 var(--sans);color:var(--mute)}
footer .cols{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px}
@media(max-width:760px){footer .cols{grid-template-columns:1fr}}
footer b{color:var(--ink)}

/* ---- design notes for David (mockup only) ---- */
.note{display:none;background:#FFE58A;color:#2a2200;font:500 13px/1.45 var(--sans);padding:9px 12px;border-left:4px solid #C79A00;margin:10px 0;max-width:70ch}
.note b{font-weight:800}
body.notes .note{display:block}
.notes-toggle{position:fixed;right:14px;bottom:14px;z-index:50;background:#FFE58A;color:#2a2200;border:2px solid #2a2200;font:800 13px var(--sans);padding:10px 14px;cursor:pointer;box-shadow:3px 3px 0 #2a2200}

/* ==== recortables · paper cut-out language (2-nov-2026, David) ====
   Frame: a cut-out = a paper border (white padding) + a hand-cut edge (clip-path polygon from cutEdges() in theki.js)
   + a lifted shadow. clip-path also clips shadows, so the shadow always lives on the parent (.cutcard / nav / svg).
   Body text is never rotated; only labels, buttons, cards and images tilt a little. */
:root{--card:#FBF8F0;--cut-shadow:drop-shadow(1px 2px 1px rgba(40,30,15,.2)) drop-shadow(4px 8px 9px rgba(40,30,15,.18));
  --torn:3px 7px 2px 6px/6px 2px 7px 3px;--cork:#C39A6B}
.cutcard{position:relative;filter:var(--cut-shadow)}
.cut{background:var(--card);padding:8px;clip-path:polygon(0 1%,99% 0,100% 99%,1% 100%)}
.tape{position:absolute;z-index:2;top:-11px;left:calc(50% - 36px);width:72px;height:24px;background:rgba(232,220,178,.78);
  transform:rotate(-5deg);clip-path:polygon(0 8%,6% 0,12% 10%,18% 0,82% 0,88% 10%,94% 0,100% 8%,100% 92%,94% 100%,88% 90%,82% 100%,18% 100%,12% 90%,6% 100%,0 92%);
  box-shadow:inset 0 0 0 40px rgba(255,255,255,.08)}
.pinned::after{content:"";position:absolute;z-index:3;top:-6px;right:14%;width:14px;height:14px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#e46a5c,#B13A2D 60%,#7c2219);box-shadow:1px 3px 3px rgba(0,0,0,.35)}

/* logo: a stamped label cut out of black card */
.logo{border-radius:var(--torn);box-shadow:0 0 0 3px var(--card),3px 5px 7px rgba(40,30,15,.3)}
/* nav: paper strips */
.top nav{filter:var(--cut-shadow);gap:clamp(8px,1.6vw,16px)}
.top nav a{background:var(--card);color:var(--ink);padding:6px 11px;border:0;border-radius:var(--torn);transform:rotate(-1.2deg);transition:transform .15s}
.top nav a:nth-child(even){transform:rotate(1.1deg)}
.top nav a:hover,.top nav a:focus-visible{transform:translateY(-2px) rotate(0)}
.top nav a[aria-current]{background:var(--ink);color:var(--card)}
@media(max-width:640px){.top nav{border-top:0;padding-top:6px;gap:6px}.top nav a{padding:5px 7px;font-size:12px;white-space:nowrap}}
/* buttons and sound switches: paper strips */
.btn,.sound{border:0;border-radius:var(--torn);background:var(--card);color:var(--ink);box-shadow:2px 3px 0 rgba(40,30,15,.18),0 0 0 1px rgba(40,30,15,.12);transform:rotate(-.8deg);transition:transform .12s}
.btn:nth-of-type(even),.sound:nth-of-type(even){transform:rotate(.7deg)}
.btn:hover,.sound:hover{transform:translateY(-2px) rotate(0)}
.btn:active,.sound:active{transform:translateY(1px) scale(.98)}
.btn.solid,.night .btn.solid{background:var(--ink);color:var(--card);border:0}
.sound[aria-pressed=true]{background:var(--luz);color:var(--ink)}
/* rótulo tiles get a hint of lift, like cut letters */
.rotulo span{box-shadow:2px 3px 0 rgba(40,30,15,.14);border-radius:2px 3px 1px 3px}
/* shelf posters: cut prints */
.fable .poster{background:var(--card);padding:6px;border-radius:2px 4px 3px 5px;overflow:visible;box-shadow:0 1px 1px rgba(40,30,15,.15),4px 8px 12px rgba(40,30,15,.2);transform:rotate(-1deg)}
.fable:nth-child(even) .poster{transform:rotate(1.1deg)}
.fable:nth-child(3n) .poster{transform:rotate(-.4deg)}
.fable:hover .poster{transform:translateY(-6px) rotate(0)}
.fable .poster img{border-radius:1px}
.badge{border-radius:var(--torn);box-shadow:2px 3px 0 rgba(40,30,15,.2);z-index:1}
/* character card: a paper note pinned to the board */
.card{position:relative;background:var(--card);color:var(--ink);border:0;border-radius:2px 5px 3px 4px;box-shadow:0 1px 1px rgba(40,30,15,.15),5px 10px 16px rgba(40,30,15,.25)}
.card::before{content:"";position:absolute;top:-8px;left:calc(50% - 8px);width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#e46a5c,#B13A2D 60%,#7c2219);box-shadow:1px 3px 3px rgba(0,0,0,.35)}
.card img{border:4px solid var(--card);box-shadow:0 0 0 2px var(--c,#efe6c8),3px 5px 8px rgba(40,30,15,.25)}
.card .from{color:var(--mute)}
.card a{color:var(--ink)}
/* fable page: player and the little book as cards on the table */
.fable-hero .cutcard{transform:rotate(-1.2deg);max-width:400px;margin:8px auto 0}
.fable-hero .cut{padding:10px}
.fable-hero .player{max-height:72vh}
.pages{padding:18px 6px 20px}
.pages .cutcard{transform:rotate(-1.4deg);transition:transform .2s}
.pages figure:nth-child(even) .cutcard{transform:rotate(1.2deg)}
.pages figure:nth-child(3n) .cutcard{transform:rotate(-.3deg)}
.pages figure:hover .cutcard{transform:translateY(-6px) rotate(0)}
.pages .cut{padding:7px}
.pages img{box-shadow:none}
.pages figcaption{margin-top:12px}
.born{border-radius:4px 2px 6px 3px;box-shadow:0 0 0 7px var(--card),4px 10px 18px rgba(40,30,15,.28);margin:8px}
.born img{border:5px solid var(--card);box-shadow:0 0 0 2px var(--c,#315CF4),3px 5px 8px rgba(0,0,0,.35)}
.pager a{border-top:0;background:var(--card);padding:10px 14px;border-radius:var(--torn);box-shadow:2px 4px 0 rgba(40,30,15,.15);transform:rotate(-.6deg)}
.pager a.next{transform:rotate(.6deg)}
/* archive: loops and readings as cut prints and strips */
.loops a{border:6px solid var(--card);border-radius:2px 4px 3px 5px;box-shadow:3px 6px 10px rgba(40,30,15,.22);transform:rotate(-1.4deg)}
.loops a:nth-child(even){transform:rotate(1.3deg)}
.loops a:hover{transform:translateY(-4px) rotate(0)}
.readings a{border:0;background:var(--card);border-radius:var(--torn);box-shadow:2px 3px 0 rgba(40,30,15,.16);transform:rotate(-.8deg)}
.readings a:nth-child(even){transform:rotate(.9deg)}
.letter{border:0;background:var(--card);border-radius:3px 6px 2px 5px;box-shadow:4px 8px 14px rgba(40,30,15,.16)}
@media (prefers-reduced-motion:reduce){.fable:hover .poster,.pages figure:hover .cutcard,.loops a:hover{transform:none}}
.night .card p{color:var(--ink)}.night .card .legend{color:var(--mute)}

/* the real hand-painted logo (David's original file «logo 1x1.png», 8-nov-2026), replacing the CSS text logo */
.logo-img{display:inline-block;width:96px;height:auto;vertical-align:middle;filter:drop-shadow(2px 3px 2px rgba(40,30,15,.25))}
