
:root{
    --bg:#020712;
    --cyan:#20c9ff;
    --cyan-soft:#71e7ff;
    --blue:#126cff;
    --purple:#a347ff;
    --purple-soft:#d998ff;
    --green:#2def95;
    --text:#f4f9ff;
    --muted:#86a6bf;
}

*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif}
body{overflow-x:hidden}
button,input{font:inherit}

.brand{display:flex;align-items:center;gap:14px}
.brand-mark{display:flex;align-items:center;gap:3px;height:34px}
.brand-mark span{display:block;width:4px;border-radius:8px;background:linear-gradient(180deg,#4cecff,#2057ff);box-shadow:0 0 14px rgba(38,210,255,.85)}
.brand-mark span:nth-child(1),.brand-mark span:nth-child(5){height:15px}
.brand-mark span:nth-child(2),.brand-mark span:nth-child(4){height:25px}
.brand-mark span:nth-child(3){height:34px}
.brand-name{font-size:24px;font-weight:900;letter-spacing:1.5px}
.brand-name span{color:var(--cyan)}
.state-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 9px var(--green),0 0 20px rgba(45,239,149,.48)}
.green{color:#4cf2a4!important}

/* LOGIN - keep elegant and independent */
.login-shell{
    min-height:100vh;
    background:
        radial-gradient(circle at 50% 14%,rgba(0,128,255,.22),transparent 34%),
        radial-gradient(circle at 82% 70%,rgba(115,44,255,.16),transparent 30%),
        linear-gradient(180deg,#020712 0%,#03111e 56%,#020610 100%);
}
.brandbar{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;border-bottom:1px solid rgba(89,187,255,.17);background:rgba(2,8,18,.75);backdrop-filter:blur(16px)}
.system-state{display:flex;align-items:center;gap:9px;color:#bde8ff;font-size:11px;letter-spacing:2px}
.login-stage{min-height:calc(100vh - 160px);display:grid;place-items:center;position:relative;padding:60px 20px 100px}
.earth{position:absolute;width:760px;height:360px;top:5%;left:50%;transform:translateX(-50%);border-radius:50%;border-top:1px solid rgba(76,185,255,.33);background:radial-gradient(circle at 50% 65%,rgba(17,109,255,.42),rgba(3,16,31,.14) 58%,transparent 72%);box-shadow:0 -30px 90px rgba(0,127,255,.22)}
.orbit{position:absolute;left:50%;top:28%;border:1px solid rgba(65,181,255,.20);border-radius:50%}
.orbit-a{width:670px;height:260px;transform:translate(-50%,-50%) rotate(8deg)}
.orbit-b{width:590px;height:320px;transform:translate(-50%,-50%) rotate(-10deg)}
.glass-card{background:linear-gradient(180deg,rgba(9,30,53,.90),rgba(4,15,29,.86));border:1px solid rgba(99,199,255,.35);box-shadow:0 0 45px rgba(21,158,255,.18),inset 0 0 45px rgba(17,96,255,.05);backdrop-filter:blur(20px)}
.login-card{position:relative;z-index:3;width:min(430px,94vw);padding:56px 42px 34px;border-radius:26px;text-align:center}
.lock-orb{width:82px;height:82px;margin:-96px auto 22px;border-radius:50%;display:grid;place-items:center;font-size:29px;background:radial-gradient(circle,#0c5d9c,#031322 72%);border:1px solid rgba(91,217,255,.85);box-shadow:0 0 36px rgba(24,201,255,.35)}
.eyebrow{font-size:11px;letter-spacing:4px;color:#76d6ff;margin-bottom:12px}
.login-card h1{margin:0;font-size:42px}.login-card h1 span{color:var(--cyan)}
.subtitle{color:var(--muted);letter-spacing:2px;margin:8px 0 28px}
.login-form{display:grid;gap:14px}
.input-wrap{display:flex;align-items:center;height:54px;border:1px solid rgba(93,175,255,.36);border-radius:13px;background:rgba(5,16,31,.75);padding:0 14px}
.input-icon{width:28px;color:var(--cyan)}
.input-wrap input{width:100%;border:0;outline:0;background:none;color:#fff}
.primary-btn{height:56px;border:0;border-radius:13px;color:#fff;font-weight:900;cursor:pointer;background:linear-gradient(90deg,#087cff,#3b55ff 58%,#9547ff);box-shadow:0 0 28px rgba(45,108,255,.35)}
.secure-note{font-size:12px;color:#7899b4;margin-top:22px}
.alert{padding:10px 12px;border-radius:9px;margin-bottom:14px;font-size:13px}
.alert.error{color:#ffc1cb;border:1px solid rgba(255,74,100,.32);background:rgba(255,74,100,.10)}
.side-panel,.footer-strip{display:none}

/* PORTAL V3 */
.portal-v3{
    min-height:100vh;
    position:relative;
    overflow:hidden;
    background:#020712;
}

.space-bg{
    position:absolute;
    inset:0;
    background:
        radial-gradient(circle at 50% 17%,rgba(18,109,255,.20),transparent 29%),
        radial-gradient(circle at 15% 62%,rgba(17,190,255,.10),transparent 26%),
        radial-gradient(circle at 86% 66%,rgba(152,55,255,.12),transparent 30%),
        linear-gradient(180deg,#020711 0%,#03101d 47%,#020610 100%);
}

.space-bg:before,
.space-bg:after{
    content:"";
    position:absolute;
    border-radius:50%;
    filter:blur(70px);
}
.space-bg:before{width:460px;height:460px;left:-170px;top:26%;background:rgba(0,145,255,.10)}
.space-bg:after{width:500px;height:500px;right:-190px;top:34%;background:rgba(137,47,255,.11)}

.space-grid{
    position:absolute;
    inset:0;
    opacity:.16;
    background-image:
        linear-gradient(rgba(66,175,255,.08) 1px,transparent 1px),
        linear-gradient(90deg,rgba(66,175,255,.08) 1px,transparent 1px);
    background-size:52px 52px;
    mask-image:linear-gradient(to bottom,rgba(0,0,0,.65),transparent 92%);
}

.space-vignette{
    position:absolute;
    inset:0;
    background:radial-gradient(circle at 50% 38%,transparent 0 32%,rgba(1,6,13,.12) 52%,rgba(1,4,10,.70) 100%);
}

.portal-v3-header{
    position:relative;
    z-index:20;
    height:76px;
    display:grid;
    grid-template-columns:1fr auto 1fr;
    align-items:center;
    padding:0 34px;
    border-bottom:1px solid rgba(84,190,255,.17);
    background:rgba(2,8,18,.68);
    backdrop-filter:blur(17px);
}

.portal-navline{display:flex;align-items:center;gap:18px;font-size:10px;letter-spacing:4px;color:#8bd9ff}
.portal-navline i{font-style:normal;opacity:.45}
.portal-status{justify-self:end;display:flex;align-items:center;gap:10px;color:#c7eeff;font-size:10px;letter-spacing:2px}
.portal-time{margin-left:10px;color:#54d0ff;font-weight:700}
.portal-exit{margin-left:8px;padding:8px 12px;border-radius:9px;border:1px solid rgba(87,193,255,.28);color:#d9f6ff;background:rgba(6,24,43,.65);cursor:pointer}

.portal-v3-main{
    position:relative;
    z-index:3;
    width:min(1520px,96vw);
    height:calc(100vh - 76px);
    min-height:760px;
    margin:0 auto;
}

.hud-card{
    position:absolute;
    top:18px;
    width:290px;
    height:166px;
    padding:17px;
    border-radius:17px;
    border:1px solid rgba(83,196,255,.28);
    background:linear-gradient(180deg,rgba(8,34,58,.75),rgba(3,15,29,.73));
    box-shadow:0 0 28px rgba(19,161,255,.12),inset 0 0 30px rgba(19,93,255,.04);
    backdrop-filter:blur(14px);
}

.hud-left{left:18px}
.hud-right{right:18px}
.hud-purple{border-color:rgba(157,78,255,.31);box-shadow:0 0 28px rgba(155,68,255,.10)}
.hud-heading{font-size:10px;letter-spacing:2.4px;color:#84d9ff}
.hud-purple .hud-heading{color:#d0a1ff}

.mini-radar{
    position:relative;
    height:76px;
    margin:10px 0 7px;
    overflow:hidden;
    border-radius:11px;
    background:radial-gradient(circle at 50% 50%,rgba(18,125,255,.15),transparent 62%),rgba(3,13,25,.45);
}
.mini-radar-ring{position:absolute;left:50%;top:50%;border:1px solid rgba(69,195,255,.24);border-radius:50%;transform:translate(-50%,-50%)}
.mini-radar-ring.one{width:120px;height:46px}.mini-radar-ring.two{width:170px;height:66px}
.mini-node{position:absolute;width:7px;height:7px;border-radius:50%;background:#55e9ff;box-shadow:0 0 13px #55e9ff}
.mini-node.a{left:28%;top:54%}.mini-node.b{left:49%;top:31%}.mini-node.c{right:25%;top:62%}

.mini-bars{height:76px;margin:10px 0 7px;padding:7px 15px;display:flex;align-items:flex-end;gap:7px;border-radius:11px;background:rgba(7,17,33,.48)}
.mini-bars i{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#dc64ff,#7343ff);box-shadow:0 0 11px rgba(164,68,255,.26)}
.mini-bars i:nth-child(1){height:26%}.mini-bars i:nth-child(2){height:45%}.mini-bars i:nth-child(3){height:35%}.mini-bars i:nth-child(4){height:68%}.mini-bars i:nth-child(5){height:56%}.mini-bars i:nth-child(6){height:80%}.mini-bars i:nth-child(7){height:62%}
.hud-data{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hud-data small,.hud-data strong{display:block}.hud-data small{font-size:8px;color:#7896ad;letter-spacing:1px}.hud-data strong{font-size:10px;margin-top:3px;letter-spacing:.6px}

.globe-stage{
    position:absolute;
    left:50%;
    top:10px;
    width:760px;
    height:350px;
    transform:translateX(-50%);
    pointer-events:none;
}

.globe-aura{
    position:absolute;
    left:50%;
    bottom:0;
    width:620px;
    height:210px;
    transform:translateX(-50%);
    border-radius:50%;
    background:radial-gradient(circle at 50% 60%,rgba(20,133,255,.25),rgba(5,25,48,.05) 58%,transparent 72%);
    filter:blur(3px);
}

.globe-shell{
    position:absolute;
    left:50%;
    bottom:14px;
    width:620px;
    height:220px;
    transform:translateX(-50%);
    border-radius:50%;
    border:1px solid rgba(78,197,255,.42);
    overflow:hidden;
    box-shadow:0 0 48px rgba(24,130,255,.15),inset 0 0 55px rgba(23,108,255,.11);
    background:
        radial-gradient(circle at 50% 70%,rgba(13,81,154,.20),rgba(4,18,34,.05) 62%,transparent 72%);
}

.longitude,.latitude{position:absolute;border:1px solid rgba(78,201,255,.18);border-radius:50%}
.longitude.l1{left:50%;top:50%;width:150px;height:215px;transform:translate(-50%,-50%)}
.longitude.l2{left:50%;top:50%;width:330px;height:215px;transform:translate(-50%,-50%)}
.latitude.lat1{left:50%;top:22%;width:540px;height:70px;transform:translateX(-50%)}
.latitude.lat2{left:50%;top:44%;width:585px;height:90px;transform:translateX(-50%)}
.latitude.lat3{left:50%;top:67%;width:520px;height:70px;transform:translateX(-50%)}
.geo-dot{position:absolute;width:8px;height:8px;border-radius:50%;background:#63ecff;box-shadow:0 0 10px #63ecff,0 0 20px rgba(75,187,255,.75)}
.gd1{left:16%;top:50%}.gd2{left:31%;top:28%}.gd3{left:49%;top:17%}.gd4{right:28%;top:32%}.gd5{right:15%;top:57%}

.orbit-line{position:absolute;left:50%;top:62%;border:1px solid rgba(83,202,255,.22);border-radius:50%}
.orbit-line.orbit-a{width:700px;height:160px;transform:translate(-50%,-50%) rotate(5deg)}
.orbit-line.orbit-b{width:590px;height:230px;transform:translate(-50%,-50%) rotate(-7deg)}
.orbit-line.orbit-c{width:470px;height:285px;transform:translate(-50%,-50%)}

.center-core{
    position:absolute;
    z-index:8;
    left:50%;
    top:142px;
    width:360px;
    transform:translateX(-50%);
    padding:31px 28px 22px;
    text-align:center;
    border-radius:23px;
    border:1px solid rgba(104,211,255,.48);
    background:linear-gradient(180deg,rgba(8,31,56,.88),rgba(4,14,28,.88));
    box-shadow:0 0 44px rgba(20,165,255,.20),inset 0 0 38px rgba(13,107,255,.05);
    backdrop-filter:blur(16px);
}

.center-lock{
    width:64px;
    height:64px;
    margin:-64px auto 17px;
    border-radius:50%;
    display:grid;
    place-items:center;
    font-size:24px;
    background:radial-gradient(circle,#0b5f9e,#031323 72%);
    border:1px solid rgba(90,220,255,.78);
    box-shadow:0 0 32px rgba(35,188,255,.33);
}

.core-kicker{font-size:9px;letter-spacing:4px;color:#73d4ff}
.center-core h1{margin:9px 0 7px;font-size:36px;letter-spacing:1px}.center-core h1 span{color:var(--cyan)}
.center-core p{margin:0 auto;max-width:285px;color:#91aec4;font-size:11px;line-height:1.55}
.core-auth{margin-top:15px;display:flex;justify-content:center;align-items:center;gap:8px;font-size:9px;letter-spacing:1.2px;color:#a0d4ef}

.module-card-v3{
    position:absolute;
    z-index:6;
    top:245px;
    width:430px;
    height:455px;
    padding:19px;
    overflow:hidden;
    border-radius:25px;
    backdrop-filter:blur(15px);
}

.control-module{
    left:20px;
    border:1px solid rgba(79,206,255,.42);
    background:linear-gradient(180deg,rgba(6,30,53,.89),rgba(3,15,28,.91));
    box-shadow:0 0 38px rgba(26,172,255,.14),inset 0 0 48px rgba(10,99,255,.05);
    transform:perspective(1100px) rotateY(3deg);
}

.accounting-module{
    right:20px;
    border:1px solid rgba(164,82,255,.46);
    background:linear-gradient(180deg,rgba(19,24,58,.89),rgba(11,12,36,.91));
    box-shadow:0 0 38px rgba(150,68,255,.14),inset 0 0 48px rgba(115,48,255,.05);
    transform:perspective(1100px) rotateY(-3deg);
}

.module-top-glow{position:absolute;left:-10%;right:-10%;top:0;height:2px;background:linear-gradient(90deg,transparent,#5ce6ff,transparent);box-shadow:0 0 18px #5ce6ff}
.module-top-glow.purple{background:linear-gradient(90deg,transparent,#c259ff,transparent);box-shadow:0 0 18px #c259ff}

.module-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:8px;letter-spacing:1.4px;color:#8bdeff;border:1px solid rgba(76,192,255,.24);background:rgba(4,22,39,.52)}
.purple-badge{color:#d09bff;border-color:rgba(164,77,255,.25)}

.module-visual-v3{
    position:relative;
    height:145px;
    margin:14px 0 16px;
    overflow:hidden;
    border-radius:17px;
    border:1px solid rgba(81,180,255,.18);
    background:radial-gradient(circle at 50% 50%,rgba(24,130,255,.18),transparent 58%),linear-gradient(160deg,rgba(8,39,66,.74),rgba(3,13,25,.64));
}
.visual-accounting{border-color:rgba(164,77,255,.20);background:radial-gradient(circle at 50% 55%,rgba(155,61,255,.18),transparent 58%),linear-gradient(160deg,rgba(26,21,59,.78),rgba(8,11,28,.65))}

.radar-large{position:absolute;left:50%;top:50%;border-radius:50%;border:1px solid rgba(77,205,255,.24);transform:translate(-50%,-50%)}
.radar-large.r1{width:125px;height:125px}.radar-large.r2{width:82px;height:82px}
.radar-sweep{position:absolute;left:50%;top:50%;width:110px;height:1px;background:linear-gradient(90deg,rgba(90,228,255,.85),transparent);transform-origin:left center;animation:sweep 5s linear infinite}
@keyframes sweep{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.radar-node{position:absolute;width:8px;height:8px;border-radius:50%;background:#57e8ff;box-shadow:0 0 14px #57e8ff}
.rn1{left:32%;top:39%}.rn2{left:56%;top:28%}.rn3{right:29%;bottom:28%}

.finance-orb{position:absolute;bottom:36px;border-radius:22px 22px 9px 9px;background:linear-gradient(180deg,#cf69ff,#7037d7);box-shadow:0 0 17px rgba(176,69,255,.24)}
.fo1{left:29%;width:46px;height:43px}.fo2{left:44%;width:52px;height:67px}.fo3{left:60%;width:58px;height:89px}

.finance-bars{position:absolute;right:18px;top:18px;width:108px;height:60px;display:flex;align-items:flex-end;gap:5px}
.finance-bars i{flex:1;border-radius:3px 3px 0 0;background:linear-gradient(180deg,#df7cff,#7949ff)}
.finance-bars i:nth-child(1){height:28%}.finance-bars i:nth-child(2){height:46%}.finance-bars i:nth-child(3){height:40%}.finance-bars i:nth-child(4){height:67%}.finance-bars i:nth-child(5){height:84%}

.visual-label{position:absolute;left:14px;bottom:10px;color:#6da6c7;font-size:8px;letter-spacing:1.8px}

.module-info-row{display:flex;align-items:center;gap:14px}
.module-icon{flex:0 0 56px;width:56px;height:56px;border-radius:17px;display:grid;place-items:center;font-size:28px}
.big-blue{color:#78edff;border:1px solid rgba(77,207,255,.49);background:rgba(7,74,112,.24);box-shadow:0 0 24px rgba(28,188,255,.13)}
.big-purple{color:#dfa2ff;border:1px solid rgba(170,83,255,.52);background:rgba(88,38,127,.24);box-shadow:0 0 24px rgba(163,68,255,.14)}
.module-info-row h2{margin:0 0 5px;font-size:27px}
.module-info-row p{margin:0;color:#91adc2;font-size:11px;line-height:1.45}

.module-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:16px 0 12px}
.module-kpis div{padding:9px 10px;border-radius:10px;border:1px solid rgba(90,174,229,.13);background:rgba(2,11,22,.48)}
.module-kpis span,.module-kpis strong{display:block}.module-kpis span{color:#7596ad;font-size:7px;letter-spacing:1px}.module-kpis strong{margin-top:4px;font-size:9px;letter-spacing:.4px}

.module-main-btn{width:100%;height:48px;border:0;border-radius:13px;color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center;gap:18px;cursor:pointer;transition:.18s ease}
.module-main-btn:hover{transform:translateY(-2px);filter:brightness(1.08)}
.blue-btn{background:linear-gradient(90deg,#087dff,#2a5fff 55%,#624dff);box-shadow:0 0 24px rgba(31,112,255,.28)}
.purple-btn{background:linear-gradient(90deg,#6840ff,#9347ff 55%,#b441ff);box-shadow:0 0 24px rgba(146,65,255,.26)}

.portal-footer-v3{
    position:absolute;
    left:50%;
    bottom:14px;
    width:720px;
    transform:translateX(-50%);
    text-align:center;
}

.footer-slogan{display:flex;align-items:center;justify-content:center;gap:15px;color:#8dc8e8;font-size:8px;letter-spacing:3px}
.footer-slogan span{width:85px;height:1px;background:linear-gradient(90deg,transparent,rgba(106,210,255,.50))}
.footer-slogan span:last-child{background:linear-gradient(90deg,rgba(106,210,255,.50),transparent)}

.footer-icons{margin-top:14px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.footer-icons>div{display:flex;align-items:center;justify-content:center;gap:8px}
.footer-icons b{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;color:#65dcff;border:1px solid rgba(86,204,255,.34);background:rgba(4,27,47,.56);box-shadow:0 0 14px rgba(33,174,255,.09)}
.footer-icons span{text-align:left}.footer-icons strong,.footer-icons small{display:block}.footer-icons strong{font-size:8px;letter-spacing:1.2px}.footer-icons small{margin-top:3px;color:#7795aa;font-size:7px}

.toast{position:fixed;right:24px;bottom:24px;z-index:30;min-width:300px;padding:16px 18px;display:grid;gap:4px;border-radius:13px;border:1px solid rgba(104,195,255,.30);background:rgba(5,20,37,.94);box-shadow:0 18px 50px rgba(0,0,0,.35),0 0 28px rgba(24,199,255,.12);transform:translateY(130%);opacity:0;transition:.25s}
.toast.show{transform:translateY(0);opacity:1}.toast strong{font-size:13px}.toast span{color:#88a9bf;font-size:12px}

@media (max-width:1280px){
    .portal-navline{display:none}
    .portal-v3-header{grid-template-columns:1fr 1fr}
    .module-card-v3{width:385px}
    .center-core{width:330px}
    .hud-card{width:245px}
}

@media (max-width:1040px){
    .portal-v3{overflow:auto}
    .portal-v3-main{height:auto;min-height:auto;display:grid;grid-template-columns:1fr;gap:20px;padding:24px 0 40px}
    .hud-card,.globe-stage,.center-core{display:none}
    .module-card-v3,.portal-footer-v3{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:100%;height:auto;transform:none}
    .portal-footer-v3{transform:none;margin-top:4px}
}

@media (max-width:720px){
    .portal-v3-header{padding:0 14px}
    .portal-status>span:not(.state-dot){display:none}
    .brand-name{font-size:18px}
    .portal-v3-main{width:95vw}
    .module-kpis{grid-template-columns:1fr}
    .footer-icons{grid-template-columns:1fr 1fr}
    .module-info-row{align-items:flex-start}
}


/* ============================================================
   V4 - RIFINITURA E PROPORZIONI
   Nessun cambio di concept: solo bilanciamento visivo.
============================================================ */

@media (min-width:1041px){

    .portal-v3-main{
        width:min(1560px,97vw);
        height:calc(100vh - 76px);
        min-height:780px;
    }

    /* HUD un po' più vicini al centro e leggermente più compatti */
    .hud-card{
        top:16px;
        width:275px;
        height:156px;
        padding:16px;
    }

    .hud-left{
        left:34px;
    }

    .hud-right{
        right:34px;
    }

    /* Globo più presente e leggermente più alto */
    .globe-stage{
        top:0;
        width:840px;
        height:365px;
    }

    .globe-shell{
        width:680px;
        height:236px;
        bottom:18px;
    }

    .globe-aura{
        width:690px;
        height:228px;
    }

    .orbit-line.orbit-a{
        width:760px;
        height:170px;
    }

    .orbit-line.orbit-b{
        width:650px;
        height:245px;
    }

    .orbit-line.orbit-c{
        width:520px;
        height:300px;
    }

    /* Centro più importante senza diventare invasivo */
    .center-core{
        top:132px;
        width:390px;
        padding:34px 30px 24px;
        border-radius:25px;
        box-shadow:
            0 0 54px rgba(20,165,255,.24),
            0 0 110px rgba(30,100,255,.10),
            inset 0 0 42px rgba(13,107,255,.06);
    }

    .core-halo{
        position:absolute;
        left:50%;
        top:50%;
        width:470px;
        height:210px;
        transform:translate(-50%,-50%);
        border-radius:50%;
        border:1px solid rgba(61,199,255,.10);
        box-shadow:0 0 60px rgba(25,161,255,.10);
        pointer-events:none;
        z-index:-1;
    }

    .center-lock{
        width:68px;
        height:68px;
        margin:-69px auto 18px;
        font-size:25px;
    }

    .center-core h1{
        font-size:40px;
    }

    .center-core p{
        max-width:310px;
        font-size:11.5px;
    }

    /* Card più alte ma più sollevate, così entrano meglio nello schermo */
    .module-card-v3{
        top:228px;
        width:445px;
        height:442px;
        padding:18px;
    }

    .control-module{
        left:28px;
        transform:perspective(1200px) rotateY(2.2deg);
    }

    .accounting-module{
        right:28px;
        transform:perspective(1200px) rotateY(-2.2deg);
    }

    .module-visual-v3{
        height:135px;
        margin:13px 0 15px;
    }

    .module-info-row h2{
        font-size:28px;
    }

    .module-info-row p{
        font-size:10.8px;
    }

    .module-kpis{
        margin:14px 0 11px;
    }

    .module-main-btn{
        height:46px;
    }

    /* Footer finalmente completamente visibile e più staccato dal bordo */
    .portal-footer-v3{
        bottom:26px;
        width:760px;
    }

    .footer-slogan{
        font-size:8.5px;
        letter-spacing:3.2px;
    }

    .footer-icons{
        margin-top:16px;
    }

    /* Migliore leggibilità generale */
    .hud-heading,
    .core-kicker,
    .module-badge{
        text-shadow:0 0 12px rgba(88,209,255,.20);
    }

    .accounting-module .module-badge{
        text-shadow:0 0 12px rgba(190,106,255,.18);
    }

    /* Manteniamo il radar come punto forte */
    .radar-sweep{
        width:118px;
        background:linear-gradient(
            90deg,
            rgba(100,236,255,.95),
            rgba(100,236,255,.18) 58%,
            transparent
        );
        box-shadow:0 0 10px rgba(87,232,255,.20);
        animation:sweep 4.4s linear infinite;
    }

    .radar-node{
        box-shadow:
            0 0 8px #57e8ff,
            0 0 18px rgba(87,232,255,.75);
    }
}

/* Ottimizzazione per display 1920x1080 con browser chrome visibile */
@media (min-width:1400px) and (max-height:900px){

    .portal-v3-main{
        min-height:720px;
    }

    .hud-card{
        top:12px;
        height:146px;
    }

    .mini-radar,
    .mini-bars{
        height:67px;
    }

    .globe-stage{
        top:-8px;
        height:335px;
    }

    .center-core{
        top:118px;
        width:375px;
        padding:31px 28px 21px;
    }

    .center-lock{
        width:62px;
        height:62px;
        margin:-62px auto 15px;
    }

    .center-core h1{
        font-size:37px;
    }

    .module-card-v3{
        top:211px;
        height:425px;
    }

    .module-visual-v3{
        height:126px;
    }

    .module-info-row h2{
        font-size:26px;
    }

    .portal-footer-v3{
        bottom:12px;
    }

    .footer-icons{
        margin-top:11px;
    }

    .footer-icons b{
        width:31px;
        height:31px;
    }
}


/* ============================================================
   V5 - TITOLO CENTRALE ANIMATO + EFFETTI LUCE
============================================================ */

.center-core{
    overflow:visible;
}

.center-core:before{
    content:"";
    position:absolute;
    left:50%;
    top:48%;
    width:340px;
    height:150px;
    transform:translate(-50%,-50%);
    border-radius:50%;
    background:radial-gradient(circle, rgba(34,170,255,.17) 0%, rgba(34,170,255,.08) 32%, rgba(163,71,255,.08) 56%, transparent 78%);
    filter:blur(14px);
    animation:corePulseGlow 4.8s ease-in-out infinite;
    pointer-events:none;
    z-index:-1;
}

.center-core:after{
    content:"";
    position:absolute;
    left:50%;
    top:56%;
    width:250px;
    height:36px;
    transform:translateX(-50%);
    border-radius:50%;
    background:radial-gradient(circle, rgba(26,139,255,.26), rgba(26,139,255,.08) 52%, transparent 72%);
    filter:blur(10px);
    animation:coreFloorLight 4.4s ease-in-out infinite;
    pointer-events:none;
    z-index:-1;
}

.core-light-beam{
    position:absolute;
    top:34px;
    width:170px;
    height:170px;
    border-radius:50%;
    pointer-events:none;
    filter:blur(18px);
    opacity:.65;
    mix-blend-mode:screen;
    z-index:-1;
}

.beam-left{
    left:24px;
    background:radial-gradient(circle at 30% 50%, rgba(41,202,255,.42) 0%, rgba(41,202,255,.18) 34%, transparent 72%);
    animation:beamFloatLeft 6.2s ease-in-out infinite;
}

.beam-right{
    right:24px;
    background:radial-gradient(circle at 70% 50%, rgba(179,86,255,.40) 0%, rgba(179,86,255,.17) 34%, transparent 72%);
    animation:beamFloatRight 6.6s ease-in-out infinite;
}

.core-light-orb{
    position:absolute;
    top:116px;
    width:10px;
    height:10px;
    border-radius:50%;
    pointer-events:none;
    z-index:2;
}

.orb-left{
    left:38px;
    background:#5ef1ff;
    box-shadow:0 0 10px #5ef1ff,0 0 24px rgba(94,241,255,.85),0 0 50px rgba(94,241,255,.35);
    animation:orbDriftLeft 4.8s ease-in-out infinite;
}

.orb-right{
    right:44px;
    background:#d978ff;
    box-shadow:0 0 10px #d978ff,0 0 24px rgba(217,120,255,.85),0 0 50px rgba(217,120,255,.35);
    animation:orbDriftRight 5.3s ease-in-out infinite;
}

.core-title{
    position:relative;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:0;
    margin:10px 0 8px;
    font-size:40px;
    letter-spacing:1px;
    line-height:1;
    animation:titleFloat 4.6s ease-in-out infinite;
}

.core-title .title-edge,
.core-title .title-pulse{
    position:relative;
    display:inline-block;
    font-weight:900;
    background-size:200% 100%;
    -webkit-background-clip:text;
    background-clip:text;
    -webkit-text-fill-color:transparent;
    text-shadow:none;
}

.core-title .title-edge{
    background-image:linear-gradient(90deg, #f6fbff 0%, #9feeff 34%, #f8fdff 63%, #87d9ff 100%);
    animation:titleShimmerEdge 5.5s linear infinite;
}

.core-title .title-pulse{
    background-image:linear-gradient(90deg, #3ec8ff 0%, #79e8ff 28%, #8e7cff 63%, #32c8ff 100%);
    animation:titleShimmerPulse 4.8s linear infinite;
}

.core-title:before{
    content:"EDGEPULSE";
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    font:inherit;
    letter-spacing:inherit;
    color:rgba(63,204,255,.14);
    text-shadow:0 0 18px rgba(63,204,255,.35), 0 0 38px rgba(63,204,255,.18);
    filter:blur(5px);
    z-index:-1;
    animation:titleBackGlow 4.8s ease-in-out infinite;
    pointer-events:none;
    white-space:nowrap;
}

.core-title:after{
    content:"";
    position:absolute;
    left:50%;
    top:56%;
    width:104%;
    height:16px;
    transform:translateX(-50%);
    border-radius:50%;
    background:linear-gradient(90deg, rgba(55,206,255,0), rgba(55,206,255,.26), rgba(180,89,255,.24), rgba(55,206,255,0));
    filter:blur(12px);
    z-index:-1;
    animation:titleLightSweep 3.8s ease-in-out infinite;
}

@keyframes titleFloat{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-4px)}
}

@keyframes titleShimmerEdge{
    0%{background-position:0% 50%}
    100%{background-position:200% 50%}
}

@keyframes titleShimmerPulse{
    0%{background-position:200% 50%}
    100%{background-position:0% 50%}
}

@keyframes titleBackGlow{
    0%,100%{opacity:.72; transform:translate(-50%,-50%) scale(1)}
    50%{opacity:1; transform:translate(-50%,-50%) scale(1.03)}
}

@keyframes titleLightSweep{
    0%,100%{opacity:.55; transform:translateX(-50%) scaleX(.92)}
    50%{opacity:1; transform:translateX(-50%) scaleX(1.07)}
}

@keyframes corePulseGlow{
    0%,100%{opacity:.72; transform:translate(-50%,-50%) scale(1)}
    50%{opacity:1; transform:translate(-50%,-50%) scale(1.08)}
}

@keyframes coreFloorLight{
    0%,100%{opacity:.45; transform:translateX(-50%) scaleX(.94)}
    50%{opacity:.95; transform:translateX(-50%) scaleX(1.08)}
}

@keyframes beamFloatLeft{
    0%,100%{transform:translate(0,0) scale(1)}
    50%{transform:translate(12px,-8px) scale(1.08)}
}

@keyframes beamFloatRight{
    0%,100%{transform:translate(0,0) scale(1)}
    50%{transform:translate(-12px,8px) scale(1.08)}
}

@keyframes orbDriftLeft{
    0%,100%{transform:translate(0,0); opacity:.8}
    50%{transform:translate(18px,-10px); opacity:1}
}

@keyframes orbDriftRight{
    0%,100%{transform:translate(0,0); opacity:.82}
    50%{transform:translate(-16px,12px); opacity:1}
}

@media (min-width:1041px){
    .core-title{
        font-size:44px;
    }
}

@media (min-width:1400px) and (max-height:900px){
    .core-title{
        font-size:40px;
    }

    .core-light-beam{
        width:150px;
        height:150px;
        top:40px;
    }
}

@media (max-width:1040px){
    .core-title{
        font-size:36px;
    }
}


/* ============================================================
   V6 - REFINEMENT CINEMATICO + SCANNER ENERGY + CTA WOW
============================================================ */

.center-core{
    background:
        radial-gradient(circle at var(--mouse-x,50%) var(--mouse-y,40%), rgba(58,178,255,.10), transparent 42%),
        linear-gradient(180deg, rgba(7,20,38,.93), rgba(5,18,34,.90));
    isolation:isolate;
}

.center-core .title-energy{
    position:absolute;
    left:50%;
    top:112px;
    transform:translateX(-50%);
    height:22px;
    border-radius:999px;
    filter:blur(12px);
    pointer-events:none;
    z-index:-1;
    opacity:.85;
}

.center-core .energy-a{
    width:220px;
    background:linear-gradient(90deg, rgba(29,197,255,0), rgba(29,197,255,.62), rgba(170,97,255,.55), rgba(29,197,255,0));
    animation:energySlideA 4.5s ease-in-out infinite;
}

.center-core .energy-b{
    width:150px;
    top:128px;
    background:linear-gradient(90deg, rgba(29,197,255,0), rgba(255,255,255,.80), rgba(138,109,255,.72), rgba(29,197,255,0));
    filter:blur(15px);
    animation:energySlideB 3.8s ease-in-out infinite;
}

.center-core .core-scanline{
    position:absolute;
    left:10%;
    right:10%;
    top:106px;
    height:2px;
    border-radius:999px;
    background:linear-gradient(90deg, rgba(48,210,255,0), rgba(48,210,255,.95), rgba(255,255,255,.9), rgba(179,88,255,.85), rgba(48,210,255,0));
    box-shadow:0 0 8px rgba(53,210,255,.65), 0 0 18px rgba(53,210,255,.28);
    opacity:.9;
    animation:scanSweep 4.8s cubic-bezier(.4,.1,.2,1) infinite;
    pointer-events:none;
    z-index:1;
}

.center-core:before{
    width:390px;
    height:180px;
    background:radial-gradient(circle, rgba(34,170,255,.24) 0%, rgba(34,170,255,.12) 28%, rgba(163,71,255,.11) 54%, transparent 79%);
    filter:blur(16px);
}

.center-core:after{
    width:300px;
    height:44px;
    background:radial-gradient(circle, rgba(26,139,255,.34), rgba(26,139,255,.12) 52%, transparent 72%);
}

.core-title{
    margin:12px 0 10px;
    text-shadow:0 0 18px rgba(109,230,255,.15);
}

.core-title .title-edge,
.core-title .title-pulse{
    filter:drop-shadow(0 0 6px rgba(125,234,255,.16));
}

.core-title .title-edge{
    background-image:linear-gradient(90deg, #ffffff 0%, #c7f8ff 20%, #8ce9ff 42%, #ffffff 66%, #91dbff 100%);
}

.core-title .title-pulse{
    background-image:linear-gradient(90deg, #2ec4ff 0%, #7de8ff 24%, #e6fbff 42%, #8d6cff 72%, #2ec4ff 100%);
}

.core-title:before{
    color:rgba(63,204,255,.16);
    text-shadow:0 0 24px rgba(63,204,255,.44), 0 0 52px rgba(63,204,255,.22), 0 0 80px rgba(163,71,255,.12);
    filter:blur(7px);
}

.core-title:after{
    width:116%;
    height:20px;
    background:linear-gradient(90deg, rgba(55,206,255,0), rgba(55,206,255,.30), rgba(255,255,255,.16), rgba(180,89,255,.28), rgba(55,206,255,0));
}

.module-main-btn{
    position:relative;
    overflow:hidden;
    border:1px solid rgba(255,255,255,.10);
    letter-spacing:.7px;
    box-shadow:0 0 0 1px rgba(255,255,255,.04) inset;
}

.module-main-btn::before{
    content:"";
    position:absolute;
    top:0;
    left:-35%;
    width:34%;
    height:100%;
    background:linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.32), rgba(255,255,255,0));
    transform:skewX(-22deg);
    animation:btnSheen 3.8s ease-in-out infinite;
}

.module-main-btn::after{
    content:"";
    position:absolute;
    inset:0;
    border-radius:inherit;
    box-shadow:0 0 0 1px rgba(255,255,255,.08) inset, 0 0 20px rgba(62,201,255,.14);
    pointer-events:none;
}

.module-main-btn:hover{
    transform:translateY(-3px) scale(1.01);
    filter:brightness(1.10);
}

.blue-btn{
    background:linear-gradient(90deg,#0a7fff 0%,#286eff 28%,#5660ff 63%,#6f59ff 100%);
    box-shadow:0 0 30px rgba(31,112,255,.36), 0 0 60px rgba(50,150,255,.12);
}

.purple-btn{
    background:linear-gradient(90deg,#6d45ff 0%,#8744ff 28%,#a94dff 63%,#c353ff 100%);
    box-shadow:0 0 30px rgba(146,65,255,.32), 0 0 60px rgba(192,77,255,.11);
}

.blue-btn b,
.purple-btn b{
    display:inline-block;
    animation:ctaArrowPulse 1.6s ease-in-out infinite;
}

@keyframes energySlideA{
    0%,100%{opacity:.55; transform:translateX(-50%) scaleX(.86)}
    50%{opacity:1; transform:translateX(-50%) scaleX(1.16)}
}

@keyframes energySlideB{
    0%,100%{opacity:.45; transform:translateX(-50%) scaleX(.72)}
    50%{opacity:1; transform:translateX(-50%) scaleX(1.08)}
}

@keyframes scanSweep{
    0%{transform:translateX(-34px); opacity:.25}
    15%{opacity:1}
    50%{transform:translateX(36px); opacity:.95}
    85%{opacity:1}
    100%{transform:translateX(-34px); opacity:.25}
}

@keyframes btnSheen{
    0%,100%{left:-40%; opacity:0}
    14%{opacity:0}
    24%{opacity:1}
    44%{left:120%; opacity:0}
}

@keyframes ctaArrowPulse{
    0%,100%{transform:translateX(0)}
    50%{transform:translateX(4px)}
}

@media (min-width:1041px){
    .center-core{
        width:402px;
    }

    .center-core .title-energy{
        top:118px;
    }

    .center-core .core-scanline{
        top:112px;
    }

    .module-main-btn{
        height:48px;
    }
}

@media (min-width:1400px) and (max-height:900px){
    .center-core .title-energy{top:112px}
    .center-core .core-scanline{top:106px}
}

@media (max-width:1040px){
    .center-core .title-energy,
    .center-core .core-scanline{
        display:none;
    }
}


/* ============================================================
   V7 - MOVIMENTO CONTABILITA + HUD DESTRO PIU' VIVO
============================================================ */

.hud-purple{
    overflow:hidden;
    position:absolute;
}

.hud-purple::before{
    content:"";
    position:absolute;
    inset:-30% -10%;
    background:radial-gradient(circle at 65% 45%, rgba(199,83,255,.16), transparent 32%), radial-gradient(circle at 32% 70%, rgba(95,139,255,.12), transparent 34%);
    filter:blur(16px);
    animation:purpleHudFlow 8s ease-in-out infinite;
    pointer-events:none;
}

.mini-bars i{
    transform-origin:bottom center;
    animation:miniBarDance 2.9s ease-in-out infinite;
}
.mini-bars i:nth-child(1){animation-delay:.0s}
.mini-bars i:nth-child(2){animation-delay:.18s}
.mini-bars i:nth-child(3){animation-delay:.36s}
.mini-bars i:nth-child(4){animation-delay:.54s}
.mini-bars i:nth-child(5){animation-delay:.72s}
.mini-bars i:nth-child(6){animation-delay:.90s}
.mini-bars i:nth-child(7){animation-delay:1.08s}

.accounting-module{
    overflow:hidden;
}

.accounting-module::before{
    content:"";
    position:absolute;
    inset:-12% -18%;
    background:radial-gradient(circle at 80% 18%, rgba(180,83,255,.18), transparent 30%), radial-gradient(circle at 25% 72%, rgba(61,177,255,.10), transparent 32%), linear-gradient(120deg, rgba(12,20,43,0) 15%, rgba(172,74,255,.06) 50%, rgba(12,20,43,0) 85%);
    filter:blur(10px);
    animation:accountingNebula 11s ease-in-out infinite;
    pointer-events:none;
}

.accounting-module::after{
    content:"";
    position:absolute;
    width:160%;
    height:2px;
    left:-30%;
    top:118px;
    background:linear-gradient(90deg, rgba(255,255,255,0), rgba(214,118,255,.85), rgba(255,255,255,.92), rgba(116,214,255,.82), rgba(255,255,255,0));
    box-shadow:0 0 10px rgba(214,118,255,.55), 0 0 22px rgba(116,214,255,.22);
    opacity:.78;
    transform:rotate(-6deg);
    animation:accountingScan 5.8s ease-in-out infinite;
    pointer-events:none;
}

.accounting-module .module-top-glow.purple{
    animation:purpleGlowSweep 4.6s ease-in-out infinite;
}

.visual-accounting{
    position:relative;
    overflow:hidden;
}

.visual-accounting::before{
    content:"";
    position:absolute;
    inset:0;
    background:radial-gradient(circle at 50% 55%, rgba(207,97,255,.18), transparent 35%), radial-gradient(circle at 72% 28%, rgba(110,197,255,.10), transparent 26%);
    pointer-events:none;
}

.visual-accounting::after{
    content:"";
    position:absolute;
    left:-15%;
    top:22%;
    width:130%;
    height:54%;
    background:linear-gradient(110deg, rgba(255,255,255,0), rgba(255,255,255,.14), rgba(255,255,255,0));
    transform:translateX(-60%) skewX(-24deg);
    animation:accountingSheen 5.5s ease-in-out infinite;
    pointer-events:none;
}

.finance-orb{
    animation:financeFloat 4.6s ease-in-out infinite;
}
.finance-orb.fo1{animation-delay:0s}
.finance-orb.fo2{animation-delay:.9s}
.finance-orb.fo3{animation-delay:1.8s}

.finance-bars i{
    transform-origin:bottom center;
    animation:financeBarsPulse 2.7s ease-in-out infinite;
}
.finance-bars i:nth-child(1){animation-delay:.0s}
.finance-bars i:nth-child(2){animation-delay:.2s}
.finance-bars i:nth-child(3){animation-delay:.4s}
.finance-bars i:nth-child(4){animation-delay:.6s}
.finance-bars i:nth-child(5){animation-delay:.8s}

.accounting-module .module-icon.big-purple{
    animation:purpleIconPulse 3.8s ease-in-out infinite;
}

.accounting-module .module-main-btn.purple-btn{
    position:relative;
    overflow:hidden;
}

.accounting-module .module-main-btn.purple-btn::before{
    animation-duration:3.1s;
}

.accounting-module .module-main-btn.purple-btn::after{
    box-shadow:0 0 0 1px rgba(255,255,255,.08) inset, 0 0 22px rgba(194,77,255,.20);
}

@keyframes miniBarDance{
    0%,100%{transform:scaleY(.88);filter:brightness(.94)}
    50%{transform:scaleY(1.15);filter:brightness(1.12)}
}

@keyframes purpleHudFlow{
    0%,100%{transform:translateX(0) translateY(0) scale(1); opacity:.8}
    50%{transform:translateX(-2%) translateY(1.5%) scale(1.03); opacity:1}
}

@keyframes accountingNebula{
    0%,100%{transform:translate3d(0,0,0) scale(1); opacity:.9}
    50%{transform:translate3d(1.5%,-1.5%,0) scale(1.04); opacity:1}
}

@keyframes accountingScan{
    0%{transform:translateX(-10%) rotate(-6deg); opacity:.18}
    15%{opacity:.85}
    50%{transform:translateX(10%) rotate(-6deg); opacity:.85}
    100%{transform:translateX(-10%) rotate(-6deg); opacity:.18}
}

@keyframes purpleGlowSweep{
    0%,100%{opacity:.65; transform:translateX(-8%)}
    50%{opacity:1; transform:translateX(8%)}
}

@keyframes financeFloat{
    0%,100%{transform:translateY(0) scale(1); opacity:.8}
    50%{transform:translateY(-5px) scale(1.04); opacity:1}
}

@keyframes accountingSheen{
    0%,100%{transform:translateX(-70%) skewX(-24deg); opacity:0}
    18%{opacity:0}
    30%{opacity:1}
    55%{transform:translateX(78%) skewX(-24deg); opacity:0}
}

@keyframes financeBarsPulse{
    0%,100%{transform:scaleY(.92) translateY(0); filter:brightness(.96)}
    50%{transform:scaleY(1.12) translateY(-2px); filter:brightness(1.12)}
}

@keyframes purpleIconPulse{
    0%,100%{box-shadow:0 0 24px rgba(163,68,255,.14); transform:scale(1)}
    50%{box-shadow:0 0 30px rgba(193,101,255,.26); transform:scale(1.05)}
}

@media (max-width:1040px){
    .accounting-module::after{
        display:none;
    }
}


/* ============================================================
   V8 - GALASSIA ANIMATA / MOVIMENTO SFONDO COMPLETO
============================================================ */

.portal-v3{
    background:#010611;
}

.galaxy-layer,
.starfield{
    position:absolute;
    inset:-18%;
    pointer-events:none;
    transform-origin:50% 42%;
    will-change:transform, opacity, background-position;
}

.galaxy-back{
    z-index:0;
    opacity:.56;
    filter:blur(18px) saturate(1.28);
    background:
        radial-gradient(ellipse at 50% 42%, rgba(0,150,255,.30) 0%, rgba(0,94,255,.13) 20%, transparent 47%),
        radial-gradient(ellipse at 66% 45%, rgba(172,49,255,.28) 0%, rgba(113,37,255,.10) 19%, transparent 43%),
        radial-gradient(ellipse at 34% 51%, rgba(40,225,255,.22) 0%, rgba(15,123,255,.08) 18%, transparent 40%),
        conic-gradient(from 25deg at 50% 45%, transparent 0 7%, rgba(31,166,255,.14) 10%, transparent 17% 27%, rgba(151,61,255,.16) 31%, transparent 39% 58%, rgba(28,211,255,.10) 64%, transparent 72% 100%);
    animation:galaxyRotateBack 42s linear infinite;
}

.galaxy-mid{
    z-index:0;
    opacity:.62;
    filter:blur(8px) saturate(1.36);
    background:
        conic-gradient(from 210deg at 50% 43%, transparent 0 4%, rgba(55,210,255,.17) 7%, transparent 13% 21%, rgba(161,67,255,.18) 25%, transparent 32% 48%, rgba(60,146,255,.15) 55%, transparent 63% 78%, rgba(196,79,255,.12) 84%, transparent 91% 100%),
        radial-gradient(ellipse at 50% 44%, rgba(31,132,255,.14) 0%, transparent 52%);
    animation:galaxyRotateMid 31s linear infinite reverse;
}

.galaxy-front{
    z-index:1;
    inset:-10%;
    opacity:.48;
    filter:blur(2px) saturate(1.45);
    background:
        repeating-conic-gradient(from 0deg at 50% 43%, rgba(42,214,255,0) 0deg 10deg, rgba(42,214,255,.07) 12deg 13deg, rgba(42,214,255,0) 15deg 24deg),
        radial-gradient(ellipse at 50% 44%, transparent 0 23%, rgba(26,148,255,.08) 31%, transparent 48%);
    animation:galaxyRotateFront 24s linear infinite;
}

.starfield{
    z-index:1;
    inset:0;
    opacity:.50;
    background-image:
        radial-gradient(circle, rgba(255,255,255,.95) 0 1px, transparent 1.4px),
        radial-gradient(circle, rgba(77,221,255,.90) 0 1px, transparent 1.5px),
        radial-gradient(circle, rgba(184,104,255,.82) 0 1px, transparent 1.5px);
    background-size:113px 109px, 167px 151px, 211px 193px;
    background-position:0 0, 37px 71px, 89px 23px;
}

.starfield-a{
    animation:starsDriftA 34s linear infinite;
}

.starfield-b{
    opacity:.30;
    background-size:73px 79px, 131px 127px, 181px 173px;
    background-position:21px 13px, 67px 34px, 115px 66px;
    animation:starsDriftB 48s linear infinite reverse;
}

.space-bg{
    z-index:0;
    animation:spaceBreath 8s ease-in-out infinite;
}

.space-grid{
    z-index:2;
}

.space-vignette{
    z-index:2;
}

.portal-v3-header,
.portal-v3-main{
    position:relative;
    z-index:10;
}

.globe-stage{
    animation:globeStageFloat 9s ease-in-out infinite;
}

.globe-aura{
    animation:globeAuraPulse 5.6s ease-in-out infinite;
}

.globe-shell{
    animation:globeShellPulse 7s ease-in-out infinite;
}

.globe-shell .longitude.l1{
    animation:longitudeSpinA 14s linear infinite;
}

.globe-shell .longitude.l2{
    animation:longitudeSpinB 18s linear infinite reverse;
}

.globe-shell .latitude.lat1{
    animation:latitudeFlowA 10s ease-in-out infinite;
}

.globe-shell .latitude.lat2{
    animation:latitudeFlowB 12s ease-in-out infinite reverse;
}

.globe-shell .latitude.lat3{
    animation:latitudeFlowA 14s ease-in-out infinite reverse;
}

.orbit-line.orbit-a{
    animation:orbitMoveA 13s linear infinite;
}

.orbit-line.orbit-b{
    animation:orbitMoveB 18s linear infinite reverse;
}

.orbit-line.orbit-c{
    animation:orbitMoveC 22s linear infinite;
}

.geo-dot{
    animation:geoPulse 2.9s ease-in-out infinite;
}
.geo-dot.gd1{animation-delay:0s}
.geo-dot.gd2{animation-delay:.45s}
.geo-dot.gd3{animation-delay:.9s}
.geo-dot.gd4{animation-delay:1.35s}
.geo-dot.gd5{animation-delay:1.8s}

.center-core{
    animation:centerCoreFloat 7s ease-in-out infinite;
}

.control-module{
    animation:controlCardFloat 8s ease-in-out infinite;
}

.accounting-module{
    animation:accountingCardFloat 8.8s ease-in-out infinite;
}

.hud-left{
    animation:hudFloatLeft 7.4s ease-in-out infinite;
}

.hud-right{
    animation:hudFloatRight 8.1s ease-in-out infinite;
}

@keyframes galaxyRotateBack{
    from{transform:rotate(0deg) scale(1.02)}
    50%{transform:rotate(180deg) scale(1.08)}
    to{transform:rotate(360deg) scale(1.02)}
}

@keyframes galaxyRotateMid{
    from{transform:rotate(0deg) scale(.98)}
    50%{transform:rotate(180deg) scale(1.04)}
    to{transform:rotate(360deg) scale(.98)}
}

@keyframes galaxyRotateFront{
    from{transform:rotate(0deg) scale(1)}
    to{transform:rotate(360deg) scale(1)}
}

@keyframes starsDriftA{
    from{background-position:0 0,37px 71px,89px 23px}
    to{background-position:240px 120px, -180px 230px, 310px -150px}
}

@keyframes starsDriftB{
    from{background-position:21px 13px,67px 34px,115px 66px}
    to{background-position:-180px 210px,260px -190px,-240px 260px}
}

@keyframes spaceBreath{
    0%,100%{filter:brightness(.92) saturate(1)}
    50%{filter:brightness(1.08) saturate(1.12)}
}

@keyframes globeStageFloat{
    0%,100%{transform:translateX(-50%) translateY(0)}
    50%{transform:translateX(-50%) translateY(-7px)}
}

@keyframes globeAuraPulse{
    0%,100%{opacity:.62; transform:translateX(-50%) scale(.98)}
    50%{opacity:1; transform:translateX(-50%) scale(1.08)}
}

@keyframes globeShellPulse{
    0%,100%{box-shadow:0 0 48px rgba(24,130,255,.15),inset 0 0 55px rgba(23,108,255,.11)}
    50%{box-shadow:0 0 75px rgba(24,166,255,.28),0 0 110px rgba(156,65,255,.10),inset 0 0 70px rgba(23,108,255,.16)}
}

@keyframes longitudeSpinA{
    from{transform:translate(-50%,-50%) rotate(0deg)}
    to{transform:translate(-50%,-50%) rotate(360deg)}
}

@keyframes longitudeSpinB{
    from{transform:translate(-50%,-50%) rotate(0deg)}
    to{transform:translate(-50%,-50%) rotate(360deg)}
}

@keyframes latitudeFlowA{
    0%,100%{transform:translateX(-50%) scaleX(.96);opacity:.55}
    50%{transform:translateX(-50%) scaleX(1.05);opacity:1}
}

@keyframes latitudeFlowB{
    0%,100%{transform:translateX(-50%) scaleX(1.04);opacity:.60}
    50%{transform:translateX(-50%) scaleX(.95);opacity:1}
}

@keyframes orbitMoveA{
    from{transform:translate(-50%,-50%) rotate(5deg)}
    to{transform:translate(-50%,-50%) rotate(365deg)}
}

@keyframes orbitMoveB{
    from{transform:translate(-50%,-50%) rotate(-7deg)}
    to{transform:translate(-50%,-50%) rotate(353deg)}
}

@keyframes orbitMoveC{
    from{transform:translate(-50%,-50%) rotate(0deg)}
    to{transform:translate(-50%,-50%) rotate(360deg)}
}

@keyframes geoPulse{
    0%,100%{transform:scale(.8);opacity:.55}
    50%{transform:scale(1.45);opacity:1}
}

@keyframes centerCoreFloat{
    0%,100%{transform:translateX(-50%) translateY(0)}
    50%{transform:translateX(-50%) translateY(-5px)}
}

@keyframes controlCardFloat{
    0%,100%{transform:perspective(1200px) rotateY(2.2deg) translateY(0)}
    50%{transform:perspective(1200px) rotateY(2.2deg) translateY(-6px)}
}

@keyframes accountingCardFloat{
    0%,100%{transform:perspective(1200px) rotateY(-2.2deg) translateY(0)}
    50%{transform:perspective(1200px) rotateY(-2.2deg) translateY(-7px)}
}

@keyframes hudFloatLeft{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-4px)}
}

@keyframes hudFloatRight{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-5px)}
}

@media (prefers-reduced-motion: reduce){
    .galaxy-layer,
    .starfield,
    .globe-stage,
    .globe-aura,
    .globe-shell,
    .longitude,
    .latitude,
    .orbit-line,
    .geo-dot,
    .center-core,
    .control-module,
    .accounting-module,
    .hud-left,
    .hud-right{
        animation:none!important;
    }
}


/* ============================================================
   V9 - ORBITE CENTRALI VIVE + PARTICELLE IN CORSA
============================================================ */

.globe-stage{
    overflow:visible;
}

.orbit-line{
    will-change:transform, opacity, filter;
    box-shadow:0 0 10px rgba(79,206,255,.05);
}

.orbit-line.orbit-a{
    border-color:rgba(88,221,255,.34);
    filter:drop-shadow(0 0 5px rgba(71,207,255,.16));
    animation:orbitMoveA 11s linear infinite, orbitGlowA 4.8s ease-in-out infinite;
}

.orbit-line.orbit-b{
    border-color:rgba(148,112,255,.30);
    filter:drop-shadow(0 0 6px rgba(155,91,255,.16));
    animation:orbitMoveB 15s linear infinite reverse, orbitGlowB 5.6s ease-in-out infinite;
}

.orbit-line.orbit-c{
    border-color:rgba(91,222,255,.22);
    filter:drop-shadow(0 0 4px rgba(91,222,255,.12));
    animation:orbitMoveC 19s linear infinite, orbitGlowC 6.2s ease-in-out infinite;
}

.orbit-particle{
    position:absolute;
    left:50%;
    top:62%;
    pointer-events:none;
    transform-origin:center center;
    z-index:4;
}

.orbit-particle span{
    position:absolute;
    left:50%;
    top:0;
    width:9px;
    height:9px;
    border-radius:50%;
    transform:translate(-50%,-50%);
}

.particle-a{
    width:760px;
    height:170px;
    margin-left:-380px;
    margin-top:-85px;
    animation:particleOrbitA 7.8s linear infinite;
}

.particle-a span{
    background:#70efff;
    box-shadow:0 0 8px #70efff,0 0 18px rgba(75,229,255,.95),0 0 34px rgba(75,229,255,.40);
}

.particle-b{
    width:760px;
    height:170px;
    margin-left:-380px;
    margin-top:-85px;
    animation:particleOrbitA 10.6s linear infinite reverse;
}

.particle-b span{
    background:#c27dff;
    box-shadow:0 0 8px #c27dff,0 0 18px rgba(194,125,255,.90),0 0 36px rgba(194,125,255,.35);
}

.particle-c{
    width:650px;
    height:245px;
    margin-left:-325px;
    margin-top:-122.5px;
    animation:particleOrbitB 9.2s linear infinite;
}

.particle-c span{
    background:#ffffff;
    box-shadow:0 0 8px #ffffff,0 0 18px rgba(118,224,255,.92),0 0 30px rgba(118,224,255,.30);
}

.particle-d{
    width:650px;
    height:245px;
    margin-left:-325px;
    margin-top:-122.5px;
    animation:particleOrbitB 13.4s linear infinite reverse;
}

.particle-d span{
    background:#7b9cff;
    box-shadow:0 0 8px #7b9cff,0 0 18px rgba(123,156,255,.88),0 0 32px rgba(123,156,255,.34);
}

.particle-e{
    width:520px;
    height:300px;
    margin-left:-260px;
    margin-top:-150px;
    animation:particleOrbitC 11.8s linear infinite;
}

.particle-e span{
    background:#6ffff1;
    box-shadow:0 0 8px #6ffff1,0 0 18px rgba(111,255,241,.88),0 0 32px rgba(111,255,241,.28);
}

.particle-f{
    width:520px;
    height:300px;
    margin-left:-260px;
    margin-top:-150px;
    animation:particleOrbitC 16.2s linear infinite reverse;
}

.particle-f span{
    background:#e686ff;
    box-shadow:0 0 8px #e686ff,0 0 18px rgba(230,134,255,.88),0 0 32px rgba(230,134,255,.30);
}

.globe-aura::before,
.globe-aura::after{
    content:"";
    position:absolute;
    left:50%;
    top:50%;
    border-radius:50%;
    transform:translate(-50%,-50%);
    pointer-events:none;
}

.globe-aura::before{
    width:88%;
    height:48%;
    border:1px solid rgba(83,212,255,.14);
    box-shadow:0 0 22px rgba(83,212,255,.08);
    animation:auraOrbitTilt 12s linear infinite;
}

.globe-aura::after{
    width:64%;
    height:74%;
    border:1px solid rgba(175,88,255,.12);
    box-shadow:0 0 24px rgba(175,88,255,.08);
    animation:auraOrbitTiltReverse 15s linear infinite reverse;
}

.globe-shell{
    position:relative;
}

.globe-shell::before{
    content:"";
    position:absolute;
    inset:9%;
    border-radius:50%;
    background:conic-gradient(from 0deg, transparent 0 12deg, rgba(67,210,255,.11) 13deg 15deg, transparent 16deg 34deg, rgba(181,92,255,.09) 35deg 37deg, transparent 38deg 58deg);
    mix-blend-mode:screen;
    animation:innerEnergySpin 18s linear infinite;
    pointer-events:none;
}

.globe-shell::after{
    content:"";
    position:absolute;
    left:50%;
    top:50%;
    width:84%;
    height:16%;
    transform:translate(-50%,-50%) rotate(-4deg);
    border-radius:50%;
    background:linear-gradient(90deg, transparent, rgba(54,220,255,.08), rgba(255,255,255,.13), rgba(176,88,255,.08), transparent);
    filter:blur(8px);
    animation:energyBandPulse 5.2s ease-in-out infinite;
    pointer-events:none;
}

.geo-dot{
    box-shadow:0 0 10px #63ecff,0 0 20px rgba(75,187,255,.75),0 0 40px rgba(75,187,255,.20);
}

@keyframes particleOrbitA{
    from{transform:rotate(5deg)}
    to{transform:rotate(365deg)}
}

@keyframes particleOrbitB{
    from{transform:rotate(-7deg)}
    to{transform:rotate(353deg)}
}

@keyframes particleOrbitC{
    from{transform:rotate(0deg)}
    to{transform:rotate(360deg)}
}

@keyframes orbitGlowA{
    0%,100%{opacity:.62; filter:drop-shadow(0 0 4px rgba(71,207,255,.14))}
    50%{opacity:1; filter:drop-shadow(0 0 10px rgba(71,207,255,.34))}
}

@keyframes orbitGlowB{
    0%,100%{opacity:.58; filter:drop-shadow(0 0 4px rgba(155,91,255,.13))}
    50%{opacity:.96; filter:drop-shadow(0 0 11px rgba(155,91,255,.30))}
}

@keyframes orbitGlowC{
    0%,100%{opacity:.50; filter:drop-shadow(0 0 3px rgba(91,222,255,.10))}
    50%{opacity:.88; filter:drop-shadow(0 0 9px rgba(91,222,255,.24))}
}

@keyframes auraOrbitTilt{
    from{transform:translate(-50%,-50%) rotate(0deg)}
    to{transform:translate(-50%,-50%) rotate(360deg)}
}

@keyframes auraOrbitTiltReverse{
    from{transform:translate(-50%,-50%) rotate(0deg)}
    to{transform:translate(-50%,-50%) rotate(360deg)}
}

@keyframes innerEnergySpin{
    from{transform:rotate(0deg)}
    to{transform:rotate(360deg)}
}

@keyframes energyBandPulse{
    0%,100%{opacity:.35; transform:translate(-50%,-50%) rotate(-4deg) scaleX(.94)}
    50%{opacity:.90; transform:translate(-50%,-50%) rotate(-4deg) scaleX(1.08)}
}

@media (prefers-reduced-motion: reduce){
    .orbit-particle,
    .globe-aura::before,
    .globe-aura::after,
    .globe-shell::before,
    .globe-shell::after{
        animation:none!important;
    }
}


/* ============================================================
   FINAL V10 - LINK REALI MODULI
============================================================ */
.module-main-btn{
    text-decoration:none;
    user-select:none;
}
.module-main-btn:visited{
    color:#fff;
}
.module-main-btn:focus-visible{
    outline:2px solid rgba(104,226,255,.95);
    outline-offset:3px;
}


/* ============================================================
   FINAL V11 - RESPONSIVE TABLET + SMARTPHONE
   Mantiene invariata la versione desktop >= 1041px.
============================================================ */

/* Touch e dispositivi mobili */
@media (max-width:1040px){
    html,body{
        width:100%;
        min-height:100%;
        overflow-x:hidden;
    }

    body{
        -webkit-text-size-adjust:100%;
        text-size-adjust:100%;
    }

    .portal-v3{
        min-height:100dvh;
        overflow-x:hidden;
        overflow-y:auto;
        padding-bottom:env(safe-area-inset-bottom,0px);
    }

    .space-bg,
    .galaxy-layer,
    .starfield,
    .space-grid,
    .space-vignette{
        position:fixed;
    }

    .portal-v3-header{
        position:sticky;
        top:0;
        z-index:100;
        height:68px;
        padding:0 20px;
        grid-template-columns:1fr auto;
        background:rgba(2,8,18,.86);
        border-bottom:1px solid rgba(84,190,255,.22);
        backdrop-filter:blur(18px);
        -webkit-backdrop-filter:blur(18px);
    }

    .brand-mark{height:30px}
    .brand-mark span:nth-child(1),.brand-mark span:nth-child(5){height:13px}
    .brand-mark span:nth-child(2),.brand-mark span:nth-child(4){height:22px}
    .brand-mark span:nth-child(3){height:30px}
    .brand-name{font-size:21px}

    .portal-navline{display:none!important}

    .portal-status{
        display:flex;
        gap:8px;
        font-size:9px;
        letter-spacing:1.4px;
    }

    .portal-time{margin-left:2px}
    .portal-exit{
        min-height:38px;
        padding:8px 12px;
        margin-left:2px;
        touch-action:manipulation;
    }

    .portal-v3-main{
        position:relative;
        z-index:3;
        width:min(94vw,920px);
        height:auto;
        min-height:0;
        margin:0 auto;
        padding:26px 0 34px;
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:22px;
        align-items:start;
    }

    /* Su tablet nascondiamo solo gli HUD piccoli; il core resta protagonista */
    .hud-card,
    .globe-stage{
        display:none!important;
    }

    .center-core{
        display:block!important;
        grid-column:1 / -1;
        position:relative;
        left:auto;
        right:auto;
        top:auto;
        bottom:auto;
        width:min(560px,88vw)!important;
        margin:8px auto 6px;
        transform:none!important;
        padding:34px 30px 24px;
        overflow:visible;
        animation:mobileCoreFloat 6s ease-in-out infinite!important;
    }

    .center-core .title-energy,
    .center-core .core-scanline{
        display:block!important;
    }

    .center-core .title-energy{top:118px}
    .center-core .core-scanline{top:111px}
    .core-title{font-size:42px!important}
    .center-core p{max-width:390px;font-size:12px}

    .module-card-v3{
        position:relative!important;
        left:auto!important;
        right:auto!important;
        top:auto!important;
        bottom:auto!important;
        width:100%!important;
        height:auto!important;
        min-height:448px;
        transform:none!important;
        margin:0;
        padding:18px;
        animation:none!important;
    }

    .control-module,
    .accounting-module{
        transform:none!important;
    }

    .module-card-v3:hover{
        transform:translateY(-2px)!important;
    }

    .module-visual-v3{
        height:138px;
        margin:13px 0 15px;
    }

    .module-info-row h2{font-size:26px}
    .module-info-row p{font-size:11px;line-height:1.45}

    .module-kpis{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:8px;
    }

    .module-main-btn{
        min-height:54px;
        height:54px;
        font-size:13px;
        touch-action:manipulation;
        -webkit-tap-highlight-color:transparent;
    }

    .portal-footer-v3{
        display:block;
        grid-column:1 / -1;
        position:relative!important;
        left:auto!important;
        right:auto!important;
        top:auto!important;
        bottom:auto!important;
        width:100%!important;
        transform:none!important;
        margin:6px auto 0;
        padding:6px 0 2px;
    }

    .footer-icons{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }

    .toast{
        left:18px;
        right:18px;
        bottom:18px;
        min-width:0;
        width:auto;
    }

    @keyframes mobileCoreFloat{
        0%,100%{transform:translateY(0)}
        50%{transform:translateY(-4px)}
    }
}

/* Smartphone landscape e piccoli tablet */
@media (max-width:760px){
    .portal-v3-header{
        height:62px;
        padding:0 14px;
    }

    .brand{gap:9px}
    .brand-name{font-size:18px;letter-spacing:1px}
    .brand-mark{gap:2px;height:27px}
    .brand-mark span{width:3px}
    .brand-mark span:nth-child(1),.brand-mark span:nth-child(5){height:12px}
    .brand-mark span:nth-child(2),.brand-mark span:nth-child(4){height:19px}
    .brand-mark span:nth-child(3){height:27px}

    .portal-status>span:not(.state-dot),
    .portal-time{
        display:none!important;
    }

    .portal-exit{
        min-height:36px;
        padding:7px 10px;
        font-size:9px;
    }

    .portal-v3-main{
        width:min(94vw,620px);
        grid-template-columns:1fr;
        gap:18px;
        padding:22px 0 28px;
    }

    .center-core{
        grid-column:1;
        width:100%!important;
        margin:7px 0 5px;
        padding:30px 20px 22px;
        border-radius:21px;
    }

    .center-lock{
        width:58px;
        height:58px;
        margin:-58px auto 15px;
        font-size:21px;
    }

    .core-kicker{font-size:8px;letter-spacing:3px}
    .core-title{font-size:34px!important;letter-spacing:.5px}
    .center-core p{font-size:11px;max-width:310px}
    .core-auth{font-size:8px}
    .center-core .title-energy{top:105px}
    .center-core .core-scanline{top:99px}

    .module-card-v3{
        min-height:0;
        padding:16px;
        border-radius:21px;
    }

    .module-visual-v3{
        height:128px;
        margin:12px 0 14px;
    }

    .module-info-row{
        gap:12px;
        align-items:center;
    }

    .module-icon{
        flex:0 0 auto;
    }

    .module-info-row h2{
        font-size:24px;
        margin-bottom:3px;
    }

    .module-info-row p{
        font-size:10.5px;
    }

    .module-kpis{
        grid-template-columns:repeat(3,minmax(0,1fr))!important;
        gap:6px;
        margin:13px 0 11px;
    }

    .module-kpis div{
        min-width:0;
        padding:9px 7px;
    }

    .module-kpis span{font-size:7px}
    .module-kpis strong{font-size:9px;overflow-wrap:anywhere}

    .module-main-btn{
        min-height:54px;
        height:54px;
        border-radius:12px;
        font-size:12px;
    }

    .footer-slogan{
        gap:9px;
        font-size:7px;
        letter-spacing:2px;
    }

    .footer-slogan span{width:45px}

    .footer-icons{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
        gap:14px 8px;
        margin-top:16px;
    }

    .footer-icons>div{justify-content:flex-start}
    .footer-icons b{width:32px;height:32px;flex:0 0 32px}
    .footer-icons strong{font-size:7.5px}
    .footer-icons small{font-size:6.8px}
}

/* Smartphone stretti */
@media (max-width:430px){
    .portal-v3-main{width:92vw;padding-top:20px}

    .center-core{
        padding:28px 16px 20px;
    }

    .core-title{font-size:30px!important}
    .center-core p{font-size:10.5px}

    .module-visual-v3{height:112px}
    .module-info-row h2{font-size:22px}
    .module-icon{width:48px;height:48px}

    .module-kpis{
        grid-template-columns:1fr!important;
    }

    .module-kpis div{
        display:flex;
        align-items:center;
        justify-content:space-between;
        padding:9px 11px;
    }

    .module-kpis span,
    .module-kpis strong{
        margin:0;
    }

    .footer-slogan span{display:none}
}

/* Landscape smartphone: riduciamo l'altezza senza perdere funzioni */
@media (max-width:900px) and (orientation:landscape) and (max-height:520px){
    .portal-v3-header{height:56px}
    .portal-v3-main{padding-top:18px}
    .center-core{padding:26px 18px 18px}
    .center-lock{width:50px;height:50px;margin:-50px auto 11px}
    .core-title{font-size:30px!important}
    .center-core p{display:none}
    .module-visual-v3{height:100px}
}

/* LOGIN RESPONSIVE */
@media (max-width:1040px){
    .login-shell{
        min-height:100dvh;
        overflow-x:hidden;
    }

    .brandbar{
        min-height:68px;
        height:68px;
        padding:0 20px;
    }

    .login-stage{
        min-height:calc(100dvh - 68px);
        padding:80px 20px 50px;
    }

    .earth{
        width:min(760px,96vw);
        height:330px;
        top:4%;
    }

    .login-card{
        width:min(430px,92vw);
        padding:54px 34px 32px;
    }
}

@media (max-width:600px){
    .brandbar{
        min-height:62px;
        height:62px;
        padding:0 14px;
    }

    .brandbar .system-state{
        font-size:0;
        letter-spacing:0;
    }

    .brandbar .system-state .state-dot{
        width:10px;
        height:10px;
    }

    .login-stage{
        min-height:calc(100dvh - 62px);
        padding:72px 14px 34px;
    }

    .earth{
        width:120vw;
        height:250px;
        top:5%;
        opacity:.78;
    }

    .login-card{
        width:100%;
        padding:50px 20px 26px;
        border-radius:22px;
    }

    .lock-orb{
        width:70px;
        height:70px;
        margin:-84px auto 18px;
        font-size:25px;
    }

    .eyebrow{font-size:9px;letter-spacing:3px}
    .login-card h1{font-size:34px}
    .subtitle{font-size:12px;letter-spacing:1.2px;margin-bottom:23px}

    .input-wrap{
        height:56px;
        border-radius:12px;
    }

    .input-wrap input{
        font-size:16px; /* evita zoom automatico iOS */
    }

    .primary-btn{
        min-height:56px;
        height:56px;
        touch-action:manipulation;
    }

    .secure-note{font-size:10px;line-height:1.45}
}

/* Hover solo su dispositivi che hanno davvero il mouse */
@media (hover:none){
    .module-main-btn:hover,
    .module-card-v3:hover,
    .portal-exit:hover{
        transform:none!important;
        filter:none!important;
    }
}
