/* ══════════════════════════════════════════════════════════════
   LAYOUT — shared shell shapes: app sidebar+topbar shell, module
   topbar+nav-bar shell, content containers, mobile nav.
   Breakpoints use only the canonical set from tokens.css's comment:
   420 / 640 / 768 / 1024 / 1440 / 1920px.
══════════════════════════════════════════════════════════════ */

/* ── APP SHELL (sidebar + topbar) — layout_app.html ── */
.app{display:grid;grid-template-columns:260px 1fr;height:100vh;position:relative;z-index:1}
.app.hidden{display:none}
html.layout-app,html.layout-app body{height:100%;overflow:hidden}

.sidebar{background:var(--bg2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;position:relative}
.sidebar::after{content:'';position:absolute;top:0;right:0;width:1px;height:100%;background:linear-gradient(to bottom,var(--border2),transparent 60%)}
.sb-chief{padding:1.25rem 1.25rem .75rem;display:flex;align-items:center;gap:.85rem}
.sb-av-wrap{position:relative;flex-shrink:0}
.sb-av{width:42px;height:42px;background:var(--cg);border:1.5px solid var(--c);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;font-size:1.1rem;color:var(--c)}
.sb-ring{position:absolute;inset:-4px;border-radius:50%;border:1px solid rgba(34,184,212,.18);animation:ring-pulse 3s ease-in-out infinite}
@keyframes ring-pulse{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.08);opacity:.1}}
.sb-name{font-family:var(--disp);font-weight:700;font-size:1rem;color:var(--text);letter-spacing:.08em}
.sb-live{display:flex;align-items:center;gap:.35rem;font-family:var(--mono);font-size:.55rem;color:var(--g);letter-spacing:.15em;margin-top:.2rem;text-transform:uppercase}
.live-dot{width:5px;height:5px;border-radius:50%;background:var(--g);box-shadow:0 0 5px var(--g);animation:blink 2s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
.sb-op{padding:0 1.25rem .75rem;font-family:var(--mono);font-size:.58rem;color:var(--muted);border-bottom:1px solid var(--border)}
.sb-block{padding:.9rem 1.25rem;border-bottom:1px solid var(--border)}.sb-block.grow{flex:1;overflow-y:auto;border-bottom:none}
.sb-lbl{font-family:var(--mono);font-size:.53rem;color:var(--muted);letter-spacing:.22em;text-transform:uppercase;margin-bottom:.6rem}
.sb-search-wrap{padding:.5rem .9rem}
.sb-search{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--mono);font-size:.62rem;padding:.38rem .6rem;outline:none}
.sb-search:focus{border-color:var(--c)}
.sb-search::placeholder{color:var(--muted)}
.sb-foot{padding:1rem 1.25rem;border-top:1px solid var(--border)}
.sb-foot:empty{display:none}
.new-btn{width:100%;background:none;border:1px solid var(--border2);border-radius:var(--radius-sm);color:var(--c);font-family:var(--body);font-weight:600;font-size:.78rem;padding:.6rem;cursor:pointer;transition:all .18s}
.new-btn:hover{background:var(--cg2);border-color:var(--border3)}

.main{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.topbar{height:48px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 1rem;flex-shrink:0;gap:.5rem}
.tb-l{display:flex;align-items:center;gap:.75rem;flex-shrink:0}
.tb-logo{font-family:var(--disp);font-weight:700;font-size:.95rem;color:var(--text);letter-spacing:.1em}
.tb-logo span{color:var(--c)}
.tb-sep{color:var(--border3)}
.tb-clock{font-family:var(--mono);font-size:.68rem;color:var(--muted)}
.tb-r{display:flex;align-items:center;gap:.4rem;flex-shrink:0}
.tb-utils{display:flex;align-items:center;gap:.2rem;padding:0 .35rem;border-left:1px solid var(--border);margin-left:.15rem}
.tb-util-btn{font-size:.82rem;background:transparent;border:none;color:var(--muted);cursor:pointer;padding:.32rem .5rem;border-radius:7px;transition:background .15s,color .15s,transform .1s;line-height:1}
.tb-util-btn:hover{background:rgba(255,255,255,.09);color:var(--text)}
.tb-util-btn:active{background:rgba(255,255,255,.15);transform:scale(.92)}

.content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem;max-width:1600px;width:100%;margin-inline:auto;box-sizing:border-box}

.mobile-tab-bar{display:none}

/* ── MODULE SHELL (topbar + nav strip, no sidebar) — layout_module.html ── */
body.layout-module::before{content:'';position:fixed;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--accent,var(--c)),transparent);animation:scan 6s linear infinite;z-index:1000;pointer-events:none}
@keyframes scan{0%{top:0}100%{top:100%}}

.module-topbar{background:var(--bg2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}
.module-logo{display:flex;align-items:center;gap:.6rem}
.module-icon{font-size:1.3rem}
.module-name{font-family:var(--disp);font-size:1.05rem;font-weight:700;letter-spacing:.12em;color:var(--accent,var(--c))}
.module-tag{font-size:.58rem;font-family:var(--mono);letter-spacing:.15em;color:var(--muted);border:1px solid var(--border);padding:1px 8px;border-radius:10px;margin-left:.4rem}
.module-status{display:flex;align-items:center;gap:.4rem;font-size:.62rem;font-family:var(--mono);color:var(--g)}
.status-pulse{width:7px;height:7px;border-radius:50%;background:var(--g);box-shadow:0 0 8px var(--g);animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}
.tb-links{display:flex;gap:.5rem}
.tb-link{color:var(--muted);text-decoration:none;font-size:.7rem;letter-spacing:.08em;border:1px solid var(--border);padding:.3rem .65rem;border-radius:5px;transition:all .15s}
.tb-link:hover{border-color:var(--accent,var(--c));color:var(--accent,var(--c))}

.module-nav-bar{background:var(--bg-base,var(--bg));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);padding:0 1rem;display:flex;align-items:center;gap:.2rem;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;height:38px;position:sticky;top:52px;z-index:90}
.module-nav-bar::-webkit-scrollbar{display:none}
.module-nav-link{color:var(--muted);text-decoration:none;font-size:.67rem;letter-spacing:.06em;font-family:var(--body);font-weight:500;padding:.28rem .75rem;border-radius:20px;transition:color .15s,background .15s,border-color .15s;white-space:nowrap;border:1px solid transparent;display:flex;align-items:center;gap:.3rem;flex-shrink:0;line-height:1}
.module-nav-link:hover{color:var(--text);background:rgba(128,128,128,.1);border-color:var(--border2)}
.module-nav-link.active{color:var(--accent,var(--c));background:var(--cg);border-color:rgba(34,184,212,.3);font-weight:600}
.module-nav-link.nav-all{color:var(--accent,var(--c));font-size:.62rem;letter-spacing:.1em;margin-left:auto;border-color:rgba(34,184,212,.2);background:var(--cg2)}
.module-nav-link.nav-all:hover{background:var(--cg);border-color:rgba(34,184,212,.4)}

.module-hero{padding:2rem 1.5rem 1rem;background:linear-gradient(135deg,var(--bg2),var(--bg));border-bottom:1px solid var(--border)}
.module-hero-inner{max-width:1200px;margin:0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:2rem}
.module-title{font-family:var(--disp);font-size:1.8rem;font-weight:700;letter-spacing:.08em;color:var(--text);margin-bottom:.35rem}
.module-subtitle{font-size:.82rem;color:var(--muted);max-width:500px;line-height:1.6}
.module-replaces{font-size:.7rem;font-family:var(--mono);color:var(--g);margin-top:.5rem;letter-spacing:.06em}
.module-metrics{display:flex;gap:1.5rem}
.module-content{max-width:1200px;margin:0 auto;padding:1.5rem}
.module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}

/* ── PUBLIC SHELL (minimal/no chrome) — layout_public.html ── */
.public-nav{position:sticky;top:0;z-index:100;background:var(--bg2);border-bottom:1px solid var(--border);padding:.9rem 2rem;display:flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.public-nav-logo{font-family:var(--disp);font-weight:700;font-size:1.1rem;letter-spacing:.12em;color:var(--c);text-decoration:none}
.public-nav-back{color:var(--muted);text-decoration:none;font-size:.82rem;transition:color .15s}
.public-nav-back:hover{color:var(--text)}
.public-container{max-width:780px;margin:0 auto;padding:3rem 2rem 5rem}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVE — canonical breakpoints only
══════════════════════════════════════════════════════════════ */

@media(min-width:1920px){
  .app{grid-template-columns:300px 1fr}
  .content{max-width:1400px;padding:2rem 2.5rem;gap:1.5rem}
}

@media(max-width:1024px){
  .app{grid-template-columns:220px 1fr}
  .set-panels{max-width:640px}
  .module-grid{grid-template-columns:repeat(2,1fr)}
  .module-hero-inner{gap:1rem}
  .module-metrics{gap:.75rem}
}

@media(max-width:768px){
  .app{grid-template-columns:64px 1fr}
  .sb-chief .sb-name,.sb-chief .sb-ring,.sb-chief .sb-live{display:none}
  .sb-op,.sb-lbl{display:none}
  .sb-block:not(.grow),.sb-block.grow{display:none}
  .sb-foot{padding:.5rem .4rem}
  .new-btn{font-size:.62rem;padding:.4rem .3rem;letter-spacing:0}
  .sb-chief{padding:.85rem .5rem .75rem;justify-content:center}
  .sb-av{width:36px;height:36px;font-size:.9rem}

  .module-hero-inner{flex-direction:column;gap:1rem}
  .module-metrics{flex-wrap:wrap;gap:.5rem}
  .module-grid{grid-template-columns:1fr}
  /* logo+status+tb-links row was a strict single line with no wrap/scroll —
     confirmed via a real 390px-viewport render that it forces genuine
     page-level horizontal overflow once tb-links has 3 items. Letting it
     wrap keeps every module page's topbar (status text length varies per
     page) from ever pushing the document wider than the viewport. */
  .module-topbar{flex-wrap:wrap;row-gap:.4rem;padding:.65rem 1rem}
  .tb-links{gap:.3rem}
  .tb-link{font-size:.62rem;padding:.25rem .5rem}
  .module-name{font-size:.9rem;letter-spacing:.08em}
  .module-hero{padding:1.5rem 1rem .75rem}
  .module-content{padding:1rem}

  .set-body{flex-direction:column}
  .set-nav{width:100%;flex-direction:row;overflow-x:auto;padding:.5rem .75rem;gap:.25rem;border-right:none;border-bottom:1px solid var(--border);flex-shrink:0;scrollbar-width:none}
  .set-nav::-webkit-scrollbar{display:none}
  .sn-item{white-space:nowrap;padding:.5rem .85rem;border-left:none;border-bottom:2px solid transparent;border-radius:6px 6px 0 0;font-size:.62rem}
  .sn-item.active{border-left:none;border-bottom-color:var(--c);border-radius:6px 6px 0 0}
  .set-panels{max-width:100%;padding:1.25rem 1rem;overflow-y:auto;flex:1}
  .set-header{padding:.65rem 1rem;gap:1rem}
}

@media(max-width:640px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;bottom:0;left:0;right:0;z-index:100;width:100%;height:auto;border-right:none;border-top:1px solid var(--border);flex-direction:row;padding:0;background:var(--bg2)}
  .sb-chief,.sb-op,.sb-block{display:none}
  .sb-foot{padding:.5rem .75rem;border-top:none;flex:1}
  .new-btn{font-size:.7rem;padding:.45rem}
  .sidebar::before{content:'MySuxess';font-family:var(--mono);font-size:.6rem;color:var(--c);padding:.6rem .85rem;display:flex;align-items:center;letter-spacing:.1em}

  .tb-pill{display:none!important}
  .tb-sep,.tb-status,.tb-clock,.tb-ambient{display:none!important}
  .topbar #dark-toggle,.topbar #theme-btn{display:none!important}
  .tb-r{gap:.3rem}.tb-l{gap:.4rem}
  .main{padding-bottom:62px}
  .feat-strip{display:none}
  .mobile-tab-bar{display:flex!important;position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--bg2);border-top:1px solid var(--border);z-index:300;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
  .mtb-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;font-size:.5rem;font-family:var(--mono);letter-spacing:.04em;color:var(--muted);transition:color .15s;padding:4px 2px}
  .mtb-item:hover,.mtb-item.active{color:var(--c)}
  .mtb-item span:first-child{font-size:1.05rem;line-height:1}
  .content{padding:.6rem}
  .topbar{padding:0 .75rem;height:44px}

  .action-grid{grid-template-columns:1fr!important}
  .module-hero{padding:1.25rem .75rem .5rem}
  .module-title{font-size:1.4rem}
  .module-content{padding:.75rem}
  .public-container{padding:2rem 1.25rem}
}

@media(max-width:420px){
  .topbar{padding:.5rem .75rem}
  .content{padding:.65rem}
}
