/* Master of Ice — shared styles for index.html and projects.html */
:root{
  color-scheme:dark;
  --bg:#030812;--text:#f5fbff;--muted:#b7ccd6;--accent:#59dcff;
  --line:rgba(190,239,255,.20);--panel:rgba(5,15,26,.68);
  --ov-a:rgba(2,7,15,.95);--ov-b:rgba(3,10,19,.60);--ov-c:rgba(3,10,19,.08);
  --modal-a:#0c263a;--modal-b:#030c16;--scrim:rgba(1,5,11,.80);
  --btn-fg:#031019;--btn-bg:linear-gradient(135deg,#c8f3ff,#59dcff);
  --glow:rgba(89,220,255,.16);
  --sans:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
}
html[data-theme="frost"]{
  color-scheme:light;
  --bg:#e9f4fc;--text:#061018;--muted:#2f5060;--accent:#006f8c;
  --line:rgba(4,50,69,.22);--panel:rgba(244,250,255,.78);
  --ov-a:rgba(244,250,255,.96);--ov-b:rgba(228,243,252,.80);--ov-c:rgba(175,222,246,.20);
  --modal-a:#fafdff;--modal-b:#e2f1fa;--scrim:rgba(224,238,247,.82);
  --btn-fg:#effbff;--btn-bg:linear-gradient(135deg,#006987,#003e55);
  --glow:rgba(0,111,140,.14);
}
*{box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth}
body{margin:0;min-height:100svh;color:var(--text);font-family:var(--sans);-webkit-text-size-adjust:100%}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}

/* Background scene: fixed layer, so it behaves the same on every device */
.scene{position:fixed;inset:0;z-index:-1;background:var(--bg) url('frozen-wasteland-optimized.jpg') 58% center/cover no-repeat}
.scene:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--ov-a) 0,var(--ov-b) 38%,var(--ov-c) 72%),linear-gradient(0deg,var(--ov-a),transparent 42%)}
.scene.soft:after{background:linear-gradient(180deg,var(--ov-b),var(--ov-a) 85%)}

.site{min-height:100svh;display:flex;flex-direction:column}
.shell{width:min(1180px,calc(100% - 40px));margin-inline:auto}

/* Navigation */
.nav{height:72px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.brand-mark{color:var(--accent);font-size:1.45rem;line-height:1;filter:drop-shadow(0 0 10px var(--accent))}
.nav-links{display:flex;align-items:center;gap:10px}
.nav-links a{padding:9px 18px;border:1px solid var(--line);border-radius:999px;background:var(--panel);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--text);font-weight:600;transition:color .2s,border-color .2s}
.theme-toggle,.social{display:grid;place-items:center;border:1px solid var(--line);color:var(--text);background:var(--panel);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .2s,color .2s,border-color .2s,box-shadow .2s}
.theme-toggle svg,.social svg{width:22px;height:22px;fill:currentColor}
.theme-toggle{width:44px;height:44px;border-radius:14px;cursor:pointer;padding:0;font:inherit}
.snow-icon{display:none;font-size:23px;line-height:1;text-shadow:0 0 8px currentColor;font-variant-emoji:text}
html[data-theme="frost"] .moon-icon{display:none}
html[data-theme="frost"] .snow-icon{display:block}
.social .mail-icon{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.brand-mark{font-variant-emoji:text}

/* Typography */
h1,h2{font-family:var(--serif);font-weight:500;letter-spacing:-.02em}
.lead{max-width:34rem;margin:0;color:var(--muted);font-size:clamp(1rem,1.7vw,1.2rem);line-height:1.7}
.crack{display:block;width:240px;height:24px;margin:22px 0;color:var(--accent);filter:drop-shadow(0 0 6px var(--accent));-webkit-mask-image:linear-gradient(90deg,#000 65%,transparent);mask-image:linear-gradient(90deg,#000 65%,transparent)}

/* Home */
.home{flex:1;display:flex;align-items:center;padding:56px 0}
.home h1{margin:0;font-size:clamp(3rem,8.4vw,6.4rem);line-height:.96}
.buttons{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.button{min-height:50px;padding:0 24px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);font-weight:700;background:var(--panel);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .2s,border-color .2s}
.button.primary{color:var(--btn-fg);background:var(--btn-bg);border-color:transparent}
.socials{display:flex;gap:12px;margin-top:26px}
.social{width:48px;height:48px;border-radius:15px}

/* Projects */
.projects-main{flex:1;padding:72px 0 80px}
.projects-main h1{margin:0;font-size:clamp(2.8rem,7vw,5rem);line-height:1}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:44px}
.card{min-height:250px;padding:30px;display:flex;flex-direction:column;justify-content:flex-end;border:1px solid var(--line);border-radius:22px;background:var(--panel);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.card.featured{grid-column:span 2;min-height:320px;background:radial-gradient(circle at 85% 20%,var(--glow),transparent 40%),var(--panel)}
.card h2{margin:0 0 10px;font-size:2rem}
.card p{margin:0 0 22px;max-width:40rem;color:var(--muted);line-height:1.65}
.status{align-self:flex-start;display:inline-flex;align-items:center;gap:9px;padding:7px 13px;border:1px solid var(--line);border-radius:999px;color:var(--accent);font-size:.85rem;font-weight:650}
.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}

.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 20px;padding:20px 0 26px;color:var(--muted);font-size:.8rem}

/* About popup (opens with the #about anchor, works without JavaScript) */
.modal{position:fixed;inset:0;z-index:30;display:none;overflow-y:auto;padding:20px;background:var(--scrim);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.modal:target{display:grid}
.modal .backdrop{position:fixed;inset:0}
.modal-panel{position:relative;z-index:1;isolation:isolate;overflow:hidden;width:min(680px,100%);margin:auto;padding:clamp(44px,6vw,60px) clamp(24px,6vw,60px) clamp(32px,5vw,52px);border:1px solid var(--line);border-radius:28px;background:radial-gradient(circle at 80% 100%,var(--glow),transparent 55%),linear-gradient(145deg,var(--modal-a),var(--modal-b));box-shadow:0 38px 110px rgba(0,0,0,.45)}
/* Faint snowflake shadow, cropped by the bottom-right corner; adds no height */
.flake{position:absolute;z-index:-1;right:-58px;bottom:-58px;width:170px;height:170px;color:var(--accent);opacity:.13;pointer-events:none}
.modal-panel .lead{max-width:29rem}
.modal-panel:after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,transparent,var(--accent),transparent)}
.modal-panel h2{margin:0 0 18px;font-size:clamp(2.2rem,7vw,3.3rem);line-height:1.05}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0;list-style:none}
.tags li{padding:7px 14px;border:1px solid var(--line);border-radius:999px;color:var(--accent);font-size:.85rem;font-weight:650}
.close{position:absolute;top:16px;right:16px;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:13px;background:var(--panel);font-size:1.45rem;line-height:1;transition:color .2s,border-color .2s}

/* Mobile: one set of rules. The castle stays visible at the top, text sits low. */
@media(max-width:720px){
  .grid{grid-template-columns:1fr}
  .card{min-height:0;padding:26px}
  .card.featured{grid-column:auto;min-height:0}
  .projects-main{padding:48px 0 56px}
}
@media(min-width:721px){
  .flake{right:-92px;bottom:-92px;width:250px;height:250px;opacity:.2}
  .modal-panel .lead{max-width:28rem}
}
@media(max-width:640px){
  .shell{width:min(100% - 28px,1180px)}
  .nav{height:68px}
  .brand{font-size:.78rem;letter-spacing:.07em;gap:9px}
  .brand-mark{font-size:1.25rem}
  .nav-links{gap:8px;font-size:.92rem}
  .nav-links a{padding:8px 15px}
  .theme-toggle{width:42px;height:42px;border-radius:13px}
  .nav-links .about-link{display:none}
  .scene{background-position:57% center}
  .scene:after{background:linear-gradient(0deg,var(--ov-a) 8%,var(--ov-b) 52%,var(--ov-c) 100%)}
  .scene.soft:after{background:linear-gradient(180deg,var(--ov-b),var(--ov-a) 80%)}
  .home{align-items:flex-end;padding:40px 0 34px;min-height:calc(100svh - 68px - 66px)}
  .home h1{font-size:clamp(3.1rem,17vw,4.6rem)}
  .crack{width:200px;margin:18px 0}
  .buttons{margin-top:24px}
  .button{flex:1 1 100%}
  .socials{margin-top:22px;gap:10px}
  .social{width:46px;height:46px;border-radius:14px}
  .modal{padding:max(16px,env(safe-area-inset-top)) 14px max(20px,env(safe-area-inset-bottom))}
  .modal-panel{border-radius:24px;padding:46px 22px 30px}
  .modal-panel h2{padding-right:44px}
  .modal-panel .lead{max-width:none}
}
@media(max-width:360px){
  .brand{font-size:.7rem}
  .nav-links{gap:6px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
}
/* Hover effects only on devices that really hover (no sticky highlight on touch) */
@media(hover:hover){
  .nav-links a:hover{color:var(--accent);border-color:var(--accent)}
  .theme-toggle:hover,.social:hover{transform:translateY(-2px);color:var(--accent);border-color:var(--accent);box-shadow:0 8px 28px var(--glow)}
  .button:hover{transform:translateY(-2px);border-color:var(--accent)}
  .close:hover{color:var(--accent);border-color:var(--accent)}
}
