/* ============================================================
   GifDeck — gifdeck.css
   ONE stylesheet for BOTH the public landing AND the /saeit/ admin.
   Linked root-absolute as  /css/gifdeck.css  so it resolves from
   the site root and from inside /saeit/.

   Sources (extracted VERBATIM, nothing redesigned):
     - Landing chrome ......... gifdeck_landing_soup_v4.css
     - Admin chrome ........... gifdeck_admin_mockup_v1.html (<style>)
     - THE CARD block ......... verbatim v8 (identical in both) — included ONCE

   Fonts (Rajdhani / Barlow / Archivo Black) are loaded in each page's
   <head>, not here. Quill's base CSS is loaded (CDN) in the admin <head>;
   the .editor-shell rules below theme it to the soup look.

   NOTE: the admin mockup's "MOCKUP" banner (.mockbar) is intentionally
   NOT carried over — it was a mockup-only label.
   ============================================================ */

:root{
  --display:'Rajdhani',sans-serif; --body:'Barlow',sans-serif; --chunk:'Archivo Black',sans-serif;
  --paper:#fff7ea; --coral:#ff4d6d; --blue:#2f6bff; --lime:#c4f23a; --ink:#14130f;
  --gold:#c9a84c; --brand:#e7cf86; --muted:#3a3729;
}

/* ============================================================
   BASE  (shared)
   ============================================================ */
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:var(--body);background:var(--paper);color:var(--ink);min-height:100vh;position:relative;overflow-x:hidden;}
img{display:block;}
/* halftone texture — the soup signature */
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background-image:radial-gradient(rgba(20,19,15,.13) 1.4px,transparent 1.5px);background-size:14px 14px;}


/* ============================================================
   LANDING — layout + top bar
   ============================================================ */
.wrap{position:relative;z-index:1;max-width:1040px;margin:0 auto;padding:22px 22px 70px;}

.bar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:36px;flex-wrap:wrap;}
.wordmark{display:inline-flex;align-items:center;gap:8px;font-family:var(--chunk);font-size:1.2rem;
  color:var(--ink);background:var(--lime);padding:7px 15px;border:3px solid var(--ink);border-radius:13px;
  box-shadow:5px 5px 0 var(--ink);transform:rotate(-2deg);}
.barlinks{display:flex;gap:20px;font-family:var(--chunk);font-size:.72rem;text-transform:uppercase;flex-wrap:wrap;}
.barlinks a{text-decoration:none;color:var(--ink);cursor:pointer;}
.barlinks a:hover{color:var(--coral);}
.wordmark a{color:inherit;text-decoration:none;}

/* ---------- hero ---------- */
.hero{display:flex;gap:46px;align-items:center;flex-wrap:wrap;justify-content:center;}
.pitch{flex:1 1 360px;min-width:300px;}
h1{font-family:var(--chunk);font-size:clamp(2.3rem,5.6vw,3.7rem);line-height:.98;text-transform:uppercase;letter-spacing:-.5px;}
h1 .hl{background:var(--coral);color:var(--paper);padding:0 8px;box-decoration-break:clone;-webkit-box-decoration-break:clone;}
h1 .hl2{background:var(--blue);color:var(--paper);padding:0 8px;box-decoration-break:clone;-webkit-box-decoration-break:clone;}
.lede{font-size:1.08rem;font-weight:600;line-height:1.5;margin:22px 0 28px;max-width:34ch;color:#3a3729;}
.btns{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.cta{display:inline-block;font-family:var(--chunk);font-size:1rem;text-transform:uppercase;text-decoration:none;
  color:var(--paper);background:var(--ink);padding:14px 28px;border-radius:12px;border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--coral);cursor:pointer;}
.cta:hover{transform:translate(2px,2px);box-shadow:4px 4px 0 var(--coral);}
.cta.ghost{color:var(--ink);background:var(--paper);box-shadow:6px 6px 0 var(--blue);}
.cta.ghost:hover{box-shadow:4px 4px 0 var(--blue);}

/* main card stage (soup charm: tilt + stickers; NO featured tag, NO customize) */
.stage{flex:0 0 auto;position:relative;}
.stage .cardwrap{position:relative;transform:rotate(3deg);}
.stage .cardwrap .frame{box-shadow:10px 10px 0 var(--ink),0 14px 30px rgba(0,0,0,.4);}
.sticker{position:absolute;font-size:1.7rem;background:var(--paper);border:3px solid var(--ink);border-radius:50%;
  width:52px;height:52px;display:grid;place-items:center;box-shadow:3px 3px 0 var(--ink);z-index:9;}
.s1{top:-20px;left:-28px;transform:rotate(-12deg);background:var(--lime);}
.s2{bottom:-14px;right:-22px;transform:rotate(14deg);background:var(--coral);}
.s3{top:44%;right:-34px;transform:rotate(6deg);background:var(--blue);}


/* ============================================================
   THE CARD — verbatim from v8 (identical in landing + admin)
   Shared by: landing main card, examples modal, admin live previews.
   ============================================================ */
.frame{position:relative;width:320px;border-radius:15px;padding:11px;
  background:linear-gradient(160deg,
    color-mix(in srgb,var(--theme),white 16%),
    color-mix(in srgb,var(--theme),black 40%) 55%,
    color-mix(in srgb,var(--theme),black 60%));
  box-shadow:0 10px 30px rgba(0,0,0,.55),0 0 0 1px rgba(0,0,0,.5);}
.ring{border-radius:12px;padding:2px;}
.frame.r-common .ring{background:linear-gradient(120deg,#b4bac4,#6e7480 50%,#b4bac4);}
.frame.r-rare   .ring{background:linear-gradient(120deg,#9fe6f7,#4a9bd6 50%,#7ad6c6);}
.frame.r-epic   .ring{background:linear-gradient(120deg,#f3da8e,#c9a84c 50%,#f3da8e);}
.frame.r-ultra  .ring{background:linear-gradient(120deg,#e7cf86,#c46ad6,#7ad6c6,#c46ad6,#e7cf86);
  background-size:220% 100%;animation:holo 4.5s linear infinite;}
@keyframes holo{to{background-position:220% 0;}}
.gd-content{position:relative;border-radius:11px;overflow:hidden;
  background:linear-gradient(165deg,color-mix(in srgb,var(--theme),black 60%),#16101e);}
.gd-badge{position:absolute;top:9px;right:9px;z-index:7;font-family:var(--display);font-weight:700;
  font-size:.62rem;letter-spacing:1.1px;padding:4px 10px;border-radius:20px;color:#241830;
  background:linear-gradient(120deg,#e7cf86,#c9a84c);box-shadow:0 1px 4px rgba(0,0,0,.5);
  display:flex;align-items:center;gap:4px;}
.gd-badge::before{content:'\25C6';font-size:.55rem;}
.gd-art{position:relative;margin:9px;border-radius:8px;overflow:hidden;aspect-ratio:var(--art-ar,4/3);
  border:1px solid color-mix(in srgb,var(--theme),transparent 55%);
  background:linear-gradient(180deg,#2a1c38,#160e20);}
.gd-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.gd-art::after{content:'';position:absolute;inset:0;pointer-events:none;border-radius:8px;
  box-shadow:inset 0 0 28px color-mix(in srgb,var(--theme),transparent 62%);}
.gd-name{font-family:var(--display);font-weight:700;font-size:1.3rem;letter-spacing:1px;text-align:center;
  color:color-mix(in srgb,var(--theme),white 50%);
  text-shadow:0 0 10px color-mix(in srgb,var(--theme),transparent 52%);padding-top:3px;}
.gd-type{font-family:var(--display);font-weight:600;font-size:.58rem;letter-spacing:2px;text-transform:uppercase;
  text-align:center;color:color-mix(in srgb,var(--theme),white 28%);}
.gd-divider{height:1px;margin:7px 14px;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--theme),transparent 45%),transparent);}
.gd-effect{font-family:var(--body);font-size:.8rem;color:#dcd2e6;text-align:center;padding:0 16px 3px;line-height:1.42;}
.gd-effect b{color:color-mix(in srgb,var(--theme),white 60%);}
.gd-flavor{font-family:var(--body);font-style:italic;font-size:.7rem;color:#9a9aaa;text-align:center;padding:9px 14px 2px;}
.gd-syms{display:flex;justify-content:center;gap:8px;padding:9px 0 10px;font-size:.82rem;}
.gd-syms span{color:color-mix(in srgb,var(--theme),white 42%);
  text-shadow:0 0 6px color-mix(in srgb,var(--theme),transparent 45%);line-height:1;}
.gd-handle{text-align:center;font-family:var(--body);font-weight:600;font-size:.58rem;letter-spacing:.02em;
  opacity:.9;color:color-mix(in srgb,var(--theme),white 36%);padding:0 14px 12px;}
.m-full{--art-ar:4/3;}
/* corner flares (verbatim v8) */
.cframe{position:absolute;inset:7px;z-index:5;pointer-events:none;border-radius:7px;
  --cc:color-mix(in srgb,var(--theme),white 46%);}
.cn{position:absolute;width:38px;height:38px;line-height:0;color:var(--cc);
  filter:drop-shadow(0 0 5px color-mix(in srgb,var(--theme),transparent 35%));}
.cn svg{width:100%;height:100%;display:block;}
.cn.tl{top:-3px;left:-3px;}
.cn.bl{bottom:-3px;left:-3px;transform:rotate(270deg);}
.cn.br{bottom:-3px;right:-3px;transform:rotate(180deg);}


/* ============================================================
   LANDING — strip + copyright
   ============================================================ */
.strip{margin-top:62px;text-align:center;}
.strip .k{font-family:var(--chunk);font-size:.8rem;text-transform:uppercase;color:var(--ink);
  display:inline-block;background:var(--paper);border:3px solid var(--ink);border-radius:10px;padding:8px 16px;
  box-shadow:4px 4px 0 var(--blue);transform:rotate(-1deg);}
.strip p{margin-top:18px;font-weight:600;color:#3a3729;max-width:46ch;margin-left:auto;margin-right:auto;line-height:1.5;}

.copyright{margin-top:50px;text-align:center;font-family:var(--display);font-weight:600;font-size:.72rem;
  letter-spacing:.6px;text-transform:uppercase;color:#8a8474;}


/* ============================================================
   MODALS — landing (Examples + Contact). Close via X ONLY.
   ============================================================ */
.modal{position:fixed;inset:0;z-index:50;display:none;}
.modal.open{display:block;}
.modal .backdrop{position:absolute;inset:0;background:rgba(20,19,15,.62);}
.modal .sheet{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(940px,94vw);max-height:88vh;overflow:auto;background:var(--paper);
  border:4px solid var(--ink);border-radius:20px;box-shadow:12px 12px 0 var(--ink);padding:26px 24px 30px;}
.modal .sheet::before{content:'';position:absolute;inset:0;pointer-events:none;border-radius:16px;opacity:.4;
  background-image:radial-gradient(rgba(20,19,15,.12) 1.3px,transparent 1.4px);background-size:14px 14px;}
.modal-head{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;}
.modal-head h2{font-family:var(--chunk);font-size:1.5rem;text-transform:uppercase;line-height:1;}
.modal-head p{font-weight:600;color:#3a3729;font-size:.92rem;margin-top:8px;max-width:44ch;}
.x{flex:0 0 auto;width:42px;height:42px;border-radius:50%;border:3px solid var(--ink);background:var(--coral);
  color:var(--paper);font-family:var(--chunk);font-size:1.1rem;cursor:pointer;box-shadow:3px 3px 0 var(--ink);
  display:grid;place-items:center;line-height:1;}
.x:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink);}
.grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:26px;margin-top:24px;justify-items:center;align-items:start;}
.modal-foot{position:relative;z-index:1;text-align:center;margin-top:28px;}

/* ---------- About modal content (admin-authored rich text) ----------
   The landing About pop-up shows the About HTML, a divider, then the FAQ
   HTML (both authored in /saeit/). Typography mirrors the admin editor. */
.prose{position:relative;z-index:1;margin-top:18px;font-weight:500;font-size:.96rem;line-height:1.6;color:var(--ink);max-width:60ch;}
.prose h2{font-family:var(--chunk);font-size:1.25rem;text-transform:uppercase;margin:18px 0 8px;}
.prose h2:first-child{margin-top:0;}
.prose h3{font-family:var(--display);font-weight:700;font-size:1.08rem;margin:14px 0 5px;}
.prose p{margin:9px 0;}
.prose ul,.prose ol{margin:9px 0 9px 26px;}
.prose li{margin:3px 0;}
.prose a{color:var(--blue);text-decoration:underline;}
.about-rule{height:0;border-top:3px dashed var(--ink);opacity:.4;margin:24px 0;position:relative;z-index:1;}

/* off-screen honeypot — a spam trap; real people never see or fill it */
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden;}

/* ---------- contact form (in modal) ---------- */
.sheet-narrow{width:min(560px,94vw);}
.cform{position:relative;z-index:1;margin-top:22px;}
.turnstile-mock{display:flex;align-items:center;gap:9px;font-family:var(--body);font-weight:600;font-size:.82rem;
  color:#3a3729;background:#fff;border:2.5px dashed var(--ink);border-radius:10px;padding:12px 14px;margin-bottom:18px;}
.turnstile-mock .cf-box{display:grid;place-items:center;width:22px;height:22px;border-radius:5px;
  background:var(--lime);border:2px solid var(--ink);font-size:.7rem;font-weight:700;}
.send{font-family:var(--chunk);font-size:.9rem;text-transform:uppercase;color:var(--paper);background:var(--ink);
  border:3px solid var(--ink);border-radius:11px;padding:12px 24px;cursor:pointer;box-shadow:5px 5px 0 var(--coral);}
.send:hover{transform:translate(2px,2px);box-shadow:3px 3px 0 var(--coral);}
.send[disabled]{opacity:.5;cursor:default;transform:none;box-shadow:3px 3px 0 var(--coral);}
.cform-done{margin-top:16px;font-family:var(--chunk);font-size:.8rem;text-transform:uppercase;color:var(--ink);
  background:var(--lime);border:3px solid var(--ink);border-radius:10px;padding:12px 16px;box-shadow:3px 3px 0 var(--ink);}
.cform-error{margin-top:16px;font-family:var(--chunk);font-size:.8rem;text-transform:uppercase;color:var(--paper);
  background:#b3203a;border:3px solid var(--ink);border-radius:10px;padding:12px 16px;box-shadow:3px 3px 0 var(--ink);}


/* ============================================================
   ADMIN — login gate
   ============================================================ */
.login{position:relative;z-index:1;min-height:90vh;display:grid;place-items:center;padding:24px;}
.login-card{width:min(380px,94vw);background:var(--paper);border:4px solid var(--ink);border-radius:20px;
  box-shadow:10px 10px 0 var(--ink);padding:30px 28px;text-align:center;}
.login-card .lk{display:inline-flex;align-items:center;gap:8px;font-family:var(--chunk);font-size:1.15rem;
  color:var(--ink);background:var(--lime);padding:7px 15px;border:3px solid var(--ink);border-radius:13px;
  box-shadow:4px 4px 0 var(--ink);transform:rotate(-2deg);margin-bottom:22px;}
.login-card h1{font-family:var(--chunk);font-size:1.3rem;text-transform:uppercase;margin-bottom:6px;}
.login-card p{font-weight:600;color:var(--muted);font-size:.86rem;margin-bottom:20px;}
.login-card .field{text-align:left;}
/* inline error on a failed sign-in (real build) */
.login-error{font-family:var(--chunk);font-size:.7rem;text-transform:uppercase;color:var(--paper);
  background:#b3203a;border:3px solid var(--ink);border-radius:9px;padding:9px 12px;margin-bottom:16px;
  box-shadow:3px 3px 0 var(--ink);text-align:left;}
/* "stay signed in" row on the login card */
.remember{display:flex;align-items:center;gap:9px;margin:2px 0 16px;text-align:left;
  font-family:var(--body);font-weight:600;font-size:.85rem;color:var(--muted);}
.remember input{width:auto;}
.remember label{display:inline;margin:0;font-family:var(--body);text-transform:none;font-size:.85rem;color:var(--muted);}


/* ============================================================
   ADMIN — shell: sidebar + content
   ============================================================ */
.shell{position:relative;z-index:1;min-height:100vh;display:grid;grid-template-columns:236px 1fr;}

.side{border-right:3px solid var(--ink);padding:22px 18px;display:flex;flex-direction:column;gap:18px;}
.brand{display:inline-flex;align-items:center;gap:8px;font-family:var(--chunk);font-size:1.05rem;
  color:var(--ink);background:var(--lime);padding:7px 14px;border:3px solid var(--ink);border-radius:12px;
  box-shadow:4px 4px 0 var(--ink);transform:rotate(-2deg);align-self:flex-start;}
.nav{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
.nav button,.nav a{display:flex;align-items:center;gap:10px;width:100%;text-align:left;cursor:pointer;text-decoration:none;
  font-family:var(--chunk);font-size:.74rem;text-transform:uppercase;color:var(--ink);
  background:var(--paper);border:3px solid var(--ink);border-radius:11px;padding:11px 12px;box-shadow:3px 3px 0 var(--ink);}
.nav button:hover,.nav a:hover{transform:translate(1px,1px);box-shadow:2px 2px 0 var(--ink);}
.nav button.active,.nav a.active{background:var(--coral);color:var(--paper);}
.nav .ico{font-size:1rem;line-height:1;}
.nav .badge{margin-left:auto;background:var(--blue);color:var(--paper);font-family:var(--display);font-weight:700;
  font-size:.64rem;min-width:20px;height:20px;border-radius:10px;display:grid;place-items:center;padding:0 5px;border:2px solid var(--ink);}
.nav button.active .badge,.nav a.active .badge{background:var(--ink);}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px;}
.side-foot a,.side-foot button{font-family:var(--chunk);font-size:.66rem;text-transform:uppercase;color:var(--muted);
  text-decoration:none;background:none;border:none;cursor:pointer;text-align:left;padding:4px 2px;}
.side-foot a:hover,.side-foot button:hover{color:var(--coral);}

.content{padding:30px 34px 60px;max-width:1100px;}
.page{display:none;}
.page.on{display:block;}
.phead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px;}
.phead h2{font-family:var(--chunk);font-size:1.7rem;text-transform:uppercase;line-height:1;}
.phead p{font-weight:600;color:var(--muted);font-size:.9rem;margin-top:8px;max-width:52ch;}

/* shared chunky controls */
.btn{font-family:var(--chunk);font-size:.82rem;text-transform:uppercase;color:var(--paper);background:var(--ink);
  border:3px solid var(--ink);border-radius:11px;padding:11px 20px;cursor:pointer;box-shadow:5px 5px 0 var(--coral);
  text-decoration:none;display:inline-block;}
.btn:hover{transform:translate(2px,2px);box-shadow:3px 3px 0 var(--coral);}
.btn.ghost{color:var(--ink);background:var(--paper);box-shadow:5px 5px 0 var(--blue);}
.btn.ghost:hover{box-shadow:3px 3px 0 var(--blue);}
.btn.sm{font-size:.7rem;padding:8px 13px;box-shadow:3px 3px 0 var(--coral);}
.btn.sm.ghost{box-shadow:3px 3px 0 var(--blue);}
.btn.danger{box-shadow:5px 5px 0 #b3203a;}
.btn.danger.sm{box-shadow:3px 3px 0 #b3203a;}

/* form fields — canonical (admin set; landing contact form inherits these) */
.field{margin-bottom:15px;}
.field label{display:block;font-family:var(--chunk);font-size:.68rem;text-transform:uppercase;color:var(--ink);margin-bottom:6px;}
.field .hint{font-family:var(--body);font-weight:600;text-transform:none;color:var(--muted);font-size:.72rem;margin-left:6px;}
.field input,.field textarea,.field select{width:100%;background:#fff;border:2.5px solid var(--ink);border-radius:9px;
  color:var(--ink);font-family:var(--body);font-weight:600;font-size:.9rem;padding:10px 12px;}
.field textarea{resize:vertical;min-height:96px;line-height:1.45;}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.colorrow{display:flex;align-items:center;gap:10px;}
.colorrow input[type=color]{width:52px;height:42px;padding:3px;border-radius:9px;cursor:pointer;}
.colorrow input[type=text]{flex:1;}

/* save bar */
.savebar{display:flex;align-items:center;gap:14px;margin-top:6px;}
.saved-flag{font-family:var(--chunk);font-size:.7rem;text-transform:uppercase;color:var(--ink);
  background:var(--lime);border:3px solid var(--ink);border-radius:9px;padding:8px 13px;box-shadow:3px 3px 0 var(--ink);}

/* ---------- authoring layout: form | preview ---------- */
.author{display:grid;grid-template-columns:1fr 360px;gap:34px;align-items:start;}
.author .panel{background:var(--paper);border:3px solid var(--ink);border-radius:16px;box-shadow:6px 6px 0 var(--ink);padding:22px 22px 24px;}
.previewbox{position:sticky;top:24px;}
.previewbox .ptitle{font-family:var(--chunk);font-size:.72rem;text-transform:uppercase;color:var(--muted);margin-bottom:14px;text-align:center;}
.previewbox .stage{display:grid;place-items:center;}
.previewbox .stage .frame{box-shadow:8px 8px 0 var(--ink),0 12px 26px rgba(0,0,0,.35);}

.gifsource{display:flex;gap:10px;align-items:flex-end;}
.gifsource .field{flex:1;margin-bottom:0;}
.klipy-btn{flex:0 0 auto;font-family:var(--chunk);font-size:.68rem;text-transform:uppercase;color:var(--ink);
  background:var(--brand);border:2.5px solid var(--ink);border-radius:9px;padding:11px 13px;cursor:pointer;box-shadow:3px 3px 0 var(--ink);white-space:nowrap;}
.klipy-note{font-family:var(--body);font-weight:600;font-size:.7rem;color:var(--muted);margin-top:8px;}


/* ============================================================
   ADMIN — Examples grid
   ============================================================ */
.ex-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:22px;}
.ex-item{background:var(--paper);border:3px solid var(--ink);border-radius:14px;box-shadow:5px 5px 0 var(--ink);
  padding:16px 14px;display:flex;flex-direction:column;align-items:center;gap:12px;}
.ex-mini{zoom:.62;pointer-events:none;}
.ex-meta{font-family:var(--chunk);font-size:.78rem;text-transform:uppercase;text-align:center;}
.ex-actions{display:flex;gap:8px;}
.ex-add{border:3px dashed var(--ink);border-radius:14px;background:transparent;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:300px;
  font-family:var(--chunk);font-size:.8rem;text-transform:uppercase;color:var(--muted);}
.ex-add:hover{color:var(--coral);border-color:var(--coral);}
.ex-add .plus{font-size:2.2rem;line-height:1;}
.ex-editor{margin-top:10px;}
.ex-editing-flag{display:inline-flex;align-items:center;gap:8px;font-family:var(--chunk);font-size:.7rem;
  text-transform:uppercase;background:var(--blue);color:var(--paper);border:3px solid var(--ink);border-radius:9px;
  padding:8px 13px;box-shadow:3px 3px 0 var(--ink);margin-bottom:18px;}


/* ============================================================
   ADMIN — Rich text editor (About + FAQ)
   Production: Quill (loaded in admin <head>). If its CDN is blocked,
   a built-in contenteditable editor (makeRTE) takes over — both
   share .editor-shell chrome.
   ============================================================ */
.content-wrap{max-width:720px;}
.content-rule{height:0;border-top:3px dashed var(--ink);opacity:.5;margin:30px 0 24px;}
.editor-shell{border:2.5px solid var(--ink);border-radius:12px;overflow:hidden;background:#fff;box-shadow:5px 5px 0 var(--ink);}

/* ---- Quill, themed to the soup look ---- */
.editor-shell .ql-toolbar.ql-snow{border:none;border-bottom:2.5px solid var(--ink);background:var(--paper);}
.editor-shell .ql-container.ql-snow{border:none;font-family:var(--body);font-size:.96rem;}
.editor-shell .ql-editor{min-height:230px;line-height:1.55;color:var(--ink);}
.editor-shell .ql-editor h2{font-family:var(--chunk);font-size:1.25rem;text-transform:uppercase;margin:14px 0 8px;}
.editor-shell .ql-editor h3{font-family:var(--display);font-weight:700;font-size:1.05rem;margin:12px 0 5px;}
.editor-shell .ql-editor a{color:var(--blue);}

/* ---- built-in fallback editor (chrome comes from .editor-shell) ---- */
.rte{background:#fff;}
.rte-tools{display:flex;flex-wrap:wrap;gap:6px;padding:9px;background:var(--paper);border-bottom:2.5px solid var(--ink);}
.rte-tools button{font-family:var(--chunk);font-size:.66rem;text-transform:uppercase;border:2px solid var(--ink);
  border-radius:7px;background:#fff;color:var(--ink);padding:6px 9px;cursor:pointer;box-shadow:2px 2px 0 var(--ink);line-height:1;}
.rte-tools button:hover{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink);}
.rte-area{min-height:230px;padding:16px 18px;font-family:var(--body);font-weight:500;font-size:.96rem;
  line-height:1.55;color:var(--ink);outline:none;}
.rte-area h2{font-family:var(--chunk);font-size:1.25rem;text-transform:uppercase;margin:14px 0 8px;}
.rte-area h2:first-child{margin-top:0;}
.rte-area h3{font-family:var(--display);font-weight:700;font-size:1.05rem;margin:12px 0 5px;}
.rte-area p{margin:9px 0;}
.rte-area ul,.rte-area ol{margin:9px 0 9px 26px;}
.rte-area li{margin:3px 0;}
.rte-area a{color:var(--blue);text-decoration:underline;}


/* ============================================================
   ADMIN — Messages inbox
   ============================================================ */
.inbox{display:grid;grid-template-columns:300px 1fr;gap:24px;align-items:start;}
.msg-list{background:var(--paper);border:3px solid var(--ink);border-radius:14px;box-shadow:5px 5px 0 var(--ink);overflow:hidden;}
.msg-row{display:block;width:100%;text-align:left;cursor:pointer;background:none;border:none;border-bottom:2px solid var(--ink);
  padding:13px 14px;}
.msg-row:last-child{border-bottom:none;}
.msg-row:hover{background:#fff;}
.msg-row.sel{background:var(--coral);color:var(--paper);}
.msg-row .mr-top{display:flex;align-items:center;gap:8px;}
.msg-row .dot{width:9px;height:9px;border-radius:50%;background:var(--blue);flex:0 0 auto;}
.msg-row.read .dot{background:transparent;border:2px solid #bdb6a3;}
.msg-row.sel .dot{background:var(--paper);}
.msg-row .mr-name{font-family:var(--chunk);font-size:.78rem;text-transform:uppercase;}
.msg-row .mr-when{margin-left:auto;font-family:var(--display);font-weight:600;font-size:.66rem;color:var(--muted);}
.msg-row.sel .mr-when{color:var(--paper);}
.msg-row .mr-prev{font-weight:600;font-size:.78rem;color:var(--muted);margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.msg-row.sel .mr-prev{color:#ffe3ea;}
.msg-detail{background:var(--paper);border:3px solid var(--ink);border-radius:14px;box-shadow:5px 5px 0 var(--ink);padding:24px;min-height:260px;}
.msg-detail .md-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:8px;}
.msg-detail h3{font-family:var(--chunk);font-size:1.15rem;text-transform:uppercase;}
.msg-detail .md-email{font-family:var(--display);font-weight:600;font-size:.82rem;color:var(--blue);margin-bottom:4px;}
.msg-detail .md-when{font-family:var(--display);font-weight:600;font-size:.72rem;color:var(--muted);margin-bottom:18px;}
.msg-detail .md-body{font-weight:500;font-size:.95rem;line-height:1.55;white-space:pre-wrap;}
.msg-detail .md-actions{display:flex;gap:10px;margin-top:24px;}
.msg-empty{display:grid;place-items:center;height:240px;font-family:var(--chunk);font-size:.8rem;text-transform:uppercase;color:var(--muted);}


/* ============================================================
   ADMIN — Stats
   ============================================================ */
.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:22px;margin-bottom:30px;}
.stat-card{background:var(--paper);border:3px solid var(--ink);border-radius:16px;box-shadow:6px 6px 0 var(--ink);padding:20px 22px;}
.stat-card .sc-k{font-family:var(--chunk);font-size:.66rem;text-transform:uppercase;color:var(--muted);margin-bottom:10px;}
.stat-card .sc-v{font-family:var(--chunk);font-size:2.4rem;line-height:1;}
.stat-card .sc-sub{font-family:var(--display);font-weight:600;font-size:.74rem;color:var(--muted);margin-top:8px;}
.stat-card.accent-coral{box-shadow:6px 6px 0 var(--coral);}
.stat-card.accent-blue{box-shadow:6px 6px 0 var(--blue);}
.stat-card.accent-lime{box-shadow:6px 6px 0 #8bbf1f;}
.trend{background:var(--paper);border:3px solid var(--ink);border-radius:16px;box-shadow:6px 6px 0 var(--ink);padding:22px 24px;max-width:640px;}
.trend h3{font-family:var(--chunk);font-size:.9rem;text-transform:uppercase;margin-bottom:18px;}
.bars{display:flex;align-items:flex-end;gap:14px;height:150px;}
.bars .bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;justify-content:flex-end;height:100%;}
.bars .bar .b{width:100%;background:var(--blue);border:2.5px solid var(--ink);border-radius:7px 7px 0 0;box-shadow:2px 2px 0 var(--ink);}
.bars .bar .b.peak{background:var(--coral);}
.bars .bar .bn{font-family:var(--display);font-weight:700;font-size:.7rem;}
.bars .bar .bd{font-family:var(--chunk);font-size:.56rem;text-transform:uppercase;color:var(--muted);}
.stats-note{font-weight:600;color:var(--muted);font-size:.8rem;margin-top:18px;max-width:60ch;}


/* ============================================================
   A11Y + RESPONSIVE  (merged from both mockups)
   ============================================================ */
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}

/* admin breakpoints */
@media (max-width:920px){
  .author{grid-template-columns:1fr;}
  .previewbox{position:static;}
  .inbox{grid-template-columns:1fr;}
}
@media (max-width:640px){
  .shell{grid-template-columns:1fr;}
  .side{flex-direction:row;flex-wrap:wrap;align-items:center;border-right:none;border-bottom:3px solid var(--ink);}
  .nav{flex-direction:row;flex-wrap:wrap;}
  .side-foot{flex-direction:row;}
}

/* landing breakpoint */
@media (max-width:740px){
  .hero{gap:30px;}
  .stage .cardwrap{transform:rotate(1deg);}
  .modal .sheet{padding:22px 16px 26px;}
}
/* ============================================================
   ADMIN — Elaine's Library section  (append to end of gifdeck.css)
   Reuses .phead .field .btn .saved-flag .savebar; only .lib-* / .chip are new.
   ============================================================ */
.lib-upload{background:var(--paper);border:3px solid var(--ink);border-radius:16px;box-shadow:6px 6px 0 var(--ink);padding:22px;max-width:520px;}
.lib-upload input[type=file]{width:100%;background:#fff;border:2.5px dashed var(--ink);border-radius:9px;padding:12px;font-family:var(--body);font-weight:600;cursor:pointer;}
.lib-err{font-family:var(--body);font-weight:700;font-size:.78rem;color:#b3203a;}
.lib-filterbar{display:flex;align-items:center;gap:14px;margin:26px 0 16px;flex-wrap:wrap;}
.lib-filterbar input{flex:1;min-width:220px;background:#fff;border:2.5px solid var(--ink);border-radius:9px;padding:10px 12px;font-family:var(--body);font-weight:500;font-size:.9rem;}
.lib-count{font-family:var(--chunk);font-size:.72rem;text-transform:uppercase;color:var(--muted);white-space:nowrap;}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}
.lib-item{position:relative;background:var(--paper);border:3px solid var(--ink);border-radius:14px;box-shadow:5px 5px 0 var(--ink);overflow:hidden;}
.lib-thumb{aspect-ratio:4/3;background:#16101e;display:flex;align-items:center;justify-content:center;border-bottom:3px solid var(--ink);}
.lib-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.lib-meta{padding:11px 12px 13px;}
.lib-nm{font-family:var(--chunk);font-size:.82rem;text-transform:uppercase;line-height:1.1;margin-bottom:8px;word-break:break-word;}
.lib-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;}
.lib-tags .chip{font-family:var(--body);font-weight:700;font-size:.62rem;color:var(--ink);background:#fff;border:2px solid var(--ink);border-radius:20px;padding:2px 8px;}
.lib-size{font-family:var(--body);font-weight:700;font-size:.68rem;color:var(--muted);}
.lib-del{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:8px;border:2.5px solid var(--ink);background:#fff;color:var(--ink);font-family:var(--chunk);font-size:.74rem;line-height:0;cursor:pointer;box-shadow:2px 2px 0 var(--ink);}
.lib-del:hover{background:#b3203a;color:#fff;border-color:#b3203a;}
.lib-empty{font-family:var(--body);font-weight:600;color:var(--muted);padding:20px 0;}