:root[data-theme="dark"]{
  --bg:#0A0A0A; --bg-elevated:#111110; --surface:#151513; --surface-hover:#1D1D1A;
  --border:#2A2A26; --border-soft:#1E1E1B;
  --text:#F3F2ED; --text-dim:#948F84; --text-faint:#5C584F;
  --accent:#D83831; --accent-text:#FF6156; --accent-soft:rgba(216,56,49,.16); --accent-soft-strong:rgba(216,56,49,.30);
}
:root[data-theme="light"]{
  --bg:#FBFAF8; --bg-elevated:#FFFFFF; --surface:#FFFFFF; --surface-hover:#F3F2ED;
  --border:#E4E2DB; --border-soft:#ECEAE3;
  --text:#14130F; --text-dim:#716C61; --text-faint:#A8A297;
  --accent:#D83831; --accent-text:#B72B25; --accent-soft:rgba(216,56,49,.08); --accent-soft-strong:rgba(216,56,49,.16);
}
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; height:100%; }
body{ background:var(--bg); color:var(--text); font-family:'Inter',system-ui,sans-serif; -webkit-font-smoothing:antialiased; transition:background .35s ease, color .35s ease; }
.mono{ font-family:'IBM Plex Mono',ui-monospace,monospace; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:4px; }

.app{ max-width:1120px; margin:0 auto; padding:24px 20px 80px; min-height:100vh; display:flex; flex-direction:column; }
@keyframes riseIn{ from{ opacity:0; transform:translateY(10px);} to{ opacity:1; transform:translateY(0);} }
.rise{ animation:riseIn .5s cubic-bezier(.16,1,.3,1) both; }

header.top{ display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding-bottom:22px; border-bottom:1px solid var(--border-soft); margin-bottom:40px; flex-wrap:wrap; }
.brand{ display:flex; align-items:center; gap:14px; }
.brand-mark{ width:40px; height:40px; border-radius:10px; background:var(--accent); display:flex; align-items:center; justify-content:center; flex-shrink:0; position:relative; overflow:hidden; color:#fff; }
.brand-mark::after{ content:""; position:absolute; inset:0; background:repeating-linear-gradient(115deg, rgba(255,255,255,.16) 0 2px, transparent 2px 7px); }
.brand-mark svg{ position:relative; z-index:1; width:20px; height:20px; }
.brand-text h1{ margin:0; font-size:19px; font-weight:700; letter-spacing:.01em; }
.brand-text p{ margin:2px 0 0; font-size:12px; color:var(--text-dim); }
.icon-btn{ width:36px; height:36px; border-radius:9px; border:1px solid var(--border); background:var(--surface); display:flex; align-items:center; justify-content:center; color:var(--text); transition:all .2s ease; }
.icon-btn:hover{ background:var(--surface-hover); border-color:var(--text-faint); }
.icon-btn svg{ width:17px; height:17px; }

.intro{ margin-bottom:36px; max-width:640px; }
.intro h2{ font-family:'Space Grotesk',sans-serif; font-size:30px; margin:0 0 10px; }
.intro p{ font-size:14px; color:var(--text-dim); line-height:1.6; margin:0; }

.tools-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px,1fr)); gap:18px; flex:1; }
.tool-card{ background:var(--surface); border:1px solid var(--border); border-radius:18px; padding:26px; display:flex; flex-direction:column; transition:all .2s ease; position:relative; overflow:hidden; }
.tool-card:hover{ border-color:var(--accent); transform:translateY(-2px); }
.tool-card .icon-circle{ width:46px; height:46px; border-radius:12px; background:var(--accent); display:flex; align-items:center; justify-content:center; margin-bottom:20px; color:#fff; }
.tool-card .icon-circle svg{ width:22px; height:22px; }
.tool-card h3{ font-size:17px; margin:0 0 8px; }
.tool-card p{ font-size:13px; color:var(--text-dim); line-height:1.55; margin:0 0 22px; flex:1; }
.tool-card .open-link{ display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:var(--accent-text); }
.tool-card .open-link svg{ width:15px; height:15px; transition:transform .15s ease; }
.tool-card:hover .open-link svg{ transform:translateX(3px); }

footer.foot{ margin-top:50px; padding-top:18px; border-top:1px solid var(--border-soft); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; font-size:11px; color:var(--text-faint); }
