:root{--ik-navy:#0b1736;--ik-navy2:#112a50;--ik-teal:#19b7a4;--ik-bg:#f4f7fb;--ik-line:#e4eaf2;--ik-text:#172033;--ik-muted:#6b7280}
*{box-sizing:border-box}body{margin:0;background:var(--ik-bg);color:var(--ik-text);font-family:Inter,Arial,sans-serif}
.ik-auth-page{min-height:100vh}.ik-auth-shell{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr}.ik-auth-brand{padding:54px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;background:radial-gradient(circle at 72% 32%,rgba(25,183,164,.25),transparent 28%),linear-gradient(145deg,var(--ik-navy),var(--ik-navy2))}
.ik-brand-lockup{display:flex;align-items:center;gap:15px}.ik-brand-lockup img{width:58px;height:58px;object-fit:contain}.ik-brand-lockup strong{font-size:1.7rem;letter-spacing:.12em;display:block}.ik-brand-lockup span{display:block;color:rgba(255,255,255,.62);font-size:.78rem}.ik-auth-message{max-width:650px;margin:auto 0}.ik-auth-message h1{font-size:clamp(2.7rem,5vw,5.7rem);line-height:.95;margin:14px 0 22px}.ik-auth-message p{font-size:1.15rem;color:rgba(255,255,255,.7)}
.ik-kicker{font-size:.72rem;letter-spacing:.14em;font-weight:700;color:var(--ik-teal)}.ik-auth-panel{display:grid;place-items:center;padding:32px;background:#fff}.ik-auth-card{width:min(430px,100%);padding:38px;border:1px solid var(--ik-line);border-radius:22px;box-shadow:0 28px 80px rgba(11,23,54,.1)}.ik-auth-card h2{color:var(--ik-navy);font-weight:750}.ik-btn-primary{background:var(--ik-navy);color:#fff}.ik-btn-primary:hover{background:var(--ik-navy2);color:#fff}.ik-verify-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#edf3f8,#fff)}.ik-verify-mark{width:74px;height:74px;object-fit:contain;margin-bottom:20px}.ik-code{text-align:center;font-size:2rem;letter-spacing:.55rem;font-weight:700}
.ik-shell{min-height:100vh;display:flex}.ik-sidebar{position:fixed;inset:0 auto 0 0;width:276px;background:linear-gradient(180deg,var(--ik-navy),var(--ik-navy2));color:#fff;padding:20px;display:flex;flex-direction:column;z-index:1040}.ik-sidebar-brand{display:flex;align-items:center;gap:12px;padding:3px 3px 25px}.ik-sidebar-brand img{width:48px;height:48px;object-fit:contain}.ik-sidebar-brand strong{display:block;font-size:1.35rem;letter-spacing:.11em}.ik-sidebar-brand small{display:block;font-size:.68rem;color:rgba(255,255,255,.55)}
.ik-workspace{padding:14px;border-radius:14px;background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.1);margin-bottom:20px}.ik-workspace label{display:block;font-size:.67rem;text-transform:uppercase;letter-spacing:.12em;color:rgba(255,255,255,.58);margin-bottom:7px}.ik-nav{display:flex;flex-direction:column;gap:5px}.ik-nav-link{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;color:rgba(255,255,255,.78);text-decoration:none}.ik-nav-link:hover,.ik-nav-link.active{background:rgba(25,183,164,.17);color:#fff}.ik-sidebar-bottom{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:14px}
.ik-main{margin-left:276px;min-width:0;flex:1}.ik-topbar{height:78px;background:#fff;border-bottom:1px solid var(--ik-line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:1020}.ik-topbar h1{font-size:1.08rem;margin:0;color:var(--ik-navy);font-weight:750}.ik-topbar span,.ik-user small{display:block;color:var(--ik-muted);font-size:.78rem}.ik-user{text-align:right}.ik-content{padding:28px}
.ik-hero-card{min-height:250px;border-radius:24px;padding:36px;display:flex;justify-content:space-between;overflow:hidden;position:relative;color:#fff;background:radial-gradient(circle at 82% 50%,rgba(25,183,164,.34),transparent 23%),linear-gradient(125deg,var(--ik-navy),#183b68)}.ik-hero-card>div:first-child{max-width:650px;position:relative;z-index:2}.ik-hero-card h2{font-size:clamp(2rem,4vw,3.6rem);line-height:1.02;margin:12px 0 16px}.ik-hero-card p{color:rgba(255,255,255,.7);font-size:1.05rem}.ik-hero-orb{width:220px;height:220px;border:1px solid rgba(255,255,255,.15);border-radius:50%;position:absolute;right:40px;top:15px;box-shadow:0 0 0 38px rgba(255,255,255,.025),0 0 0 76px rgba(255,255,255,.018)}
.ik-stat,.ik-panel{background:#fff;border:1px solid var(--ik-line);border-radius:17px;padding:22px;box-shadow:0 8px 30px rgba(11,23,54,.045)}.ik-stat span{display:block;color:var(--ik-muted);font-size:.78rem}.ik-stat strong{display:block;color:var(--ik-navy);font-size:2rem;margin:8px 0 3px}.ik-stat .ik-stat-small{font-size:1.05rem;margin-top:16px}.ik-stat small{color:var(--ik-muted)}.ik-panel-head{display:flex;justify-content:space-between;align-items:flex-start}.ik-panel h3{margin:5px 0 15px;color:var(--ik-navy)}.ik-status{padding:7px 11px;border-radius:999px;background:#eaf8f5;color:#0b7d70;font-size:.72rem;font-weight:700}
@media(max-width:991.98px){.ik-auth-shell{grid-template-columns:1fr}.ik-auth-brand{display:none}.ik-sidebar{transform:translateX(-100%);transition:.2s}.ik-sidebar.open{transform:translateX(0)}.ik-main{margin-left:0}.ik-content{padding:18px}.ik-topbar{padding:0 16px}.ik-hero-card{padding:25px;min-height:220px}.ik-hero-orb{opacity:.45}}




.ik-sidebar-close,
.ik-sidebar-overlay{
    display:none;
}

@media(max-width:991.98px){
    body.ik-sidebar-open{
        overflow:hidden;
    }

    .ik-sidebar{
        position:fixed;
        inset:0 auto 0 0;
        width:min(304px,86vw);
        height:100dvh;
        z-index:1055;
        transform:translateX(-100%);
        transition:transform .22s ease;
        overflow-y:auto;
        overscroll-behavior:contain;
        -webkit-overflow-scrolling:touch;
        box-shadow:0 0 30px rgba(13,27,61,.28);
    }

    .ik-sidebar.open{
        transform:translateX(0);
    }

    .ik-sidebar-close{
        display:grid;
        place-items:center;
        position:absolute;
        top:14px;
        right:14px;
        width:38px;
        height:38px;
        border:0;
        border-radius:10px;
        background:rgba(255,255,255,.12);
        color:#fff;
        font-size:1.15rem;
        z-index:3;
    }

    .ik-sidebar-overlay{
        display:block;
        position:fixed;
        inset:0;
        z-index:1050;
        background:rgba(15,23,42,.48);
        opacity:0;
        visibility:hidden;
        pointer-events:none;
        transition:opacity .2s ease,visibility .2s ease;
    }

    .ik-sidebar-overlay.is-visible{
        opacity:1;
        visibility:visible;
        pointer-events:auto;
    }

    .ik-main{
        margin-left:0!important;
        width:100%!important;
    }

    .ik-topbar-menu{
        flex:0 0 auto;
    }
}


/* IKALUM v1.4 — Visual Foundation */
:root{
    --ik-navy:#0D1B3D;
    --ik-navy-soft:#142B52;
    --ik-teal:#18B7A2;
    --ik-sky:#00C2D1;
    --ik-surface:#FFFFFF;
    --ik-bg:#F1F5F9;
    --ik-line:#D9E3EC;
    --ik-text:#172033;
    --ik-muted:#64748B;
    --ik-focus:0 0 0 .22rem rgba(24,183,162,.18);
}
body{background:linear-gradient(180deg,#f6f9fc 0,#eef3f8 100%)}
.form-control,.form-select{
    min-height:46px;
    border:1px solid var(--ik-line);
    border-radius:11px;
    background-color:#fff;
    color:var(--ik-text);
    box-shadow:0 1px 2px rgba(15,23,42,.025);
    transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.form-control:hover,.form-select:hover{border-color:#b9c9d7}
.form-control:focus,.form-select:focus{
    border-color:var(--ik-teal);
    box-shadow:var(--ik-focus);
}
.form-label,.ik-field label{font-weight:600;color:#26344a;margin-bottom:7px}
.btn{border-radius:10px;font-weight:650;min-height:42px}
.ik-btn-primary{
    border:1px solid #09152f;
    background:linear-gradient(135deg,var(--ik-navy),var(--ik-navy-soft));
    box-shadow:0 8px 20px rgba(13,27,61,.16);
}
.ik-btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(13,27,61,.2)}
.ik-panel,.ik-stat{
    border-color:#dce6ef;
    box-shadow:0 12px 34px rgba(13,27,61,.055);
}
.ik-access-shell{
    min-height:100vh;
    display:grid;
    grid-template-columns:minmax(300px,.85fr) minmax(420px,1.15fr);
    background:#eef4f8;
}
.ik-access-brand{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    padding:44px;
    overflow:hidden;
    color:#fff;
    background:
        radial-gradient(circle at 78% 28%,rgba(0,194,209,.34),transparent 25%),
        radial-gradient(circle at 20% 78%,rgba(24,183,162,.22),transparent 26%),
        linear-gradient(145deg,#07142F,#12335B);
}
.ik-access-brand:after{
    content:"";
    width:280px;height:280px;border-radius:50%;
    position:absolute;right:-90px;bottom:-80px;
    border:1px solid rgba(255,255,255,.13);
    box-shadow:0 0 0 42px rgba(255,255,255,.025),0 0 0 84px rgba(255,255,255,.018);
}
.ik-access-symbol{
    position:relative;z-index:1;
    width:min(230px,62%);
    max-height:240px;
    object-fit:contain;
    filter:drop-shadow(0 18px 32px rgba(0,0,0,.22));
}
.ik-access-brand-copy{position:relative;z-index:1;text-align:center;margin-top:24px}
.ik-access-brand-copy strong{display:block;font-size:2rem;letter-spacing:.16em}
.ik-access-brand-copy span{display:block;color:rgba(255,255,255,.7);margin-top:8px}
.ik-access-panel{display:grid;place-items:center;padding:34px}
.ik-access-card{
    width:min(520px,100%);
    padding:38px;
    background:rgba(255,255,255,.97);
    border:1px solid rgba(217,227,236,.95);
    border-radius:24px;
    box-shadow:0 30px 90px rgba(13,27,61,.13);
}
.ik-access-heading h1{font-size:clamp(2rem,4vw,3rem);color:var(--ik-navy);margin:7px 0 10px;font-weight:780}
.ik-access-heading p{color:var(--ik-muted);font-size:1.02rem}
.ik-access-code{
    text-align:center;
    font-size:2rem!important;
    letter-spacing:.65rem;
    font-weight:750;
    height:68px;
    color:var(--ik-navy);
}
.ik-invitation-summary{
    margin:24px 0;
    padding:16px;
    border:1px solid #dce8ee;
    border-radius:14px;
    background:linear-gradient(135deg,#f6fafc,#effaf8);
}
.ik-invitation-summary strong,.ik-invitation-summary span,.ik-invitation-summary small{display:block}
.ik-invitation-summary span{color:var(--ik-teal);font-weight:700;margin:3px 0}
.ik-invitation-summary small{color:var(--ik-muted)}
@media(max-width:767.98px){
    .ik-access-shell{grid-template-columns:1fr}
    .ik-access-brand{min-height:190px;padding:26px}
    .ik-access-symbol{width:120px;max-height:125px}
    .ik-access-brand-copy{margin-top:8px}
    .ik-access-brand-copy strong{font-size:1.35rem}
    .ik-access-panel{padding:18px}
    .ik-access-card{padding:26px;border-radius:20px}
}


/* IKALUM v1.4.1 — Context-aware brand assets */
.ik-sidebar .ik-brand img{
    object-fit:contain;
    filter:drop-shadow(0 5px 10px rgba(0,0,0,.16));
}
.ik-access-symbol{
    border-radius:24%;
    box-shadow:0 24px 55px rgba(0,0,0,.24),0 0 0 1px rgba(255,255,255,.10);
}
.ik-auth-card .ik-verify-mark{
    width:88px;
    height:88px;
    object-fit:contain;
    margin-bottom:18px;
    filter:drop-shadow(0 12px 22px rgba(13,27,61,.13));
}
@media(max-width:767.98px){
    .ik-access-symbol{width:112px;height:112px}
}


/* ==========================================================================
   IKALUM FOUNDATION SPRINT 2.4 — OUTDOOR FIRST DESIGN SYSTEM
   Phase 1: global tokens, adaptive typography, touch targets, layout,
   authentication, cards, forms and accessibility.
   ========================================================================== */

:root{
    /* Brand */
    --ik-primary:#3399CC;
    --ik-primary-strong:#267FAB;
    --ik-primary-deep:#195F84;
    --ik-primary-soft:#E8F5FB;
    --ik-accent:#14B8B0;
    --ik-accent-strong:#0C8F89;

    /* Semantic */
    --ik-success:#148A5B;
    --ik-warning:#B86600;
    --ik-danger:#C93636;
    --ik-info:#216F9B;

    /* Surfaces */
    --ik-bg:#F8FAFC;
    --ik-surface:#FFFFFF;
    --ik-surface-alt:#F0F7FB;
    --ik-border:#C9DCE8;
    --ik-border-strong:#A9C8D9;
    --ik-card-border:#C89B8F;
    --ik-card-shadow:0 .12rem .45rem rgba(0,0,0,.06);
    --ik-card-radius:22px;

    /* Text — deliberately darker for sunlight */
    --ik-text:#182633;
    --ik-text-secondary:#344B5E;
    --ik-text-muted:#52697A;
    --ik-on-primary:#FFFFFF;

    /* Adaptive type scale: rem preserves OS/browser font preferences */
    --ik-font-xs:clamp(.78rem,.74rem + .12vw,.86rem);
    --ik-font-sm:clamp(.88rem,.83rem + .16vw,.98rem);
    --ik-font-md:clamp(1rem,.95rem + .18vw,1.12rem);
    --ik-font-lg:clamp(1.16rem,1.06rem + .34vw,1.38rem);
    --ik-font-xl:clamp(1.42rem,1.22rem + .70vw,1.95rem);
    --ik-font-2xl:clamp(1.85rem,1.45rem + 1.35vw,2.85rem);
    --ik-font-hero:clamp(2.15rem,1.55rem + 2.15vw,4rem);

    /* Touch and spacing */
    --ik-touch-min:3rem;
    --ik-space-1:.35rem;
    --ik-space-2:.6rem;
    --ik-space-3:.9rem;
    --ik-space-4:1.25rem;
    --ik-space-5:1.75rem;
    --ik-space-6:2.4rem;

    /* Shape/elevation */
    --ik-radius-sm:.7rem;
    --ik-radius-md:1rem;
    --ik-radius-lg:1.4rem;
    --ik-radius-xl:1.8rem;
    --ik-shadow-sm:0 4px 14px rgba(28,79,107,.07);
    --ik-shadow-md:0 14px 34px rgba(28,79,107,.10);
    --ik-shadow-lg:0 28px 70px rgba(28,79,107,.15);
    --ik-focus:0 0 0 .24rem rgba(51,153,204,.25);

    /* Compatibility aliases used by existing screens */
    --ik-navy:var(--ik-primary-deep);
    --ik-navy2:var(--ik-primary-strong);
    --ik-navy-soft:var(--ik-primary-strong);
    --ik-teal:var(--ik-accent);
    --ik-sky:var(--ik-primary);
    --ik-line:var(--ik-border);
    --ik-muted:var(--ik-text-muted);
}

html{
    font-size:100%;
    -webkit-text-size-adjust:100%;
    text-size-adjust:100%;
}

body{
    min-width:20rem;
    background:var(--ik-bg);
    color:var(--ik-text);
    font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
    font-size:var(--ik-font-md);
    line-height:1.55;
    text-rendering:optimizeLegibility;
    -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4,h5,h6,strong{color:var(--ik-text)}
h1{font-size:var(--ik-font-2xl)}
h2{font-size:var(--ik-font-xl)}
h3{font-size:var(--ik-font-lg)}
small,.small{font-size:var(--ik-font-sm)}
.text-muted{color:var(--ik-text-muted)!important}
a{color:var(--ik-primary-deep);text-underline-offset:.18em}
a:hover{color:var(--ik-primary-strong)}

/* Keyboard and high-glare focus visibility */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
    outline:3px solid rgba(51,153,204,.62);
    outline-offset:3px;
}

/* Touch-first controls */
.btn,
.form-control,
.form-select,
.input-group-text{
    min-height:var(--ik-touch-min);
    font-size:var(--ik-font-md);
}

.btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:.55rem;
    padding:.72rem 1.15rem;
    border-radius:var(--ik-radius-sm);
    font-weight:700;
    line-height:1.2;
    touch-action:manipulation;
}

.btn-sm{min-height:2.65rem;font-size:var(--ik-font-sm)}
.btn-lg{min-height:3.35rem;padding:.85rem 1.35rem}

.ik-btn-primary,
.btn-primary{
    color:var(--ik-on-primary);
    border-color:var(--ik-primary-strong);
    background:linear-gradient(135deg,var(--ik-primary),var(--ik-primary-strong));
    box-shadow:0 9px 20px rgba(38,127,171,.22);
}
.ik-btn-primary:hover,
.btn-primary:hover{
    color:#fff;
    border-color:var(--ik-primary-deep);
    background:linear-gradient(135deg,var(--ik-primary-strong),var(--ik-primary-deep));
    box-shadow:0 12px 24px rgba(38,127,171,.27);
    transform:translateY(-1px);
}
.ik-btn-primary:active,
.btn-primary:active{transform:none}

.form-label,.ik-field label{
    display:block;
    margin-bottom:.5rem;
    color:var(--ik-text-secondary);
    font-size:var(--ik-font-sm);
    font-weight:700;
}

.form-control,.form-select{
    border:1px solid var(--ik-border);
    border-radius:var(--ik-radius-sm);
    background:#fff;
    color:var(--ik-text);
    padding:.72rem .9rem;
    box-shadow:0 1px 2px rgba(24,38,51,.035);
}
.form-control::placeholder{color:#6D8291;opacity:1}
.form-control:hover,.form-select:hover{border-color:var(--ik-border-strong)}
.form-control:focus,.form-select:focus{
    border-color:var(--ik-primary);
    box-shadow:var(--ik-focus);
}
.form-control:disabled,.form-select:disabled{
    color:#435867;
    background:#EDF3F6;
    opacity:1;
}

/* App shell */
.ik-sidebar{
    width:17.5rem;
    padding:1.25rem;
    background:
        radial-gradient(circle at 16% 2%,rgba(255,255,255,.13),transparent 24%),
        linear-gradient(180deg,#2F9DCC 0%,#267FAE 53%,#195F84 100%);
    box-shadow:10px 0 30px rgba(25,95,132,.11);
}
.ik-main{margin-left:17.5rem}
.ik-sidebar-brand{
    gap:.8rem;
    padding:.25rem .2rem 1.35rem;
}
.ik-sidebar-brand img{
    width:3.05rem;
    height:3.05rem;
    filter:drop-shadow(0 5px 10px rgba(18,67,92,.20));
}
.ik-sidebar-brand strong{
    color:#fff;
    font-size:var(--ik-font-lg);
    letter-spacing:.11em;
}
.ik-sidebar-brand small{
    color:rgba(255,255,255,.88);
    font-size:var(--ik-font-xs);
}
.ik-workspace{
    padding:.85rem;
    border:1px solid rgba(255,255,255,.30);
    border-radius:var(--ik-radius-md);
    background:rgba(255,255,255,.15);
    backdrop-filter:blur(8px);
}
.ik-workspace label{color:rgba(255,255,255,.90);font-size:var(--ik-font-xs)}
.ik-workspace .form-select{
    min-height:2.7rem;
    border-color:rgba(255,255,255,.35);
    background-color:rgba(255,255,255,.96);
    color:var(--ik-text);
    font-size:var(--ik-font-sm);
    font-weight:650;
}
.ik-nav{gap:.35rem}
.ik-nav-link{
    min-height:3rem;
    gap:.8rem;
    padding:.72rem .82rem;
    border-radius:.78rem;
    color:rgba(255,255,255,.91);
    font-size:var(--ik-font-sm);
    font-weight:600;
}
.ik-nav-link i{font-size:1.15em;-webkit-text-stroke:.15px currentColor}
.ik-nav-link:hover{
    color:#fff;
    background:rgba(255,255,255,.15);
}
.ik-nav-link.active{
    color:var(--ik-primary-deep);
    background:#fff;
    box-shadow:0 9px 22px rgba(20,75,105,.18);
}
.ik-sidebar-bottom{border-color:rgba(255,255,255,.24)}

.ik-topbar{
    min-height:5rem;
    height:auto;
    padding:.8rem clamp(1rem,2vw,2rem);
    border-color:var(--ik-border);
    background:rgba(255,255,255,.96);
    backdrop-filter:blur(12px);
}
.ik-topbar h1{
    color:var(--ik-text);
    font-size:var(--ik-font-lg);
    font-weight:800;
}
.ik-topbar span,.ik-user small{
    color:var(--ik-text-muted);
    font-size:var(--ik-font-sm);
}
.ik-user strong{font-size:var(--ik-font-sm)}
.ik-content{padding:clamp(1rem,2.4vw,2.2rem)}

/* Cards and hierarchy */
.ik-stat,.ik-panel,.card{
    border:1px solid var(--ik-card-border);
    border-radius:var(--ik-card-radius);
    background:var(--ik-surface);
    box-shadow:var(--ik-card-shadow);
}
.ik-stat,.ik-panel{padding:clamp(1.1rem,2vw,1.55rem)}
.ik-stat span{color:var(--ik-text-secondary);font-size:var(--ik-font-sm);font-weight:650}
.ik-stat strong{color:var(--ik-primary-deep);font-size:var(--ik-font-2xl)}
.ik-stat small{color:var(--ik-text-muted)}
.ik-panel h3{color:var(--ik-text);font-size:var(--ik-font-lg)}
.ik-panel-head{gap:1rem;flex-wrap:wrap}
.ik-status{
    padding:.45rem .75rem;
    color:#08654C;
    background:#E2F8F0;
    border:1px solid #A7E6CF;
    font-size:var(--ik-font-xs);
}

/* Dashboard hero: brighter but still readable outdoors */
.ik-hero-card{
    min-height:clamp(13rem,26vw,17rem);
    padding:clamp(1.45rem,3vw,2.5rem);
    border:1px solid rgba(25,95,132,.35);
    border-radius:var(--ik-radius-xl);
    color:#fff;
    background:
        radial-gradient(circle at 82% 42%,rgba(255,255,255,.20),transparent 22%),
        radial-gradient(circle at 75% 50%,rgba(20,184,176,.27),transparent 35%),
        linear-gradient(125deg,#3399CC 0%,#2B8DBD 52%,#216F9B 100%);
    box-shadow:var(--ik-shadow-md);
}
.ik-hero-card h2{
    color:#fff;
    font-size:var(--ik-font-hero);
    line-height:1.02;
}
.ik-hero-card p{
    max-width:43rem;
    color:rgba(255,255,255,.94);
    font-size:var(--ik-font-md);
}
.ik-hero-card .ik-kicker{color:#fff}
.ik-hero-orb{border-color:rgba(255,255,255,.25)}
.ik-kicker{
    color:var(--ik-primary-deep);
    font-size:var(--ik-font-xs);
    font-weight:800;
    letter-spacing:.12em;
}

/* Authentication and onboarding */
.ik-auth-page,
.ik-access-shell,
.ik-auth-shell{background:var(--ik-bg)}

.ik-access-shell{
    grid-template-columns:minmax(18rem,.88fr) minmax(24rem,1.12fr);
}
.ik-access-brand,
.ik-auth-brand{
    color:#fff;
    background:
        radial-gradient(circle at 76% 24%,rgba(255,255,255,.17),transparent 26%),
        radial-gradient(circle at 22% 76%,rgba(20,184,176,.22),transparent 28%),
        linear-gradient(145deg,#3399CC 0%,#2B8DBD 52%,#216F9B 100%);
}
.ik-access-brand:after{
    border-color:rgba(255,255,255,.20);
    box-shadow:0 0 0 42px rgba(255,255,255,.035),0 0 0 84px rgba(255,255,255,.023);
}
.ik-access-symbol{
    width:min(13.5rem,60%);
    max-height:14rem;
    border-radius:24%;
    box-shadow:0 24px 55px rgba(17,73,102,.25),0 0 0 1px rgba(255,255,255,.25);
}
.ik-access-brand-copy strong,
.ik-brand-lockup strong{color:#fff}
.ik-access-brand-copy span,
.ik-brand-lockup span{color:rgba(255,255,255,.91)}

.ik-access-panel,.ik-auth-panel{
    padding:clamp(1rem,3vw,2.5rem);
    background:
        radial-gradient(circle at 94% 8%,rgba(51,153,204,.09),transparent 24%),
        var(--ik-bg);
}
.ik-access-card,.ik-auth-card{
    width:min(34rem,100%);
    padding:clamp(1.35rem,4vw,2.5rem);
    border:1px solid var(--ik-border);
    border-radius:var(--ik-radius-xl);
    background:#fff;
    box-shadow:var(--ik-shadow-lg);
}
.ik-access-heading,
.ik-auth-card .ik-access-heading{
    text-align:center;
}
.ik-access-heading h1,
.ik-access-heading h2,
.ik-auth-card h2{
    margin:.45rem 0 .65rem;
    color:var(--ik-text);
    font-size:var(--ik-font-2xl);
    font-weight:800;
    line-height:1.12;
}
.ik-access-heading p{
    color:var(--ik-text-secondary);
    font-size:var(--ik-font-md);
}
.ik-auth-card .ik-kicker,
.ik-access-heading .ik-kicker{display:block;text-align:center}

.ik-access-code,.ik-code{
    height:auto;
    min-height:4.4rem;
    padding:.65rem .4rem;
    text-align:center;
    color:var(--ik-primary-deep);
    font-size:clamp(1.65rem,1.2rem + 1.6vw,2.35rem)!important;
    font-weight:800;
    letter-spacing:clamp(.28rem,1.4vw,.62rem);
    font-variant-numeric:tabular-nums;
}
.ik-verify-mark{
    width:clamp(4.6rem,13vw,5.7rem);
    height:clamp(4.6rem,13vw,5.7rem);
}

/* Tables and overflow: preserve browser zoom and enlarged fonts */
.table-responsive{
    border-radius:var(--ik-radius-md);
    scrollbar-gutter:stable;
}
.table{
    color:var(--ik-text);
    font-size:var(--ik-font-sm);
}
.table>:not(caption)>*>*{padding:.82rem .8rem}
.table thead th{
    color:var(--ik-text-secondary);
    background:var(--ik-surface-alt);
    font-size:var(--ik-font-xs);
    letter-spacing:.025em;
}
.badge{font-size:var(--ik-font-xs);padding:.45em .68em}

/* Modal readability */
.modal-content{
    border:1px solid var(--ik-border);
    border-radius:var(--ik-radius-lg);
    box-shadow:var(--ik-shadow-lg);
}
.modal-header,.modal-footer{padding:1rem 1.2rem}
.modal-title{font-size:var(--ik-font-lg)}
.modal-body{font-size:var(--ik-font-md)}


/* Operational Pilot modals: fit reliably in short desktop and mobile viewports */
.modal-dialog-scrollable{
    height:calc(100dvh - 1rem);
    max-height:calc(100dvh - 1rem);
    margin:.5rem auto;
}
.modal-dialog-scrollable .modal-content{
    max-height:100%;
}
.modal-dialog-scrollable .modal-body{
    min-height:0;
    overflow-y:auto;
    overscroll-behavior:contain;
}
.modal-dialog-scrollable .modal-footer{
    flex-shrink:0;
    padding-bottom:max(1rem,env(safe-area-inset-bottom));
}
@media(max-width:575.98px){
    .modal-dialog-scrollable{
        width:calc(100% - .5rem);
        height:calc(100dvh - .5rem);
        max-height:calc(100dvh - .5rem);
        margin:.25rem auto;
    }
    .modal-dialog-scrollable .modal-content{border-radius:1rem;}
}

/* Reduced motion and forced-color support */
@media(prefers-reduced-motion:reduce){
    *,*::before,*::after{
        scroll-behavior:auto!important;
        animation-duration:.01ms!important;
        animation-iteration-count:1!important;
        transition-duration:.01ms!important;
    }
}
@media(forced-colors:active){
    .ik-nav-link.active,.ik-btn-primary,.btn-primary{forced-color-adjust:auto}
}

/* Tablets and phones */
@media(max-width:991.98px){
    .ik-sidebar{
        width:min(19rem,88vw);
        box-shadow:0 0 34px rgba(25,95,132,.30);
    }
    .ik-main{margin-left:0}
    .ik-topbar{min-height:4.5rem}
    .ik-user{max-width:42%;overflow-wrap:anywhere}
    .ik-access-shell,.ik-auth-shell{grid-template-columns:1fr}
    .ik-access-brand,.ik-auth-brand{display:none}
    .ik-access-panel,.ik-auth-panel{min-height:100dvh}
}
@media(max-width:575.98px){
    :root{--ik-touch-min:3.1rem}
    .ik-content{padding:1rem}
    .ik-topbar{gap:.75rem}
    .ik-topbar h1{max-width:48vw;overflow-wrap:anywhere}
    .ik-access-card,.ik-auth-card{border-radius:1.25rem;padding:1.25rem}
    .ik-panel-head{align-items:flex-start}
    .ik-hero-card{min-height:12rem}
    .ik-hero-orb{right:-3rem;opacity:.42}
}

/* Enlarged-font resilience: avoid clipped fixed-height text containers */
@media(max-width:30rem){
    .row>[class*="col-"]{min-width:0}
    .ik-stat strong,.ik-panel h3,.ik-topbar h1{overflow-wrap:anywhere}
}

/* FOUNDATION SPRINT 2.4 — VISUAL LOGIN + LANGUAGE-AWARE MESSAGE */
.ik-login-visual-page{overflow-x:hidden}
.ik-login-shell{display:grid;grid-template-columns:minmax(30rem,1.16fr) minmax(28rem,.84fr);min-height:100dvh;background:var(--ik-bg)}
.ik-login-visual{position:relative;isolation:isolate;min-height:100dvh;overflow:hidden;padding:clamp(2rem,4vw,4rem);color:#fff;background:#195F84}
.ik-login-background{
    position:absolute;
    inset:0;
    z-index:-2;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;
    transform:scale(1.004);
    filter:saturate(1.05) contrast(1.02) brightness(1.08);
}
.ik-login-visual-shade{
    position:absolute;
    inset:0;
    z-index:-1;
    background:
        linear-gradient(
            90deg,
            rgba(6,42,66,.56) 0%,
            rgba(6,42,66,.42) 26%,
            rgba(6,42,66,.24) 48%,
            rgba(6,42,66,.08) 72%,
            rgba(6,42,66,.02) 100%
        );
}
.ik-login-brand{display:flex;align-items:center;gap:.9rem;position:relative;z-index:1}
.ik-login-brand img{width:3.6rem;height:3.6rem;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(0,0,0,.22))}
.ik-login-brand strong{display:block;color:#fff;font-size:var(--ik-font-lg);font-weight:800;letter-spacing:.16em}
.ik-login-brand span{display:block;margin-top:.2rem;color:rgba(255,255,255,.92);font-size:var(--ik-font-sm)}
.ik-login-message{
    position:absolute;
    left:clamp(2rem,4vw,4rem);
    top:clamp(10.5rem,20vh,13.5rem);
    bottom:auto;
    z-index:1;
    width:min(29rem,68%);
    padding:clamp(.95rem,1.35vw,1.25rem);
    border:1px solid rgba(255,255,255,.10);
    border-radius:1rem;
    background:linear-gradient(
        90deg,
        rgba(4,35,55,.34) 0%,
        rgba(4,35,55,.20) 70%,
        rgba(4,35,55,.08) 100%
    );
    box-shadow:0 14px 32px rgba(0,35,55,.10);
    backdrop-filter:blur(1.5px);
    text-shadow:0 2px 12px rgba(0,0,0,.22);
}
.ik-login-kicker{
    display:inline-flex;
    align-items:center;
    gap:.65rem;
    margin-bottom:.68rem;
    color:#4DE4DD;
    font-size:var(--ik-font-xs);
    font-weight:800;
    letter-spacing:.12em;
}
.ik-login-kicker::before{content:"";width:2.1rem;height:.16rem;border-radius:99px;background:#4DE4DD}
.ik-login-message h1{
    max-width:27rem;
    margin:0 0 .75rem;
    color:#fff;
    font-size:clamp(1.75rem,1.32rem + 1.25vw,2.85rem);
    font-weight:560;
    line-height:1.04;
    letter-spacing:-.028em;
}
.ik-login-message p{
    max-width:25rem;
    margin:0;
    color:rgba(255,255,255,.96);
    font-size:clamp(.94rem,.90rem + .10vw,1.02rem);
    line-height:1.5;
}
.ik-login-panel{position:relative;display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:clamp(5.5rem,9vh,7rem) clamp(1rem,4vw,4rem) 2rem;background:radial-gradient(circle at 88% 10%,rgba(51,153,204,.10),transparent 24%),var(--ik-bg)}
.ik-login-language{position:absolute;top:clamp(1rem,2.2vw,1.7rem);right:clamp(1rem,2.2vw,1.7rem);z-index:2}
.ik-login-language .form-select{min-width:8.2rem;min-height:2.75rem;padding-top:.45rem;padding-bottom:.45rem;border-color:var(--ik-border);background-color:rgba(255,255,255,.96);font-size:var(--ik-font-sm);font-weight:650;box-shadow:var(--ik-shadow-sm)}
.ik-login-card{width:min(31rem,100%)}
@media(max-width:991.98px){.ik-login-shell{display:block}.ik-login-visual{display:none}.ik-login-panel{min-height:100dvh;padding-top:5.4rem}}
@media(max-width:575.98px){.ik-login-panel{padding-right:1rem;padding-left:1rem}.ik-login-language{top:.8rem;right:.8rem}.ik-login-card{padding-top:1.5rem}}

.ik-login-card-mark{display:block;width:clamp(4.5rem,8vw,5.6rem);height:auto;margin:0 auto .65rem;object-fit:contain}


/* FOUNDATION SPRINT 2.4 — LEFT VISUAL PANEL REFINEMENT */
.ik-login-message h1{
    max-width:30rem;
    margin-bottom:.9rem;
    font-size:clamp(2rem,1.45rem + 1.8vw,3.6rem);
    line-height:1.05;
}
.ik-login-message p{
    max-width:29rem;
    font-size:clamp(.98rem,.94rem + .12vw,1.08rem);
    line-height:1.55;
}
.ik-login-kicker{
    margin-bottom:.85rem;
}
@media(min-width:992px) and (max-height:760px){
    .ik-login-message{
        bottom:clamp(3.2rem,9vh,5rem);
        padding:1rem 1.15rem;
    }
    .ik-login-message h1{
        font-size:clamp(1.85rem,1.35rem + 1.55vw,3rem);
    }
}
@media(min-width:1500px){
    .ik-login-message{
        left:clamp(3rem,4.2vw,5rem);
        bottom:clamp(8rem,18vh,12rem);
    }
}


/* FOUNDATION SPRINT 2.4 — TOP MESSAGE LAYOUT TEST */
@media(min-width:992px) and (max-height:820px){
    .ik-login-message{
        top:clamp(8.5rem,18vh,10.5rem);
        width:min(27rem,66%);
        padding:.9rem 1rem;
    }
    .ik-login-message h1{
        font-size:clamp(1.65rem,1.25rem + 1.1vw,2.55rem);
    }
}
@media(min-width:992px) and (max-height:680px){
    .ik-login-message{
        top:7.25rem;
    }
    .ik-login-brand{
        transform:scale(.92);
        transform-origin:left top;
    }
}


/* FOUNDATION SPRINT 2.4 — AUTO-HEIGHT MESSAGE PANEL
   Corrects legacy media queries that kept a bottom position and stretched
   the translucent panel after it was moved upward. */
@media(min-width:992px){
    .ik-login-message{
        top:clamp(9rem,17vh,11.5rem) !important;
        right:auto !important;
        bottom:auto !important;
        width:min(27rem,62%) !important;
        height:auto !important;
        min-height:0 !important;
        padding:.9rem 1.05rem !important;
        background:linear-gradient(
            90deg,
            rgba(4,35,55,.28) 0%,
            rgba(4,35,55,.17) 72%,
            rgba(4,35,55,.06) 100%
        ) !important;
        backdrop-filter:blur(1px);
    }

    .ik-login-message h1{
        max-width:25rem !important;
        margin-bottom:.62rem !important;
        font-size:clamp(1.65rem,1.22rem + 1.08vw,2.55rem) !important;
        line-height:1.03 !important;
    }

    .ik-login-message p{
        max-width:24rem !important;
        font-size:clamp(.9rem,.87rem + .08vw,.98rem) !important;
        line-height:1.45 !important;
    }

    .ik-login-kicker{
        margin-bottom:.55rem !important;
    }

    /* Show a little more of the useful right-hand action area. */
    .ik-login-background{
        object-position:58% center !important;
    }
}

@media(min-width:992px) and (max-height:760px){
    .ik-login-message{
        top:7.8rem !important;
        bottom:auto !important;
        width:min(25rem,60%) !important;
    }
}

@media(min-width:1500px){
    .ik-login-message{
        top:clamp(9.5rem,17vh,12rem) !important;
        bottom:auto !important;
    }
}


/* ==========================================================================
   IKALUM SPRINT 2.4.1 — ACTIVE LOGIN CAROUSEL
   ========================================================================== */

.ik-login-background-blur,
.ik-login-background{
    position:absolute;
    inset:0;
    opacity:0;
    transition:opacity .8s ease;
}

.ik-login-background-blur{
    z-index:-3;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;
    filter:blur(22px) saturate(1.02) brightness(.78);
    transform:scale(1.07);
}

.ik-login-background{
    z-index:-2;
    width:100%;
    height:100%;
    object-fit:contain !important;
    object-position:center !important;
    transform:none !important;
    filter:saturate(1.03) contrast(1.01) brightness(1.03) !important;
}

.ik-login-background-blur.is-visible,
.ik-login-background.is-visible{
    opacity:1;
}

.ik-login-message{
    opacity:0;
    transform:translateY(.35rem);
    transition:opacity .55s ease .12s,transform .55s ease .12s;
}

.ik-login-message.is-visible{
    opacity:1;
    transform:translateY(0);
}

@media(prefers-reduced-motion:reduce){
    .ik-login-background-blur,
    .ik-login-background,
    .ik-login-message{
        transition:none !important;
        transform:none !important;
    }
}


/* ==========================================================================
   IKALUM SPRINT 2.4.1 — HORIZONTAL SLIDING CAROUSEL HOTFIX
   ========================================================================== */

/* The previous blurred backdrop is intentionally disabled. It was global,
   not specific to image 06, and remained visible when an original image with
   a different aspect ratio was substituted. */
.ik-login-background-blur{
    display:none !important;
}

.ik-login-visual{
    background:#195F84;
}

.ik-login-scene-layer{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    object-fit:cover !important;
    object-position:center !important;
    opacity:1 !important;
    filter:saturate(1.03) contrast(1.01) brightness(1.03) !important;
    transition:transform .9s cubic-bezier(.22,.72,.22,1) !important;
    will-change:transform;
}

.ik-login-scene-layer.is-current{
    z-index:-2;
    transform:translate3d(0,0,0) !important;
}

.ik-login-scene-layer.is-incoming{
    z-index:-2;
    transform:translate3d(100%,0,0) !important;
}

.ik-login-scene-layer.is-exiting{
    z-index:-3;
    transform:translate3d(-100%,0,0) !important;
}

/* Keep the image visible throughout the transition. */
.ik-login-background.is-visible,
.ik-login-background{
    opacity:1 !important;
}

/* Text changes subtly while the image slides, without exposing the panel. */
.ik-login-message{
    transition:opacity .35s ease,transform .35s ease !important;
}

@media(prefers-reduced-motion:reduce){
    .ik-login-scene-layer{
        transition:none !important;
    }
}


/* ==========================================================================
   IKALUM SPRINT 2.4.1 — TRUE CROSSFADE CAROUSEL
   ========================================================================== */

/*
 * Se conservan dos capas superpuestas.
 * La escena vigente permanece completamente visible.
 * La siguiente se funde encima cuando ya terminó de cargar.
 */
.ik-login-scene-layer{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    object-fit:cover !important;
    object-position:center !important;
    filter:saturate(1.03) contrast(1.01) brightness(1.03) !important;
    transform:none !important;
    will-change:opacity;
    transition:opacity 1.45s ease-in-out !important;
}

.ik-login-scene-layer.is-current{
    z-index:-2 !important;
    opacity:1 !important;
    transform:none !important;
}

.ik-login-scene-layer.is-incoming{
    z-index:-1 !important;
    opacity:0 !important;
    transform:none !important;
}

/*
 * La capa entrante queda por encima durante el fundido.
 * La imagen anterior no se oculta ni se desplaza.
 */
#loginSceneA.is-current,
#loginSceneB.is-current{
    opacity:1 !important;
}

/* Neutraliza por completo las reglas heredadas del desplazamiento horizontal. */
.ik-login-scene-layer.is-exiting{
    z-index:-3 !important;
    opacity:1 !important;
    transform:none !important;
}

.ik-login-background{
    opacity:0 !important;
}

.ik-login-background.is-current{
    opacity:1 !important;
}

/* El texto acompaña el cambio con una transición breve y discreta. */
.ik-login-message{
    transition:opacity .4s ease,transform .4s ease !important;
}

@media(prefers-reduced-motion:reduce){
    .ik-login-scene-layer,
    .ik-login-message{
        transition:none !important;
    }
}


/* ==========================================================================
   IKALUM SPRINT 2.4.1 FINAL — SYNCHRONIZED LOAD + MOBILE LOGIN ONLY
   ========================================================================== */

/* Desktop: do not expose the visual panel before the first scene is ready. */
@media(min-width:992px){
    .ik-login-visual{
        opacity:0;
        visibility:hidden;
        transition:opacity .38s ease;
    }

    .ik-login-visual.is-ready{
        opacity:1;
        visibility:visible;
    }

    .ik-login-visual.has-image-error{
        display:none;
    }

    .ik-login-visual.has-image-error + .ik-login-panel{
        grid-column:1 / -1;
    }

    /* The selector stays at the upper-right of the login side on desktop. */
    .ik-login-language{
        position:fixed !important;
        top:clamp(1rem,2.2vw,1.7rem) !important;
        right:clamp(1rem,2.2vw,1.7rem) !important;
        margin:0 !important;
        z-index:20;
    }
}

/* The old text stays visible until the new photograph has completed its fade. */
.ik-login-message{
    transition:opacity .22s ease,transform .22s ease !important;
}

/*
 * Mobile and narrow tablet:
 * one self-contained login window only — no scene, no carousel, no external
 * language control, no decorative page gradient.
 */
@media(max-width:991.98px){
    body.ik-login-visual-page{
        min-height:100dvh;
        background:var(--ik-bg) !important;
    }

    .ik-login-shell{
        display:block !important;
        min-height:100dvh;
    }

    .ik-login-visual{
        display:none !important;
    }

    .ik-login-panel{
        min-height:100dvh !important;
        padding:1rem !important;
        background:var(--ik-bg) !important;
        align-items:center !important;
    }

    .ik-login-card{
        width:min(30rem,100%) !important;
        margin:0 auto !important;
    }

    .ik-login-language{
        position:static !important;
        display:flex;
        justify-content:flex-end;
        margin:0 0 .75rem !important;
    }

    .ik-login-language .form-select{
        width:auto;
        min-width:8.2rem;
        min-height:2.65rem;
        box-shadow:none;
    }
}

@media(max-width:575.98px){
    .ik-login-panel{
        padding:.75rem !important;
    }

    .ik-login-card{
        padding:1.15rem !important;
        border-radius:1.35rem;
    }

    .ik-login-card-mark{
        width:4.35rem;
        margin-bottom:.5rem;
    }

    .ik-access-heading{
        margin-bottom:1.15rem;
    }

    .ik-access-heading h2{
        margin-bottom:.4rem;
    }

    .ik-login-language{
        margin-bottom:.35rem !important;
    }
}

@media(prefers-reduced-motion:reduce){
    .ik-login-visual,
    .ik-login-message{
        transition:none !important;
    }
}


/* ==========================================================================
   IKALUM SPRINT 2.4.1 — DELIBERATE TEXT REVEAL EFFECT
   ========================================================================== */

/*
 * Estado normal: el mensaje permanece visible.
 * El efecto se ejecuta únicamente durante el cambio de escena.
 */
.ik-login-message,
.ik-login-message.is-visible{
    opacity:1 !important;
    transform:translate3d(0,0,0) !important;
    transition:
        opacity .32s ease,
        transform .32s cubic-bezier(.22,.72,.22,1) !important;
    will-change:opacity,transform;
}

/*
 * Salida breve: desaparece y baja ligeramente.
 * El contenido se sustituye mientras el bloque está oculto.
 */
.ik-login-message.is-changing{
    opacity:0 !important;
    transform:translate3d(0,10px,0) !important;
    transition:
        opacity .18s ease,
        transform .18s ease !important;
}

@media(prefers-reduced-motion:reduce){
    .ik-login-message,
    .ik-login-message.is-visible,
    .ik-login-message.is-changing{
        transition:none !important;
        transform:none !important;
    }
}


/* =========================================================
   IKALUM SPRINT 2.4.2 — MY TASKS / MIS TAREAS
   Pantalla principal outdoor-first y orientada a acciones.
========================================================= */
.ik-tasks-context{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1.5rem;
    padding:clamp(1.4rem,3vw,2.35rem);
    border:1px solid #CFE2EC;
    border-radius:24px;
    background:linear-gradient(135deg,#FFFFFF 0%,#F1F9FC 100%);
    box-shadow:0 12px 34px rgba(15,47,72,.07);
}
.ik-context-kicker,.ik-section-heading span{
    display:block;
    margin-bottom:.45rem;
    color:#19779F;
    font-size:.76rem;
    font-weight:800;
    letter-spacing:.09em;
    text-transform:uppercase;
}
.ik-tasks-context h2{
    margin:0;
    color:var(--ik-primary-deep,#102A43);
    font-size:clamp(1.65rem,3vw,2.45rem);
    font-weight:800;
    line-height:1.12;
}
.ik-tasks-context p{
    margin:.6rem 0 0;
    color:var(--ik-text-secondary,#526779);
    font-size:1rem;
    font-weight:600;
}
.ik-task-counter{
    display:flex;
    align-items:center;
    gap:.85rem;
    min-width:12.5rem;
    padding:1rem 1.15rem;
    border:1px solid #B8D9E8;
    border-radius:18px;
    background:#FFFFFF;
}
.ik-task-counter strong{
    color:#116A91;
    font-size:2rem;
    line-height:1;
}
.ik-task-counter span{
    color:#36576B;
    font-size:.9rem;
    font-weight:750;
    line-height:1.25;
}
.ik-task-section,.ik-quick-section{margin-top:2rem}
.ik-section-heading{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:1.5rem;
    margin-bottom:1rem;
}
.ik-section-heading h2{
    margin:0;
    color:var(--ik-primary-deep,#102A43);
    font-size:1.35rem;
    font-weight:800;
}
.ik-section-heading p{
    max-width:32rem;
    margin:0;
    color:var(--ik-text-secondary,#526779);
    font-size:.92rem;
    text-align:right;
}
.ik-task-list{display:grid;gap:.85rem}
.ik-empty-state{
    min-height:20rem;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    padding:2.5rem 1.5rem;
    border:1px solid #CFE5DB;
    border-radius:24px;
    background:#FFFFFF;
    text-align:center;
    box-shadow:0 10px 30px rgba(15,47,72,.045);
}
.ik-empty-icon{
    width:5rem;
    height:5rem;
    display:grid;
    place-items:center;
    margin-bottom:1.25rem;
    border:3px solid #16856F;
    border-radius:50%;
    background:#EAF8F4;
    color:#0E705E;
    font-size:2.7rem;
    line-height:1;
}
.ik-empty-state h2{
    margin:0;
    color:#173B4F;
    font-size:clamp(1.45rem,2.8vw,2rem);
    font-weight:800;
}
.ik-empty-state p{
    margin:.65rem 0 .2rem;
    color:#446477;
    font-size:1.05rem;
}
.ik-empty-state span{color:#708793;font-size:.9rem}
.ik-task-card{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:1rem;
    padding:1rem 1.1rem;
    border:1px solid #D7E3EA;
    border-left:5px solid #4D92B3;
    border-radius:18px;
    background:#FFFFFF;
    box-shadow:0 7px 22px rgba(15,47,72,.045);
}
.ik-task-priority-critical{border-left-color:#A61B1B}
.ik-task-priority-high{border-left-color:#C45312}
.ik-task-priority-low{border-left-color:#708793}
.ik-task-icon{
    width:3.25rem;
    height:3.25rem;
    display:grid;
    place-items:center;
    border-radius:14px;
    background:#EAF5FA;
    color:#176E96;
    font-size:1.35rem;
}
.ik-task-title-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.ik-task-body h3{margin:0;color:#173B4F;font-size:1.05rem;font-weight:800}
.ik-task-body p{margin:.3rem 0 0;color:#526779;font-size:.92rem}
.ik-task-badge{padding:.25rem .55rem;border-radius:999px;background:#FFF0E6;color:#93400B;font-size:.7rem;font-weight:800;text-transform:uppercase}
.ik-task-due{display:inline-flex;align-items:center;gap:.35rem;margin-top:.45rem;color:#5D7380;font-size:.78rem;font-weight:700}
.ik-task-action{
    min-height:2.8rem;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:.5rem;
    padding:.65rem 1rem;
    border:1px solid #176E96;
    border-radius:12px;
    background:#176E96;
    color:#FFFFFF !important;
    font-weight:800;
}
.ik-task-action:hover{background:#105B7D;border-color:#105B7D;text-decoration:none}
.ik-quick-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:.85rem;
}
.ik-quick-access{
    min-height:5.25rem;
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:.85rem;
    padding:1rem;
    border:1px solid #D4E1E8;
    border-radius:17px;
    background:#FFFFFF;
    color:#173B4F;
    box-shadow:0 7px 22px rgba(15,47,72,.035);
}
.ik-quick-access:hover{
    border-color:#78B5D0;
    color:#105B7D;
    text-decoration:none;
    transform:translateY(-1px);
}
.ik-quick-access>span{
    width:2.8rem;
    height:2.8rem;
    display:grid;
    place-items:center;
    border-radius:12px;
    background:#EEF7FB;
    color:#176E96;
    font-size:1.2rem;
}
.ik-quick-access strong{font-size:.94rem;font-weight:800}
.ik-quick-access>.bi-chevron-right{color:#78909C}
@media(max-width:767.98px){
    .ik-tasks-context{align-items:flex-start;flex-direction:column;padding:1.25rem;border-radius:19px}
    .ik-task-counter{width:100%;min-width:0}
    .ik-section-heading{align-items:flex-start;flex-direction:column;gap:.35rem}
    .ik-section-heading p{text-align:left}
    .ik-empty-state{min-height:17rem;padding:2rem 1rem;border-radius:19px}
    .ik-task-card{grid-template-columns:auto minmax(0,1fr);align-items:start}
    .ik-task-action{grid-column:1/-1;width:100%}
    .ik-quick-grid{grid-template-columns:1fr}
    .ik-quick-access{min-height:4.8rem}
}
@media(min-width:768px) and (max-width:1199.98px){.ik-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:no-preference){.ik-quick-access{transition:border-color .18s ease,color .18s ease,transform .18s ease}}

/* Sprint 2.6.4 — authentication identity shared by 2FA, recovery and invitations */
.ik-access-shell,.ik-recovery-shell,.ik-reset-shell,.ik-invite-shell{
    background:linear-gradient(180deg,#FAF5F3 0%,#F2E0DC 100%)!important;
}
.ik-access-brand,.ik-recovery-brand,.ik-reset-brand,.ik-invite-brand{
    background:linear-gradient(145deg,#E35336 0%,#C94730 58%,#A83B29 100%)!important;
}
.ik-access-card,.ik-auth-card,.ik-recovery-card,.ik-reset-card,.ik-invite-card{
    border-color:#E8CEC8!important;
    background:rgba(255,255,255,.97)!important;
    box-shadow:0 24px 70px rgba(104,55,45,.14)!important;
}
.ik-kicker{color:#C94730!important}
.ik-choice label,.ik-account-summary{border-color:#E8CEC8!important;background:#FCF8F7!important}
.ik-choice label:has(input:checked){border-color:#E35336!important;background:#FBECE7!important}
.ik-choice input:checked+span,.ik-account-summary span{color:#A83B29!important}
.ik-account-summary small{color:#68767C!important}
.ik-recovery-shell .ik-btn-primary,
.ik-reset-shell .ik-btn-primary,
.ik-invite-shell .ik-btn-primary{
    border-color:#C94730!important;
    background:#C94730!important;
    color:#FFFFFF!important;
    box-shadow:0 12px 26px rgba(201,71,48,.20)!important;
}
.ik-recovery-shell .ik-btn-primary:hover,
.ik-reset-shell .ik-btn-primary:hover,
.ik-invite-shell .ik-btn-primary:hover{border-color:#A83B29!important;background:#A83B29!important}
.ik-recovery-shell input[type="radio"]{accent-color:#E35336}
.ik-recovery-shell a,
.ik-reset-shell a,
.ik-invite-shell a{color:#A83B29!important}
.swal2-loader{border-color:#E35336 transparent #E35336 transparent!important}
@media(max-width:991.98px){
    .ik-access-shell,.ik-recovery-shell,.ik-reset-shell,.ik-invite-shell{grid-template-columns:1fr!important}
    .ik-access-brand,.ik-recovery-brand,.ik-reset-brand,.ik-invite-brand{display:none!important}
    .ik-access-panel,.ik-recovery-panel,.ik-reset-panel,.ik-invite-panel{min-height:100dvh;padding:1rem!important}
}

/* Sprint 2.4.3 — Onboarding Tasks Foundation */
.ik-onboarding-progress{
    display:grid;
    grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);
    gap:1.5rem;
    align-items:center;
    margin-bottom:1.2rem;
    padding:1.35rem 1.5rem;
    border:1px solid #CFE2EC;
    border-radius:20px;
    background:linear-gradient(135deg,#FFFFFF 0%,#F2FAFD 100%);
    box-shadow:0 8px 26px rgba(15,47,72,.04);
}
.ik-onboarding-copy>span{
    display:block;
    margin-bottom:.25rem;
    color:#176E96;
    font-size:.72rem;
    font-weight:900;
    letter-spacing:.09em;
}
.ik-onboarding-copy h2{margin:0;color:#173B4F;font-size:1.18rem;font-weight:850}
.ik-onboarding-copy p{max-width:46rem;margin:.35rem 0 0;color:#526779;font-size:.9rem}
.ik-onboarding-progress-label{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.55rem;color:#314F60;font-size:.82rem}
.ik-onboarding-progress-label strong{font-weight:800}
.ik-onboarding-progress-label span{color:#176E96;font-weight:900}
.ik-onboarding-meter .progress{height:.65rem;border-radius:999px;background:#DDEBF1;overflow:hidden}
.ik-onboarding-meter .progress-bar{border-radius:999px;background:#176E96}
.ik-onboarding-steps{display:flex;justify-content:space-between;gap:.35rem;margin-top:.65rem;color:#B8CAD3;font-size:.55rem}
.ik-onboarding-step.is-complete{color:#21855B}
.ik-onboarding-step.is-complete i{font-size:.72rem;font-weight:900}
@media(max-width:767.98px){
    .ik-onboarding-progress{grid-template-columns:1fr;padding:1.2rem;border-radius:18px;gap:1rem}
}

/* Password visibility control: large touch target for mobile and gloved use. */
.ik-password-group .ik-password-toggle{min-width:52px;display:inline-flex;align-items:center;justify-content:center;border-color:#c8d8e3;background:#fff;color:#52697a}
.ik-password-group .ik-password-toggle:hover,.ik-password-group .ik-password-toggle:focus{background:#eef7fb;color:#167cb7;border-color:#8dbdd5}
.ik-password-group .ik-password-toggle i{font-size:1.2rem;pointer-events:none}



/* H01 RC4.7.13 - responsive record cards for mobile/tablet data lists */
@media (max-width: 991.98px) {
  .table-responsive.ik-responsive-cards-wrap {
    overflow: visible;
  }
  table.ik-responsive-cards,
  table.ik-responsive-cards tbody {
    display: block;
    width: 100%;
  }
  table.ik-responsive-cards thead {
    display: none;
  }
  table.ik-responsive-cards tbody tr {
    display: block;
    margin: 0 0 1rem;
    padding: .35rem 1rem;
    background: #fff;
    border: 1px solid rgba(184, 60, 34, .28);
    border-radius: 1rem;
    box-shadow: 0 .18rem .55rem rgba(34, 48, 55, .06);
  }
  table.ik-responsive-cards tbody tr:last-child {
    margin-bottom: 0;
  }
  table.ik-responsive-cards tbody td {
    display: grid;
    grid-template-columns: minmax(7.5rem, 34%) minmax(0, 1fr);
    gap: .75rem;
    align-items: start;
    width: 100%;
    padding: .72rem 0;
    border: 0;
    border-bottom: 1px solid rgba(34, 48, 55, .08);
    text-align: left !important;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  table.ik-responsive-cards tbody td:last-child {
    border-bottom: 0;
  }
  table.ik-responsive-cards tbody td::before {
    content: attr(data-label);
    font-weight: 700;
    color: #59666d;
    line-height: 1.35;
  }
  table.ik-responsive-cards tbody td[data-label=""]::before,
  table.ik-responsive-cards tbody td:not([data-label])::before {
    content: none;
  }
  table.ik-responsive-cards tbody td.ik-card-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start !important;
    align-items: center;
    gap: .5rem;
    padding-top: .9rem;
  }
  table.ik-responsive-cards tbody td.ik-card-actions::before {
    width: 100%;
    flex: 0 0 100%;
  }
  table.ik-responsive-cards tbody td.ik-card-actions .btn {
    margin: 0 !important;
  }
  table.ik-responsive-cards tbody tr.ik-card-empty {
    padding: 0;
  }
  table.ik-responsive-cards tbody tr.ik-card-empty td {
    display: block;
    padding: 2rem 1rem !important;
    text-align: center !important;
    border: 0;
  }
  table.ik-responsive-cards tbody tr.ik-card-empty td::before {
    content: none;
  }
  table.ik-responsive-cards tbody tr.ik-customer-structure-row {
    margin-top: -.65rem;
    background: rgba(248, 244, 241, .58);
    box-shadow: none;
  }
  table.ik-responsive-cards tbody tr.ik-customer-structure-row td {
    display: block;
    padding: .75rem 0;
    border: 0;
  }
  table.ik-responsive-cards tbody tr.ik-customer-structure-row td::before {
    content: none;
  }
}


/* H01 RC4.7.14 - actionable tasks and customer navigation tree */
.ik-task-counter-link{position:relative;color:inherit;text-decoration:none;padding-right:2.7rem;cursor:pointer}
.ik-task-counter-link:hover,.ik-task-counter-link:focus{color:inherit;text-decoration:none;box-shadow:0 0 0 .2rem rgba(201,71,48,.12)}
.ik-task-counter-link>.bi{position:absolute;right:1rem;top:50%;transform:translateY(-50%);font-size:.9rem}
#pending-tasks{scroll-margin-top:1rem}
.ik-customer-tree{display:flex;flex-direction:column;gap:.55rem}
.ik-tree-site{border:1px solid rgba(34,48,55,.10);border-radius:.8rem;background:#fff;overflow:hidden}
.ik-tree-site-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.35rem;padding:.45rem .55rem}
.ik-tree-toggle-site{width:2rem;height:2rem;display:grid;place-items:center;padding:0;border:0;color:#68767c}
.ik-tree-site-link,.ik-tree-asset{color:#26343c;text-decoration:none}
.ik-tree-site-link{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.4rem .25rem;font-weight:700}
.ik-tree-site-link:hover,.ik-tree-asset:hover{color:#b83c22;text-decoration:none}
.ik-tree-count{min-width:1.7rem;padding:.18rem .42rem;border-radius:999px;background:#f6eeeb;color:#8f3d2b;text-align:center;font-size:.72rem;font-weight:800}
.ik-tree-assets{padding:.2rem .8rem .65rem 2.85rem}
.ik-tree-asset{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.5rem .55rem;border-top:1px solid rgba(34,48,55,.07)}
.ik-tree-asset:first-child{border-top:0}
@media(max-width:991.98px){
  .ik-customer-structure{padding:.25rem 0}
  .ik-tree-assets{padding-left:1.8rem}
  .ik-tree-site-link,.ik-tree-asset{min-height:2.75rem}
}
