/* Kafal: A Student Blog — flat, no gradients. Complements Tailwind CDN. */
:root{--bg:#FFFDF7;--ink:#121212;--card:#fff;--lime:#CCFF00;--purple:#8B5CF6;--mag:#FF007A;--tang:#FF6B00;--muted:#4a4a4a;
--dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Ccircle cx='2' cy='2' r='1.4' fill='%23121212' fill-opacity='.18'/%3E%3C/svg%3E");
--grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Cpath d='M28 0H0v28' fill='none' stroke='%238B5CF6' stroke-opacity='.22'/%3E%3C/svg%3E");
--hatch:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpath d='M0 10L10 0' stroke='%23121212' stroke-opacity='.14'/%3E%3C/svg%3E")}
html.dark{--bg:#121212;--ink:#FFFDF7;--card:#1c1c1c;--muted:#c9c9c9;
--dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Ccircle cx='2' cy='2' r='1.4' fill='%23CCFF00' fill-opacity='.2'/%3E%3C/svg%3E");
--grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Cpath d='M28 0H0v28' fill='none' stroke='%23CCFF00' stroke-opacity='.12'/%3E%3C/svg%3E");
--hatch:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpath d='M0 10L10 0' stroke='%23FFFDF7' stroke-opacity='.12'/%3E%3C/svg%3E")}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;background:var(--bg) var(--dots);color:var(--ink);font-family:'Space Grotesk',system-ui,sans-serif;line-height:1.6}
h1,h2,h3,.logo{font-family:'Archivo Black','Space Grotesk',sans-serif;line-height:1.1;margin:0}
a{color:inherit}
:focus-visible{outline:3px solid var(--mag);outline-offset:2px}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
.sec{padding:56px 0}
.hdr{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:4px solid var(--ink)}
.hdr .in{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:nowrap;height:64px}
.logo{font-size:18px;white-space:nowrap;text-decoration:none;background:var(--lime);color:#121212;border:3px solid #121212;padding:2px 10px;box-shadow:3px 3px 0 #121212}
.nav{display:none;gap:4px;flex-wrap:nowrap}
.nav a{font-size:13px;font-weight:700;white-space:nowrap;text-decoration:none;padding:4px 8px;border:2px solid transparent}
.nav a:hover,.nav a[aria-current]{border-color:var(--ink);background:var(--purple);color:#fff}
@media(min-width:1024px){.nav{display:flex}.burger{display:none!important}}
.btn{display:inline-block;font-weight:700;border:3px solid #121212;background:var(--lime);color:#121212;padding:8px 16px;box-shadow:4px 4px 0 #121212;cursor:pointer;text-decoration:none;font-family:inherit;font-size:15px;transition:transform .15s cubic-bezier(.3,1.6,.5,1),box-shadow .15s}
.btn:hover{transform:translate(-2px,-2px) rotate(-1deg);box-shadow:7px 7px 0 #121212}
.btn:active{transform:translate(3px,3px);box-shadow:1px 1px 0 #121212}
.btn.p{background:var(--purple);color:#fff}.btn.m{background:var(--mag);color:#fff}.btn.t{background:var(--tang);color:#121212}
.icon{padding:6px 10px}
#mnav{display:none;border-top:3px solid var(--ink);padding:10px 20px;background:var(--bg)}
#mnav.open{display:grid;gap:6px}#mnav a{font-weight:700;padding:8px;border:2px solid var(--ink);text-decoration:none;background:var(--card)}
.banner{background:var(--tang);color:#121212;border-bottom:4px solid #121212;font-weight:700}
.banner .in{display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap;padding:8px 20px}
.banner .btn{padding:2px 10px;font-size:13px;box-shadow:2px 2px 0 #121212;background:#fff}
.marquee{overflow:hidden;background:#121212;color:var(--lime);border-block:4px solid #121212;white-space:nowrap;font-family:'Archivo Black';padding:6px 0}
.marquee span{display:inline-block;padding-left:100%;animation:mq 28s linear infinite}
@keyframes mq{to{transform:translateX(-100%)}}
.card{background:var(--card);border:3px solid var(--ink);box-shadow:6px 6px 0 var(--ink);padding:16px;position:relative;transition:transform .2s,box-shadow .2s;will-change:transform}
.card:hover{box-shadow:9px 9px 0 var(--ink)}
.dotbg{background-image:var(--dots)}.hatch{background-image:var(--hatch)}
.ph{position:relative;overflow:hidden;border:3px solid var(--ink);background:var(--purple) var(--hatch);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;text-align:center;font-size:12px;padding:6px;width:100%}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.r169{aspect-ratio:16/9}.r34{aspect-ratio:3/4}.r11{aspect-ratio:1/1}
.av{width:64px;flex:none}.av.lg{width:96px}
.sticker{display:inline-block;font-weight:800;font-size:12px;border:2px dashed #121212;background:var(--lime);color:#121212;padding:2px 8px;transform:rotate(-3deg);margin:0 4px 4px 0}
.sticker.m{background:var(--mag);color:#fff}.sticker.p{background:var(--purple);color:#fff}.sticker.t{background:var(--tang)}.sticker.r{transform:rotate(3deg)}
.pill{display:inline-block;font-size:12px;font-weight:700;border:2px solid var(--ink);border-radius:999px;padding:1px 10px;background:var(--card)}
.tag{cursor:pointer;font-family:inherit;color:var(--ink)}.tag.on{background:var(--mag);color:#fff}
.grid{display:grid;gap:24px}.g3{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}.g2{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
.h2{font-size:clamp(28px,5vw,44px);margin-bottom:8px;display:inline-block;background:var(--lime);color:#121212;padding:2px 10px;border:3px solid #121212;box-shadow:5px 5px 0 #121212;transform:rotate(-1deg)}
.muted{color:var(--muted)}
input,textarea,select{width:100%;font:inherit;background:var(--card);color:var(--ink);border:3px solid var(--ink);padding:8px 10px;box-shadow:3px 3px 0 var(--ink)}
.ov{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:60;display:none;align-items:center;justify-content:center;padding:16px}
.ov.open{display:flex}
.modal{background:var(--bg);border:4px solid var(--ink);box-shadow:8px 8px 0 var(--mag);max-width:720px;width:100%;max-height:90vh;overflow:auto;padding:24px;position:relative;animation:pop .25s cubic-bezier(.3,1.5,.5,1)}
@keyframes pop{from{transform:scale(.92) rotate(-1deg);opacity:0}}
.x{position:absolute;top:10px;right:10px}
.author{border:3px solid var(--ink);background:var(--lime) var(--dots);color:#121212;padding:14px;margin-top:24px;display:flex;gap:14px;flex-wrap:wrap}
.author a{font-weight:700;margin-right:10px}
.cookie{position:fixed;left:16px;bottom:16px;max-width:400px;z-index:55;background:var(--lime);color:#121212;border:4px solid #121212;box-shadow:6px 6px 0 #121212;padding:16px;display:none}
.cookie.open{display:block;animation:pop .3s}
.sw{display:flex;justify-content:space-between;align-items:center;gap:12px;border:3px solid var(--ink);padding:10px;margin:10px 0;background:var(--card)}
.sw input{width:22px;height:22px;box-shadow:none;accent-color:var(--mag)}
.tl{border-left:6px solid var(--ink);margin-left:10px;padding-left:20px}.tl>div{margin-bottom:18px;position:relative}
.tl>div:before{content:"";position:absolute;left:-34px;top:6px;width:16px;height:16px;background:var(--mag);border:3px solid var(--ink)}
.ftr{background:#121212;color:#FFFDF7;border-top:4px solid var(--lime);padding:36px 0}
.ftr a{color:#FFFDF7;margin-right:12px}
.prose p{margin:0 0 14px}.legal h2{font-size:22px;margin:24px 0 8px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Current issue hero (home) */
.mag-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px}
.mag-head h2{font-size:clamp(36px,7vw,68px)}
.mag-head .sticker{margin-top:28px;transform:rotate(3deg)}
.hero{display:flex;gap:40px;align-items:center;flex-wrap:wrap}
.hero .cov{width:min(340px,100%);flex:none;box-shadow:none}
.hero .cov span{display:none}
.hero-txt{flex:1;min-width:260px;max-width:780px}
.hero-txt h3{font-size:clamp(32px,5vw,56px);margin:6px 0 18px}
.hero-txt p{margin:0 0 20px;max-width:62ch}

/* Submissions page */
.big{font-size:clamp(44px,9vw,84px);margin:4px 0 32px}
.big2{font-size:clamp(34px,6vw,56px);margin:48px 0 24px}
.sub-card{max-width:600px;padding:22px 18px}
.sub-card:hover{box-shadow:6px 6px 0 var(--ink)}
.sub-card h2{font-size:20px;margin:16px 0 6px}
.sub-card p{margin:0;font-size:14px}
.tl2{border-left:6px solid var(--ink);padding-left:20px;margin-left:6px;display:grid;gap:18px;max-width:900px}
.tl2 .card{padding:14px 16px;font-size:14px}
.tl2 .card:hover{box-shadow:6px 6px 0 var(--ink)}

/* Dot texture runs behind every section edge to edge (set once on body) */
section.dotbg,section.hatch{background-image:none}
