/* =====================================================================
   THE ROOMS: Tools, Library, Letter, Shelf. Left-justified, the house way.
   ===================================================================== */
.room{padding-block:var(--s-4) var(--s-7)}
.rh{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-4)}
.home{display:inline-flex;width:44px;height:44px;border-radius:50%;flex:none}
.home:hover{box-shadow:0 0 0 3px var(--ink)}
h1.rt{font-family:var(--disp);font-weight:400;font-size:var(--fs-h1);line-height:1.04;letter-spacing:-.022em;text-transform:uppercase;margin-top:var(--s-1)}
.intro{margin-top:var(--s-3);max-width:var(--measure);color:var(--soft);font-size:var(--fs-lede);line-height:1.45}

/* Tools index: one entry per generator, a rule between them. A row in tools.json is all it takes to add one. */
.toolist{margin-top:var(--s-5);border-top:3px solid var(--ink)}
.toolist a{display:grid;gap:var(--s-1) var(--s-4);grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:var(--s-4) 0;min-height:44px;text-decoration:none;border-bottom:1px solid var(--rule)}
.toolist .n{grid-column:1/-1;font-family:var(--mono);font-weight:700;font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--soft)}
.toolist .t{font-weight:800;font-size:var(--fs-h3);line-height:1.15;letter-spacing:-.01em}
.toolist .d{grid-column:1;color:var(--soft);max-width:60ch}
.toolist .arr{grid-column:2;grid-row:2/4;align-self:center;transition:transform .15s var(--ease)}
.toolist a:hover .t{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.2em}
.toolist a:hover .arr{transform:translateX(4px)}
.toolist .soon{color:var(--soft)}

/* Library room */
.lib{margin-top:var(--s-5);border-top:3px solid var(--ink)}
.lib a{position:relative;display:grid;gap:var(--s-1) var(--s-4);grid-template-columns:minmax(0,1fr) auto;align-items:start;padding:var(--s-3) 0;min-height:44px;text-decoration:none;border-bottom:1px solid var(--rule)}
.lib .meta{grid-column:1/-1;font-family:var(--mono);font-weight:700;font-size:var(--fs-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.lib .tag{display:inline-block;background:var(--ink);color:var(--paper);padding:1px 6px;margin-right:var(--s-2);letter-spacing:.1em}
.lib .ld::before{content:" \00b7  "}
.lib .t{font-weight:800;font-size:var(--fs-h3);line-height:1.15;letter-spacing:-.01em}
.lib .d{grid-column:1;font-size:var(--fs-body);color:var(--soft);max-width:60ch}
.lib .arr{grid-column:2;grid-row:2/4;align-self:center;transition:transform .15s var(--ease)}
.lib a:hover .t{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.2em}
.lib a:hover .arr{transform:translateX(4px)}
.lib li:first-child a::before{content:"";position:absolute;left:calc(-1*var(--s-3));top:-1px;bottom:-1px;width:3px;background:var(--ink)}
.entry h1.rt{max-width:20ch}
.crumb a{font-family:var(--mono);font-weight:700;font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;display:inline-flex;align-items:center;min-height:44px}
.entry .meta{margin-top:var(--s-3)}
.prose{margin-top:var(--s-5);max-width:var(--measure);display:grid;gap:var(--s-4);font-size:var(--fs-lede);line-height:1.55}
.prose h2{font-family:var(--body);font-weight:800;font-size:var(--fs-h3);line-height:1.2;margin-top:var(--s-3)}
.prose ul,.prose ol{padding-left:1.25em;display:grid;gap:var(--s-2)}
.prose ul{list-style:disc}.prose ol{list-style:decimal}
.prose blockquote{margin:var(--s-2) 0;padding-left:var(--s-4);border-left:3px solid var(--ink);font-weight:800;font-size:var(--fs-h3);line-height:1.2}
.prose blockquote p{margin:0}
.endcta{margin-top:var(--s-6);padding-top:var(--s-4);border-top:3px solid var(--ink);display:grid;gap:var(--s-3);max-width:var(--measure)}
.endcta .row{display:flex;flex-wrap:wrap;gap:var(--s-2)}

/* Letter room */
.doorgrid{display:grid;gap:var(--s-5);grid-template-columns:minmax(0,1fr);margin-top:var(--s-5)}
.sign{position:relative;width:min(100%,15rem);border:1.5px solid var(--ink);padding:var(--s-5) var(--s-4) var(--s-4)}
.sign::after{content:"";position:absolute;left:50%;top:var(--s-3);width:12px;height:12px;margin-left:-6px;border:1.5px solid var(--ink);border-radius:50%;background:var(--paper)}
.sign .big{font-family:var(--disp);font-size:1.9rem;line-height:1;text-transform:uppercase;letter-spacing:.01em;margin-top:var(--s-2)}
.sign .hrs{font-family:var(--mono);font-weight:700;font-size:.8125rem;margin-top:var(--s-2)}
.lamp{display:inline-block;width:10px;height:10px;border:1.5px solid currentColor;border-radius:50%;vertical-align:-1px;margin-right:var(--s-2)}
.lamp.on{background:currentColor}
.door-t p{margin-top:var(--s-3);max-width:46ch}
.nl{margin-top:var(--s-4);max-width:32rem}
.lbl{display:flex;align-items:center;gap:var(--s-2);font-family:var(--mono);font-weight:700;font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--soft);margin-bottom:var(--s-2)}
.nl-row{display:grid;gap:var(--s-2);grid-template-columns:minmax(0,1fr)}
.nl input[type="email"]{display:block;width:100%;min-height:52px;padding:0 14px;font-family:var(--mono);font-weight:700;font-size:1rem;color:var(--ink);background:var(--paper);border:1.5px solid var(--ink);border-radius:2px}
.nl-note{min-height:1.5em;margin-top:var(--s-3);font-family:var(--mono);font-weight:700;font-size:.8125rem;line-height:1.5}
.nl-note[data-s="err"]{border-left:3px solid var(--ink);padding-left:var(--s-3)}
.nl .fine{margin-top:var(--s-3)}
.reserved{border:2px dashed var(--line-strong);padding:var(--s-4);margin-top:var(--s-5);max-width:36rem}

@media (min-width:46rem){
  .lib a{grid-template-columns:11rem minmax(0,1fr) auto;column-gap:var(--s-5);padding-block:var(--s-4)}
  .lib .meta{grid-column:1;grid-row:1/3;padding-top:.3rem}
  .lib .tag{display:table;margin:0 0 var(--s-2)}
  .lib .lw,.lib .ld{display:block}
  .lib .ld::before{content:none}
  .lib .t{grid-column:2;grid-row:1}
  .lib .d{grid-column:2;grid-row:2}
  .lib .arr{grid-column:3;grid-row:1/3}
  .toolist a{grid-template-columns:11rem minmax(0,1fr) auto;column-gap:var(--s-5);padding-block:var(--s-5)}
  .toolist .n{grid-column:1;grid-row:1/3}
  .toolist .t{grid-column:2;grid-row:1}
  .toolist .d{grid-column:2;grid-row:2}
  .toolist .arr{grid-column:3;grid-row:1/3}
  .doorgrid{grid-template-columns:15rem minmax(0,1fr);column-gap:var(--s-7);align-items:start}
  .nl-row{grid-template-columns:minmax(0,1fr) auto}
}
.nl-soon{margin-top:var(--s-4);max-width:46ch}

.hero{margin:var(--s-5) 0 0;max-width:56rem}
.hero img{display:block;width:100%;height:auto;aspect-ratio:16/9;background:var(--surface);border:1px solid var(--rule)}
.credit{margin-top:var(--s-5);font-family:var(--mono);font-weight:700;font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--soft)}
