/* =========================================================
   RESET & VARIABLES
   ========================================================= */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
    /* Fonts */
    --font-primary:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
    --font-display:'Space Grotesk','Inter',-apple-system,sans-serif;

    /* Sizing */
    --container:1200px;
    --radius:20px;
    --radius-sm:12px;
    --transition:cubic-bezier(.4,0,.2,1);

    /* Shared (overridden per theme) */
    --bg:#000;
    --bg-secondary:#0a0a0a;
    --bg-card:rgba(255,255,255,.04);
    --bg-card-hover:rgba(255,255,255,.08);
    --border:rgba(255,255,255,.08);
    --border-hover:rgba(255,255,255,.16);
    --text:#f5f5f7;
    --text-secondary:rgba(245,245,247,.55);
    --text-tertiary:rgba(245,245,247,.35);
    --accent:#0a84ff;
    --accent2:#bf5af2;
    --accent3:#64d2ff;
    --glow:rgba(10,132,255,.25);
    --shadow:0 8px 32px rgba(0,0,0,.4);

    --status-online:#30d158;
    --status-maintenance:#ffd60a;
    --status-offline:#ff453a;
}

[data-theme="light"]{
    --bg:#f5f5f7;
    --bg-secondary:#fff;
    --bg-card:rgba(0,0,0,.03);
    --bg-card-hover:rgba(0,0,0,.06);
    --border:rgba(0,0,0,.08);
    --border-hover:rgba(0,0,0,.14);
    --text:#1d1d1f;
    --text-secondary:rgba(29,29,31,.55);
    --text-tertiary:rgba(29,29,31,.35);
    --glow:rgba(10,132,255,.15);
    --shadow:0 8px 32px rgba(0,0,0,.08);
}

/* =========================================================
   BASE
   ========================================================= */
html{
    scroll-behavior:smooth;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    overflow-x:hidden;
}

body{
    font-family:var(--font-primary);
    background:var(--bg);
    color:var(--text);
    line-height:1.6;
    overflow-x:hidden;
    transition:background .6s var(--transition),color .6s var(--transition);
}

a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
img{max-width:100%;display:block}

.container{max-width:var(--container);margin:0 auto;padding:0 24px}

/* =========================================================
   LOADER
   ========================================================= */
#loader{
    position:fixed;inset:0;z-index:9999;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    background:var(--bg);
    transition:opacity .6s var(--transition),visibility .6s;
}
#loader.hidden{opacity:0;visibility:hidden;pointer-events:none}

.loader-ring{
    width:48px;height:48px;
    border:2px solid var(--border);
    border-top-color:var(--accent);
    border-radius:50%;
    animation:spin 1s linear infinite;
}
.loader-text{
    margin-top:16px;
    font-family:var(--font-display);
    font-size:11px;
    letter-spacing:4px;
    color:var(--text-tertiary);
    animation:pulse-text 1.5s ease-in-out infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pulse-text{0%,100%{opacity:.4}50%{opacity:1}}

/* =========================================================
   CURSOR GLOW
   ========================================================= */
#cursor-glow{
    position:fixed;
    width:600px;height:600px;
    border-radius:50%;
    pointer-events:none;
    z-index:1;
    background:radial-gradient(circle,rgba(10,132,255,.08) 0%,transparent 70%);
    transform:translate(-50%,-50%);
    transition:opacity .3s;
    will-change:transform;
    mix-blend-mode:screen;
}
[data-theme="light"] #cursor-glow{
    background:radial-gradient(circle,rgba(10,132,255,.06) 0%,transparent 70%);
    mix-blend-mode:multiply;
}

/* =========================================================
   AURORA CANVAS
   ========================================================= */
#aurora-canvas{
    position:fixed;inset:0;z-index:0;
    pointer-events:none;
    opacity:.35;
}
[data-theme="light"] #aurora-canvas{opacity:.15}

/* =========================================================
   THEME TOGGLE
   ========================================================= */
#theme-toggle{
    position:fixed;top:24px;right:24px;z-index:100;
    width:44px;height:44px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
    background:var(--bg-card);
    border:1px solid var(--border);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
    transition:all .4s var(--transition);
}
#theme-toggle:hover{
    background:var(--bg-card-hover);
    border-color:var(--border-hover);
    transform:scale(1.08);
}
#theme-toggle svg{width:20px;height:20px;transition:all .4s var(--transition)}
[data-theme="dark"] .icon-sun{display:none}
[data-theme="light"] .icon-moon{display:none}

/* =========================================================
   BACK TO TOP
   ========================================================= */
#back-top{
    position:fixed;bottom:32px;right:32px;z-index:100;
    width:44px;height:44px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
    background:var(--accent);
    color:#fff;
    opacity:0;visibility:hidden;
    transform:translateY(16px);
    transition:all .4s var(--transition);
    box-shadow:0 4px 20px rgba(10,132,255,.35);
}
#back-top.visible{opacity:1;visibility:visible;transform:translateY(0)}
#back-top:hover{transform:scale(1.1)}
#back-top svg{width:20px;height:20px}

/* =========================================================
   TOAST
   ========================================================= */
#toast-container{
    position:fixed;bottom:32px;left:50%;z-index:9998;
    display:flex;flex-direction:column-reverse;align-items:center;gap:8px;
    transform:translateX(-50%);
    pointer-events:none;
}
.toast{
    padding:12px 24px;
    border-radius:var(--radius-sm);
    background:var(--bg-card);
    border:1px solid var(--border);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
    font-size:13px;font-weight:500;
    color:var(--text);
    box-shadow:var(--shadow);
    animation:toast-in .4s var(--transition) forwards;
    pointer-events:auto;
}
.toast.out{animation:toast-out .3s var(--transition) forwards}
@keyframes toast-in{from{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes toast-out{to{opacity:0;transform:translateY(-8px) scale(.95)}}

/* =========================================================
   HERO
   ========================================================= */
#hero{
    position:relative;
    min-height:100vh;
    display:flex;align-items:center;justify-content:center;
    text-align:center;
    overflow:hidden;
    z-index:2;
}
.hero-content{position:relative;z-index:3;max-width:800px;padding:0 24px}

.hero-badge{
    display:inline-block;
    padding:6px 18px;
    border-radius:100px;
    font-family:var(--font-display);
    font-size:11px;
    letter-spacing:3px;
    font-weight:600;
    color:var(--accent);
    background:rgba(10,132,255,.1);
    border:1px solid rgba(10,132,255,.2);
    margin-bottom:28px;
}

.hero-title{
    font-family:var(--font-display);
    font-size:clamp(40px,8vw,80px);
    font-weight:800;
    line-height:1.1;
    letter-spacing:-.02em;
    margin-bottom:20px;
}
.gradient-text{
    background:linear-gradient(135deg,var(--accent),var(--accent2),var(--accent3),var(--accent));
    background-size:300% 300%;
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    background-clip:text;
    animation:gradient-shift 8s ease infinite;
}
@keyframes gradient-shift{
    0%{background-position:0% 50%}
    50%{background-position:100% 50%}
    100%{background-position:0% 50%}
}

.hero-subtitle{
    font-size:clamp(16px,2.5vw,21px);
    color:var(--text-secondary);
    font-weight:400;
    margin-bottom:40px;
    max-width:520px;
    margin-left:auto;margin-right:auto;
    line-height:1.7;
}

.hero-buttons{
    display:flex;gap:16px;
    justify-content:center;
    flex-wrap:wrap;
    margin-bottom:40px;
}

/* Buttons */
.btn{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 32px;
    border-radius:100px;
    font-size:15px;font-weight:600;
    transition:all .4s var(--transition);
    position:relative;
    overflow:hidden;
}
.btn svg{width:18px;height:18px}

.btn-primary{
    background:var(--accent);
    color:#fff;
    box-shadow:0 4px 24px rgba(10,132,255,.35);
}
.btn-primary:hover{
    transform:translateY(-2px);
    box-shadow:0 8px 32px rgba(10,132,255,.5);
}

.btn-secondary{
    background:var(--bg-card);
    border:1px solid var(--border);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
}
.btn-secondary:hover{
    background:var(--bg-card-hover);
    border-color:var(--border-hover);
    transform:translateY(-2px);
}

.hero-status{
    display:flex;align-items:center;gap:8px;
    justify-content:center;
    font-size:13px;
    color:var(--text-tertiary);
}
.status-dot{
    width:8px;height:8px;border-radius:50%;
    animation:breathe 2s ease-in-out infinite;
}
.status-dot.online{background:var(--status-online);box-shadow:0 0 8px var(--status-online)}
.status-dot.maintenance{background:var(--status-maintenance);box-shadow:0 0 8px var(--status-maintenance)}
.status-dot.offline{background:var(--status-offline);box-shadow:0 0 8px var(--status-offline)}
@keyframes breathe{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}
.status-divider{opacity:.3}

/* Scroll indicator */
.scroll-indicator{
    position:absolute;bottom:40px;left:50%;
    transform:translateX(-50%);
}
.scroll-line{
    width:1px;height:60px;
    background:linear-gradient(to bottom,var(--accent),transparent);
    animation:scroll-pulse 2s ease-in-out infinite;
}
@keyframes scroll-pulse{0%,100%{opacity:.3;transform:scaleY(1)}50%{opacity:1;transform:scaleY(.6)}}

/* =========================================================
   SECTIONS
   ========================================================= */
.section{
    position:relative;z-index:2;
    padding:120px 0;
}

.section-header{text-align:center;margin-bottom:64px}
.section-label{
    display:inline-block;
    font-family:var(--font-display);
    font-size:11px;
    letter-spacing:3px;
    font-weight:600;
    color:var(--accent);
    margin-bottom:12px;
}
.section-title{
    font-family:var(--font-display);
    font-size:clamp(28px,5vw,48px);
    font-weight:700;
    letter-spacing:-.01em;
    margin-bottom:12px;
}
.section-desc{
    font-size:16px;
    color:var(--text-secondary);
    max-width:480px;
    margin:0 auto;
}

/* =========================================================
   ADDRESS CARDS
   ========================================================= */
.address-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(340px,1fr));
    gap:20px;
}

.address-card{
    position:relative;
    padding:28px;
    border-radius:var(--radius);
    background:var(--bg-card);
    border:1px solid var(--border);
    backdrop-filter:blur(24px);
    -webkit-backdrop-filter:blur(24px);
    transition:all .5s var(--transition);
    overflow:hidden;
}
.address-card::before{
    content:'';
    position:absolute;inset:0;
    border-radius:var(--radius);
    background:linear-gradient(135deg,rgba(10,132,255,.06),transparent 60%);
    opacity:0;
    transition:opacity .5s var(--transition);
    pointer-events:none;
}
.address-card:hover{
    transform:translateY(-6px);
    border-color:var(--border-hover);
    background:var(--bg-card-hover);
    box-shadow:var(--shadow),0 0 60px var(--glow);
}
.address-card:hover::before{opacity:1}

.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.card-name{font-size:18px;font-weight:700;font-family:var(--font-display)}

.card-status{
    display:inline-flex;align-items:center;gap:6px;
    padding:4px 12px;
    border-radius:100px;
    font-size:12px;font-weight:600;
}
.card-status .dot{width:6px;height:6px;border-radius:50%}
.card-status.online{background:rgba(48,209,88,.12);color:var(--status-online)}
.card-status.online .dot{background:var(--status-online)}
.card-status.maintenance{background:rgba(255,214,10,.12);color:var(--status-maintenance)}
.card-status.maintenance .dot{background:var(--status-maintenance)}
.card-status.offline{background:rgba(255,69,58,.12);color:var(--status-offline)}
.card-status.offline .dot{background:var(--status-offline)}

.card-domain{
    font-family:'SF Mono','Fira Code','Cascadia Code',monospace;
    font-size:14px;
    color:var(--text-secondary);
    padding:10px 14px;
    border-radius:var(--radius-sm);
    background:rgba(255,255,255,.03);
    border:1px solid var(--border);
    margin-bottom:14px;
    word-break:break-all;
    transition:all .3s var(--transition);
}
[data-theme="light"] .card-domain{background:rgba(0,0,0,.02)}
.address-card:hover .card-domain{border-color:var(--border-hover)}

.card-meta{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:18px;
}
.card-time{font-size:12px;color:var(--text-tertiary)}

.card-actions{display:flex;gap:10px;position:relative;z-index:5}
.card-btn{
    flex:1;
    display:flex;align-items:center;justify-content:center;gap:6px;
    padding:10px 0;
    border-radius:var(--radius-sm);
    font-size:13px;font-weight:600;
    transition:all .3s var(--transition);
    cursor:pointer;
    position:relative;z-index:5;
}
.card-btn svg{width:14px;height:14px}
.card-btn-copy{
    background:rgba(10,132,255,.1);
    color:var(--accent);
    border:1px solid rgba(10,132,255,.15);
}
.card-btn-copy:hover{background:rgba(10,132,255,.2)}
.card-btn-go{
    background:var(--accent);
    color:#fff;
}
.card-btn-go:hover{box-shadow:0 4px 16px rgba(10,132,255,.35);transform:translateY(-1px)}

/* =========================================================
   TIMELINE / NOTICES
   ========================================================= */
.timeline{position:relative;max-width:700px;margin:0 auto}
.timeline::before{
    content:'';position:absolute;
    left:20px;top:0;bottom:0;
    width:1px;
    background:linear-gradient(to bottom,transparent,var(--border),var(--border),transparent);
}
.timeline-item{
    position:relative;
    padding:0 0 48px 56px;
}
.timeline-dot{
    position:absolute;left:14px;top:4px;
    width:13px;height:13px;
    border-radius:50%;
    background:var(--accent);
    border:3px solid var(--bg);
    box-shadow:0 0 0 2px var(--accent);
    z-index:1;
}
.timeline-dot.warning{background:var(--status-maintenance);box-shadow:0 0 0 2px var(--status-maintenance)}
.timeline-dot.danger{background:var(--status-offline);box-shadow:0 0 0 2px var(--status-offline)}

.timeline-date{
    font-size:12px;
    color:var(--text-tertiary);
    font-weight:600;
    letter-spacing:.5px;
    margin-bottom:6px;
}
.timeline-title{
    font-size:17px;font-weight:700;
    margin-bottom:6px;
}
.timeline-desc{
    font-size:14px;
    color:var(--text-secondary);
    line-height:1.7;
}
.timeline-tag{
    display:inline-block;
    padding:2px 10px;
    border-radius:100px;
    font-size:11px;font-weight:600;
    margin-top:8px;
}
.timeline-tag.info{background:rgba(10,132,255,.1);color:var(--accent)}
.timeline-tag.warn{background:rgba(255,214,10,.1);color:var(--status-maintenance)}
.timeline-tag.critical{background:rgba(255,69,58,.1);color:var(--status-offline)}

/* =========================================================
   FOOTER
   ========================================================= */
#footer{
    position:relative;z-index:2;
    padding:60px 0 40px;
    border-top:1px solid var(--border);
}
.footer-glow{
    position:absolute;top:-80px;left:50%;
    transform:translateX(-50%);
    width:400px;height:160px;
    border-radius:50%;
    background:radial-gradient(ellipse,rgba(10,132,255,.12),transparent 70%);
    pointer-events:none;
}
.footer-content{
    display:flex;align-items:center;justify-content:space-between;
    flex-wrap:wrap;gap:24px;
}
.footer-logo{
    font-family:var(--font-display);
    font-size:15px;font-weight:700;
    letter-spacing:2px;
}
.footer-copy{font-size:12px;color:var(--text-tertiary);margin-top:4px}
.footer-info{display:flex;gap:32px}
.footer-item{display:flex;flex-direction:column;gap:2px;text-align:right}
.footer-label{font-size:11px;color:var(--text-tertiary);letter-spacing:.5px;font-weight:600}
.footer-value{font-size:13px;font-weight:500}
.online-text{color:var(--status-online)}

.footer-line{
    height:1px;
    margin-top:40px;
    background:linear-gradient(90deg,transparent,var(--accent),transparent);
    opacity:.15;
}

/* =========================================================
   REVEAL ANIMATION
   ========================================================= */
.reveal{
    opacity:0;
    transform:translateY(40px);
    transition:opacity .8s var(--transition),transform .8s var(--transition);
}
.reveal.visible{opacity:1;transform:translateY(0)}

/* Stagger children */
.address-card,.timeline-item{
    opacity:0;
    transform:translateY(30px);
    transition:opacity .6s var(--transition),transform .6s var(--transition);
}
.address-card.visible,.timeline-item.visible{opacity:1;transform:translateY(0)}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media(max-width:768px){
    .section{padding:80px 0}
    .address-grid{grid-template-columns:1fr}
    .footer-content{flex-direction:column;text-align:center}
    .footer-info{flex-direction:column;gap:12px;text-align:center}
    .footer-item{text-align:center}
    #theme-toggle{top:16px;right:16px}
    #back-top{bottom:20px;right:20px}
    .hero-buttons{flex-direction:column;align-items:center}
    .btn{width:100%;max-width:280px;justify-content:center}
}

@media(max-width:480px){
    .address-card{padding:20px}
}

/* =========================================================
   MAGNETIC BUTTON HOVER AREA
   ========================================================= */
.magnetic{transition:transform .3s var(--transition)}

/* =========================================================
   SCROLLBAR
   ========================================================= */
::-webkit-scrollbar{width:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}

/* =========================================================
   SELECTION
   ========================================================= */
::selection{background:rgba(10,132,255,.3);color:#fff}

/* =========================================================
   NOISE OVERLAY (subtle grain texture)
   ========================================================= */
body::after{
    content:'';
    position:fixed;inset:0;z-index:0;
    pointer-events:none;
    opacity:.025;
    background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-repeat:repeat;
    background-size:128px 128px;
}
[data-theme="light"] body::after{opacity:.02}

/* =========================================================
   HERO RADIAL GLOW
   ========================================================= */
#hero::before{
    content:'';
    position:absolute;inset:0;z-index:1;
    background:radial-gradient(ellipse 60% 50% at 50% 45%,rgba(10,132,255,.08),transparent 70%);
    pointer-events:none;
}
[data-theme="light"] #hero::before{
    background:radial-gradient(ellipse 60% 50% at 50% 45%,rgba(10,132,255,.05),transparent 70%);
}

/* =========================================================
   BUTTON RIPPLE
   ========================================================= */
.btn::after{
    content:'';
    position:absolute;inset:0;
    border-radius:inherit;
    background:radial-gradient(circle at var(--ripple-x,50%) var(--ripple-y,50%),rgba(255,255,255,.2),transparent 60%);
    opacity:0;
    transition:opacity .5s;
    pointer-events:none;
}
.btn:active::after{opacity:1;transition:opacity 0s}

/* =========================================================
   CARD SHIMMER on hover
   ========================================================= */
.address-card::after{
    content:'';
    position:absolute;
    top:-50%;left:-50%;
    width:200%;height:200%;
    background:conic-gradient(from 0deg,transparent,rgba(10,132,255,.04),transparent 30%);
    opacity:0;
    transition:opacity .6s;
    pointer-events:none;
    animation:shimmer-spin 6s linear infinite paused;
}
.address-card:hover::after{opacity:1;animation-play-state:running}
@keyframes shimmer-spin{to{transform:rotate(360deg)}}

/* =========================================================
   SMOOTH SECTION DIVIDER GLOW
   ========================================================= */
.section::before{
    content:'';
    position:absolute;
    top:0;left:50%;
    transform:translateX(-50%);
    width:300px;height:1px;
    background:linear-gradient(90deg,transparent,var(--accent),transparent);
    opacity:.08;
}
