/* CNE Management design system — "CNE/OS". Shared by the public site, owner console and resident portal.
   Fonts are self-hosted (SIL OFL): Inter (UI), Space Grotesk (display), JetBrains Mono (data). */
@font-face{font-family:"Inter";src:url(/assets/fonts/inter.woff2) format("woff2");font-weight:300 800;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url(/assets/fonts/spacegrotesk.woff2) format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(/assets/fonts/jetbrainsmono.woff2) format("woff2");font-weight:400 600;font-display:swap}
:root{
  --bg:#05070c;--bg-2:#090d16;--bg-3:#0e1420;--panel:rgba(15,21,34,.62);--panel-2:rgba(22,30,47,.7);--solid:#0c111c;--solid-2:#121a29;
  --line:rgba(148,163,184,.12);--line-2:rgba(148,163,184,.2);--line-3:rgba(148,163,184,.32);
  --text:#e7edf7;--text-2:#c3cddd;--muted:#8794aa;--dim:#5a667b;
  --cyan:#22d3ee;--cyan-2:#67e8f9;--violet:#8b5cf6;--violet-2:#a78bfa;--emerald:#34d399;--amber:#fbbf24;--rose:#fb7185;--blue:#60a5fa;
  --cyan-a:rgba(34,211,238,.14);--violet-a:rgba(139,92,246,.16);--emerald-a:rgba(52,211,153,.14);--amber-a:rgba(251,191,36,.14);--rose-a:rgba(251,113,133,.15);
  --grad:linear-gradient(120deg,#22d3ee 0%,#818cf8 55%,#a855f7 100%);
  --grad-soft:linear-gradient(120deg,rgba(34,211,238,.18),rgba(139,92,246,.18));
  --glow:0 0 0 1px rgba(34,211,238,.25),0 8px 40px -8px rgba(34,211,238,.35);
  --shadow:0 24px 60px -24px rgba(0,0,0,.75);--shadow-sm:0 6px 20px -10px rgba(0,0,0,.6);
  --r:16px;--r-sm:10px;--r-lg:24px;
  --f-ui:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--f-disp:"Space Grotesk","Inter",ui-sans-serif,system-ui,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --ease:cubic-bezier(.2,.8,.2,1);color-scheme:dark}
[data-theme=light]{
  --bg:#f4f6fb;--bg-2:#eef1f8;--bg-3:#e6eaf3;--panel:rgba(255,255,255,.72);--panel-2:rgba(255,255,255,.9);--solid:#ffffff;--solid-2:#f7f9fd;
  --line:rgba(15,23,42,.09);--line-2:rgba(15,23,42,.14);--line-3:rgba(15,23,42,.24);
  --text:#0b1220;--text-2:#26324a;--muted:#5b677d;--dim:#8a95a8;
  --cyan:#0891b2;--cyan-2:#0e7490;--violet:#7c3aed;--violet-2:#6d28d9;--emerald:#059669;--amber:#b45309;--rose:#e11d48;--blue:#2563eb;
  --cyan-a:rgba(8,145,178,.1);--violet-a:rgba(124,58,237,.1);--emerald-a:rgba(5,150,105,.1);--amber-a:rgba(180,83,9,.1);--rose-a:rgba(225,29,72,.09);
  --grad:linear-gradient(120deg,#0891b2 0%,#6366f1 55%,#9333ea 100%);--grad-soft:linear-gradient(120deg,rgba(8,145,178,.1),rgba(124,58,237,.1));
  --glow:0 0 0 1px rgba(8,145,178,.25),0 8px 30px -10px rgba(99,102,241,.35);--shadow:0 24px 50px -28px rgba(15,23,42,.35);--shadow-sm:0 6px 18px -12px rgba(15,23,42,.3);color-scheme:light}
*,*:before,*:after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.6 var(--f-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01","ss03"}
img,svg,canvas{display:block;max-width:100%}
a{color:var(--cyan);text-decoration:none}a:hover{color:var(--cyan-2)}
h1,h2,h3,h4{font-family:var(--f-disp);font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0 0 .6rem;color:var(--text)}
p{margin:0 0 1rem}
::selection{background:rgba(34,211,238,.3);color:var(--text)}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:6px}
.mono{font-family:var(--f-mono);font-feature-settings:"zero"}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hidden{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}
/* glass */
.glass{background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,0) 40%),var(--panel);border:1px solid var(--line);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border-radius:var(--r);box-shadow:var(--shadow-sm)}
/* buttons */
.btn{--h:40px;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:var(--h);padding:0 1.05rem;border-radius:12px;border:1px solid var(--line-2);background:var(--panel-2);color:var(--text);font:600 .875rem/1 var(--f-ui);letter-spacing:.005em;cursor:pointer;white-space:nowrap;text-decoration:none;transition:transform .15s var(--ease),border-color .2s,background .2s,box-shadow .2s;position:relative}
.btn:hover{border-color:var(--line-3);color:var(--text);transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.btn-primary,.btn.pri,.btn.gold,.btn-gold{background:var(--grad);border-color:transparent;color:#04121a;box-shadow:0 8px 30px -10px rgba(99,102,241,.7),inset 0 1px 0 rgba(255,255,255,.35)}
[data-theme=light] .btn-primary,[data-theme=light] .btn.pri,[data-theme=light] .btn.gold,[data-theme=light] .btn-gold{color:#fff}
.btn-primary:hover,.btn.pri:hover,.btn.gold:hover,.btn-gold:hover{color:#04121a;box-shadow:0 12px 36px -10px rgba(99,102,241,.9),inset 0 1px 0 rgba(255,255,255,.4)}
[data-theme=light] .btn-primary:hover,[data-theme=light] .btn.pri:hover,[data-theme=light] .btn.gold:hover{color:#fff}
.btn-ghost,.btn-outline{background:transparent}
.btn-lg{--h:50px;padding:0 1.5rem;font-size:.95rem;border-radius:14px}
.btn.sm{--h:30px;padding:0 .7rem;font-size:.78rem;border-radius:9px}
.btn.danger{color:var(--rose);border-color:rgba(251,113,133,.35)}.btn.danger:hover{background:var(--rose-a)}
.btn .k,.kbd{font:500 .7rem/1 var(--f-mono);padding:.22rem .38rem;border-radius:6px;border:1px solid var(--line-2);color:var(--muted);background:var(--bg-3)}
.icon-btn{width:40px;padding:0}
/* chips / pills / tags */
.chip{display:inline-flex;align-items:center;gap:.45rem;padding:.32rem .7rem;border-radius:999px;border:1px solid var(--line-2);background:var(--panel);font:500 .75rem/1 var(--f-mono);letter-spacing:.04em;color:var(--text-2);text-transform:uppercase}
.dot{width:7px;height:7px;border-radius:50%;background:var(--emerald);box-shadow:0 0 0 0 rgba(52,211,153,.7);animation:pulse 2.2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(52,211,153,.6)}70%{box-shadow:0 0 0 9px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}
.tag{display:inline-flex;align-items:center;gap:.3rem;padding:.14rem .55rem;border-radius:999px;font:600 .7rem/1.4 var(--f-ui);letter-spacing:.02em;background:var(--bg-3);color:var(--text-2);border:1px solid var(--line);white-space:nowrap;text-transform:capitalize}
.tag:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.tag.ok{color:var(--emerald);background:var(--emerald-a);border-color:rgba(52,211,153,.25)}
.tag.warn{color:var(--amber);background:var(--amber-a);border-color:rgba(251,191,36,.25)}
.tag.err{color:var(--rose);background:var(--rose-a);border-color:rgba(251,113,133,.28)}
.tag.gold,.tag.info{color:var(--violet-2);background:var(--violet-a);border-color:rgba(139,92,246,.28)}
.tag.cyan{color:var(--cyan);background:var(--cyan-a);border-color:rgba(34,211,238,.25)}
.tag.demo{color:var(--amber);background:var(--amber-a);border-color:rgba(251,191,36,.3);font-family:var(--f-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.tag.demo:before{display:none}
/* forms */
input,select,textarea{font:inherit;font-size:.9rem;width:100%;height:42px;padding:0 .8rem;border-radius:11px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--text);transition:border-color .2s,box-shadow .2s,background .2s}
textarea{height:auto;min-height:110px;padding:.65rem .8rem;resize:vertical;line-height:1.5}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:2rem}
input[type=checkbox],input[type=radio]{width:18px;height:18px;padding:0;accent-color:var(--cyan);flex:none}
input[type=file]{height:auto;padding:.6rem}
input::placeholder,textarea::placeholder{color:var(--dim)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 4px var(--cyan-a);background:var(--bg-3)}
label{font-size:.78rem;font-weight:600;color:var(--text-2);letter-spacing:.01em}
.field{margin-bottom:1rem}.field label{display:block;margin-bottom:.4rem}
.check{display:flex!important;gap:.6rem;align-items:flex-start;font-weight:500;color:var(--text-2);font-size:.88rem;line-height:1.45}
.row{display:flex;gap:1rem;flex-wrap:wrap}.row>.field{flex:1 1 220px}
.note{font-size:.82rem;color:var(--muted)}
.alert{padding:.8rem 1rem;border-radius:12px;font-size:.88rem;margin:0 0 1rem;border:1px solid var(--line-2)}
.alert.ok{background:var(--emerald-a);border-color:rgba(52,211,153,.3);color:var(--emerald)}
.alert.err{background:var(--rose-a);border-color:rgba(251,113,133,.3);color:var(--rose)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
/* theme toggle */
.theme-btn svg{width:18px;height:18px}.theme-btn .sun{display:none}[data-theme=light] .theme-btn .sun{display:block}[data-theme=light] .theme-btn .moon{display:none}
/* background fx */
.bg-grid{position:fixed;inset:0;z-index:-2;pointer-events:none;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 30%,transparent 75%);opacity:.55}
.bg-glow{position:fixed;inset:-20vh -10vw auto;height:80vh;z-index:-3;pointer-events:none;background:radial-gradient(40% 50% at 20% 20%,rgba(34,211,238,.16),transparent 70%),radial-gradient(35% 45% at 80% 10%,rgba(139,92,246,.18),transparent 70%)}
[data-theme=light] .bg-glow{opacity:.6}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
