:root{--bg:#0b0c10;--panel:#14161a;--muted:#8b98a5;--text:#e6edf3;--primary:#3b82f6;--border:#1f2329;--accent:#22c55e;--danger:#ef4444}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu;background:var(--bg);color:var(--text)}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.skip-link:focus{position:fixed;left:16px;top:12px;width:auto;height:auto;background:#3b82f6;color:#fff;padding:8px 10px;border-radius:6px;z-index:1000}.container{max-width:1000px;margin:0 auto;padding:24px}.row{display:flex;align-items:center}.row.between{justify-content:space-between}.row.gap{gap:12px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.header{border-bottom:1px solid var(--border);position:sticky;top:0;background:#0b0c10cc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.brand{font-weight:700;color:var(--text);text-decoration:none}.brand{display:inline-flex;gap:8px;align-items:center}.brand-logo{height:24px;width:auto;display:block}.nav a{color:var(--text);text-decoration:none;margin:0 8px}.nav a.active{color:var(--primary)}.button{background:var(--primary);color:#fff;border:0;padding:10px 14px;border-radius:8px;cursor:pointer;text-decoration:none}.button.ghost{background:transparent;border:1px solid var(--border)}.button:disabled{opacity:.6;cursor:not-allowed}.button.blue{background:#3b82f6}.button.orange{background:#f59e0b}.button.green{background:#22c55e}button:focus-visible,.button:focus-visible,a:focus-visible{outline:2px solid #93c5fd;outline-offset:2px;border-radius:6px}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;margin:16px 0}.hero h1{font-size:32px;margin-bottom:8px}.form{display:grid;gap:12px}label{display:grid;gap:6px;font-size:14px}input,select{background:#0f1115;border:1px solid var(--border);color:var(--text);padding:10px;border-radius:8px}.list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.chip{background:#0f1115;border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:16px;cursor:pointer}.chip.green{background:#0f1a12;border-color:#16351f;color:#86efac}.chip.orange{background:#1a160f;border-color:#352a16;color:#fbbf24}.chip.blue{background:#0f121a;border-color:#162035;color:#93c5fd}.muted{color:var(--muted)}.badge{padding:4px 8px;border-radius:12px;border:1px solid var(--border)}.badge.success{background:#0f1a12;border-color:#16351f;color:#86efac}.badge.danger{background:#1a0f10;border-color:#35161f;color:#fca5a5}.error{color:#f87171}.cards{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}@media (max-width: 800px){.grid-2,.grid{grid-template-columns:1fr}}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.day-col{border:1px solid var(--border);border-radius:8px;padding:8px;background:#0f1115;min-height:120px}.day-events{display:grid;gap:8px}.month-grid{display:grid;gap:12px}.tab{background:#0f1115;border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:8px;cursor:pointer}.tab.active{background:#1a2233;border-color:#2a3b59;color:#93c5fd}.bubble{max-width:70%;background:#0f1115;border:1px solid var(--border);padding:8px 10px;border-radius:12px}.toast-container{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:1000}.toast-container.mobile-top{top:16px;bottom:auto}.toast{background:#0f1115;border:1px solid #2a3b59;color:#e6edf3;padding:10px 12px;border-radius:8px;box-shadow:0 6px 20px #0000004d}.toast.success{border-color:#16351f;color:#86efac}.toast.error{border-color:#35161f;color:#fca5a5}.toast.info{border-color:#2a3b59;color:#93c5fd}.skeleton{background:linear-gradient(90deg,#0f1115 25%,#151820 37%,#0f1115 63%);background-size:400% 100%;animation:skeleton 1.2s ease-in-out infinite;border-radius:6px}@keyframes skeleton{0%{background-position:100% 50%}to{background-position:0 50%}}
