:root{--pond-deep:#0c2419;--pond:#14402a;--moss:#2d6a4f;--lily:#52b788;--frog:#74c69d;--spring:#b7e4c7;--pad:#e4f2e4;--cream:#f5faf2;--bark:#6f5b43;--clay:#bf5b3d;--gold:#e3b23c;--ink:#10261b;--ink-soft:#5b7366;--line:#cfe3d4;--radius:12px;--shadow:0 1px 2px #0c241914, 0 6px 16px #0c24190f;color:var(--ink);background-color:var(--cream);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background-image:radial-gradient(circle at 12% 18%,#52b78824,#0000 42%),radial-gradient(circle at 88% 8%,#74c69d1f,#0000 38%);background-attachment:fixed;min-height:100vh;margin:0}h1,h2,h3{margin:0;line-height:1.2}button,input,textarea{font:inherit;color:inherit}input,textarea{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;padding:.6rem .75rem}input:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--lily);outline-offset:2px}textarea{resize:vertical}button{cursor:pointer;background:0 0;border:none}.primary{background:var(--moss);color:#fff;border-radius:999px;padding:.6rem 1.1rem;font-weight:600;transition:background .12s}.primary:hover:not(:disabled){background:var(--pond)}.primary:disabled{background:var(--line);color:var(--ink-soft);cursor:not-allowed}.ghost{border:1px solid var(--line);color:var(--moss);cursor:pointer;background:#fff;border-radius:999px;padding:.55rem 1rem;font-size:.9rem;font-weight:600;display:inline-block}.ghost:hover{border-color:var(--lily);background:var(--pad)}.link{color:var(--moss);text-underline-offset:2px;padding:0;font-size:.9rem;text-decoration:underline}.link:hover{color:var(--pond)}.muted{color:var(--ink-soft);margin:0;font-size:.9rem}.center{text-align:center}.error{color:var(--clay);background:#bf5b3d1a;border-radius:10px;margin:0;padding:.5rem .75rem;font-size:.9rem}.gate{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.gate-card{border:1px solid var(--line);width:100%;max-width:22rem;box-shadow:var(--shadow);background:#fff;border-radius:16px;flex-direction:column;gap:.5rem;padding:1.75rem;display:flex}.gate-head{text-align:center;margin-bottom:.75rem}.gate-frog{font-size:2.5rem;display:block}.gate-card label{color:var(--ink-soft);font-size:.85rem;font-weight:600}.gate-card .primary{margin-top:.75rem}.topbar{z-index:10;background:var(--pond);color:var(--pad);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.5rem;font-size:1.05rem;display:flex}.topbar .whoami{align-items:center;gap:.75rem;display:flex}.topbar .muted,.topbar .link{color:var(--spring)}.topbar .link:hover{color:#fff}.feed{flex-direction:column;gap:1rem;max-width:36rem;margin:0 auto;padding:1.25rem 1rem 4rem;display:flex}.composer{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;flex-direction:column;gap:.75rem;padding:1rem;transition:border-color .12s,background .12s;display:flex}.composer.dragging{border-color:var(--lily);background:var(--pad);border-style:dashed}.composer-actions{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.preview{align-items:flex-start;gap:.75rem;display:flex}.preview img{border:1px solid var(--line);object-fit:cover;border-radius:10px;max-width:10rem;max-height:10rem}.rejection{border-left:3px solid var(--gold);color:var(--bark);background:#e3b23c1f;border-radius:8px;margin:0;padding:.6rem .75rem;font-size:.9rem}.post{border:1px solid var(--line);border-left:3px solid var(--lily);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;flex-direction:column;gap:.6rem;padding:1rem;display:flex}.post-head{justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.85rem;display:flex}.post-head .author{color:var(--pond);font-weight:700}.post-head time{color:var(--ink-soft)}.post-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.post-image{object-fit:contain;background:var(--pad);border-radius:10px;width:100%;max-height:32rem}.image-skeleton{background:linear-gradient(90deg, var(--pad), var(--spring), var(--pad));background-size:200% 100%;border-radius:10px;width:100%;height:12rem;animation:1.4s ease-in-out infinite ripple}@keyframes ripple{0%{background-position:0 0}to{background-position:-200% 0}}.post-foot{display:flex}.badge{background:var(--pad);color:var(--moss);border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:700}@media (prefers-reduced-motion:reduce){.image-skeleton{animation:none}}
