:root{
    --navy:#15163d;
    --navy-2:#1d1f50;
    --royal:#3a3a8c;
    --blue:#2b8fd4;
    --blue-2:#1f6fb0;
    --ink:#1a1c2b;
    --muted:#6c7280;
    --faint:#9aa0ad;
    --line:#e9ecf2;
    --line-soft:#f1f3f8;
    --paper:#ffffff;
    --canvas:#fafbfd;
    --green:#1c9c63;
    --green-soft:#e8f6ef;
    --r:0px;
    --ease:cubic-bezier(.4,0,.2,1);
    --shadow:0 1px 0 var(--line), 0 1px 24px rgba(21,22,61,.04);
    --shadow-soft:0 24px 60px -28px rgba(21,22,61,.28);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{font-family:'Play',sans-serif;background:var(--canvas);color:var(--ink);
    -webkit-font-smoothing:antialiased;line-height:1.5}
  button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
  input,textarea{font-family:inherit;color:inherit}
  ::selection{background:var(--navy);color:#fff}
  .hidden{display:none!important}
  ::-webkit-scrollbar{width:9px;height:9px}
  ::-webkit-scrollbar-thumb{background:#d6dae3}
  ::-webkit-scrollbar-thumb:hover{background:#c3c8d3}

  /* type scale */
  .eyebrow{font-size:11px;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;color:var(--blue)}

  /* ============================================================
     LOGIN — split editorial
     ============================================================ */
  #loginView{position:fixed;inset:0;display:grid;grid-template-columns:1.05fr .95fr;z-index:40}
  .login-brandside{
    position:relative;background:var(--navy);color:#fff;padding:64px 60px;
    display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;
  }
  .login-brandside .lb-arrow{position:absolute;right:-90px;bottom:-70px;width:520px;opacity:.07}
  .login-brandside .lb-top img{height:40px}
  .login-brandside .lb-mid{position:relative;max-width:440px}
  .login-brandside .lb-mid .eyebrow{color:#6fb6e6;margin-bottom:22px;display:block}
  .login-brandside .lb-mid h1{font-size:54px;line-height:1.04;font-weight:700;letter-spacing:-1.5px}
  .login-brandside .lb-mid h1 em{font-style:normal;color:#5fb0e8}
  .login-brandside .lb-mid p{margin-top:22px;font-size:15px;color:#b6bbd8;max-width:380px;line-height:1.65}
  .login-brandside .lb-foot{position:relative;font-size:12px;color:#8990b5;letter-spacing:.3px}

  .login-formside{background:var(--paper);display:flex;align-items:center;justify-content:center;padding:48px}
  .login-form{width:100%;max-width:360px}
  .login-form h2{font-size:26px;color:var(--navy);font-weight:700;letter-spacing:-.5px}
  .login-form .sub{font-size:14px;color:var(--muted);margin-top:6px;margin-bottom:36px}
  .login-err{color:#c0392b;font-size:13px;min-height:20px;font-weight:700;margin-bottom:4px}
  .field{margin-bottom:20px}
  .field label{display:block;font-size:11px;font-weight:700;color:var(--navy);
    letter-spacing:1.2px;text-transform:uppercase;margin-bottom:9px}
  .field input{width:100%;padding:13px 2px;border:none;border-bottom:2px solid var(--line);
    background:transparent;font-size:16px;transition:border-color .25s var(--ease)}
  .field input::placeholder{color:var(--faint)}
  .field input:focus{outline:none;border-bottom-color:var(--blue)}
  .btn-solid{width:100%;background:var(--navy);color:#fff;padding:15px;font-size:15px;font-weight:700;
    letter-spacing:.3px;display:flex;align-items:center;justify-content:center;gap:10px;
    transition:background .25s var(--ease)}
  .btn-solid:hover{background:var(--navy-2)}
  .btn-solid .arr{display:inline-flex;transition:transform .25s var(--ease)}
  .btn-solid:hover .arr{transform:translateX(4px)}
  .login-hint{margin-top:28px;font-size:12px;color:var(--faint);line-height:1.7;
    border-top:1px solid var(--line-soft);padding-top:18px}
  .login-hint b{color:var(--navy)}

  /* ============================================================
     APP SHELL
     ============================================================ */
  #appView{display:flex;min-height:100vh}
  .sidebar{
    width:240px;flex-shrink:0;background:var(--paper);border-right:1px solid var(--line);
    display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
  }
  .sidebar .brand{padding:32px 20px 26px;text-align:center;border-bottom:1px solid var(--line-soft)}
  .sidebar .brand img{height:56px;width:auto;display:inline-block}
  .nav{padding:6px 14px;display:flex;flex-direction:column;gap:2px}
  .nav-label{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--faint);
    font-weight:700;padding:14px 12px 8px}
  .nav-item{display:flex;align-items:center;gap:13px;padding:11px 12px;font-size:14px;
    color:var(--muted);transition:color .2s,background .2s;position:relative}
  .nav-item .ic{width:19px;display:flex;justify-content:center}
  .nav-item:hover{color:var(--navy);background:var(--line-soft)}
  .nav-item.active{color:var(--navy);font-weight:700;background:var(--line-soft)}
  .nav-item.active::before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;background:var(--blue)}
  .sidebar .spacer{flex:1}
  .sidebar .foot{padding:16px;border-top:1px solid var(--line)}
  .userchip{display:flex;align-items:center;gap:11px;padding:8px 6px;margin-bottom:8px}
  .userchip .avatar{width:36px;height:36px;background:var(--navy);color:#fff;font-weight:700;
    font-size:13px;display:flex;align-items:center;justify-content:center}
  .userchip .uc-txt .n{font-size:13px;font-weight:700;color:var(--navy);line-height:1.2}
  .userchip .uc-txt .r{font-size:11px;color:var(--faint)}
  .logout-btn{width:100%;padding:10px;background:transparent;border:1px solid var(--line);
    color:var(--muted);font-size:12.5px;font-weight:700;display:flex;align-items:center;
    justify-content:center;gap:8px;transition:.2s}
  .logout-btn:hover{border-color:var(--navy);color:var(--navy)}

  .main{flex:1;min-width:0}
  .wrap{max-width:none;margin:0;padding:0 44px}

  /* topbar */
  .topbar{padding:30px 0 22px;display:flex;align-items:flex-end;justify-content:space-between;
    border-bottom:1px solid var(--line)}
  .topbar .pagetitle{font-size:30px;color:var(--navy);font-weight:700;letter-spacing:-.8px;line-height:1}
  .topbar .pagetitle .eyebrow{display:block;margin-bottom:9px}
  .topbar .date{font-size:13px;color:var(--faint)}

  /* ============================================================
     SIGNATURE HERO — editorial split
     ============================================================ */
  .hero{display:grid;grid-template-columns:1.15fr 1fr;gap:0;margin:30px 0 0;
    border:1px solid var(--line);background:var(--paper)}
  .hero-left{padding:40px 44px;display:flex;flex-direction:column;justify-content:space-between;
    border-right:1px solid var(--line);position:relative}
  .hero-left .eyebrow{margin-bottom:20px}
  .hero-bignum{display:flex;align-items:flex-end;gap:18px}
  .hero-bignum .num{font-size:88px;font-weight:700;color:var(--navy);letter-spacing:-4px;line-height:.82}
  .hero-bignum .meta{padding-bottom:8px}
  .hero-bignum .meta .l1{font-size:15px;color:var(--ink);font-weight:700}
  .hero-bignum .meta .l2{font-size:13px;color:var(--muted)}
  .spark{margin-top:30px}
  .spark .spark-cap{display:flex;justify-content:space-between;font-size:11px;color:var(--faint);
    text-transform:uppercase;letter-spacing:1px;margin-bottom:10px}
  .spark svg{display:block;width:100%;height:auto;overflow:visible}

  .hero-right{padding:40px 44px;display:flex;flex-direction:column;justify-content:center;
    background:linear-gradient(160deg,#fafcff,#f3f7fc)}
  .hero-right .eyebrow{margin-bottom:14px}
  .hero-right h3{font-size:24px;color:var(--navy);font-weight:700;letter-spacing:-.5px;line-height:1.15}
  .hero-right p{font-size:14px;color:var(--muted);margin-top:12px;line-height:1.6;max-width:330px}
  .btn-refer{margin-top:26px;align-self:flex-start;background:var(--navy);color:#fff;
    padding:15px 26px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:12px;
    transition:background .25s var(--ease),transform .2s var(--ease)}
  .btn-refer:hover{background:var(--navy-2);transform:translateY(-2px)}
  .btn-refer .arr{display:inline-flex;transition:transform .25s var(--ease)}
  .btn-refer:hover .arr{transform:translateX(4px)}

  /* ============================================================
     STAT STRIP
     ============================================================ */
  .stat-strip{display:grid;grid-template-columns:repeat(4,1fr);
    border:1px solid var(--line);border-top:none;background:var(--paper)}
  .stat{padding:26px 28px;border-right:1px solid var(--line);transition:background .2s}
  .stat:last-child{border-right:none}
  .stat:hover{background:var(--line-soft)}
  .stat .k{font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--faint);font-weight:700}
  .stat .v{font-size:40px;font-weight:700;color:var(--navy);letter-spacing:-2px;line-height:1;margin-top:14px}
  .stat .d{font-size:12px;color:var(--muted);margin-top:8px}

  /* ============================================================
     LOWER GRID
     ============================================================ */
  .lower{display:grid;grid-template-columns:1.6fr 1fr;gap:24px;margin-top:24px}
  .block{background:var(--paper);border:1px solid var(--line)}
  .block-head{padding:20px 26px;border-bottom:1px solid var(--line);display:flex;
    align-items:baseline;justify-content:space-between}
  .block-head h4{font-size:14px;color:var(--navy);font-weight:700;letter-spacing:.2px}
  .block-head .he{font-size:11px;color:var(--faint);letter-spacing:1px;text-transform:uppercase}

  /* monthly bars — static, refined */
  .bars{display:flex;align-items:flex-end;gap:20px;height:200px;padding:30px 26px}
  .bcol{flex:1;display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;justify-content:flex-end}
  .btrack{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}
  .bbar{width:100%;max-width:44px;background:var(--line);position:relative;transition:background .2s}
  .bbar.hot{background:linear-gradient(180deg,var(--blue),var(--navy))}
  .bcol:hover .bbar{filter:brightness(.96)}
  .bval{font-size:14px;font-weight:700;color:var(--navy)}
  .blbl{font-size:11px;color:var(--faint)}

  /* top relations — ranked list */
  .ranklist{padding:8px 26px 16px}
  .rank{display:flex;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid var(--line-soft)}
  .rank:last-child{border-bottom:none}
  .rank .pos{font-size:13px;font-weight:700;color:var(--faint);width:18px}
  .rank .rk-body{flex:1;min-width:0}
  .rank .rk-name{font-size:13.5px;font-weight:700;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rank .rk-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
  .rank .rk-bar{height:4px;background:var(--line-soft);margin-top:8px;position:relative}
  .rank .rk-bar span{position:absolute;left:0;top:0;bottom:0;background:var(--blue)}
  .rank .rk-count{font-size:13px;font-weight:700;color:var(--navy);white-space:nowrap}
  .empty{padding:34px 26px;text-align:center;color:var(--faint);font-size:13px}

  /* recent table */
  .recent{margin-top:24px;background:var(--paper);border:1px solid var(--line)}
  .table{width:100%;border-collapse:collapse;font-size:13.5px}
  .table thead th{text-align:left;padding:15px 26px;color:var(--faint);font-size:10.5px;
    text-transform:uppercase;letter-spacing:1.2px;font-weight:700;border-bottom:1px solid var(--line)}
  .table td{padding:16px 26px;border-bottom:1px solid var(--line-soft)}
  .table tbody tr:last-child td{border-bottom:none}
  .table tbody tr{transition:background .15s}
  .table tbody tr:hover td{background:var(--line-soft)}
  .table .pat{font-weight:700;color:var(--navy)}
  .pill{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:700;color:var(--green)}
  .pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green)}
  .dl{color:var(--blue);font-weight:700;font-size:12.5px;display:inline-flex;align-items:center;gap:6px;
    transition:gap .2s var(--ease)}
  .dl:hover{gap:9px}
  .content-pad{padding-bottom:56px}

  /* ============================================================
     MODAL
     ============================================================ */
  .overlay{position:fixed;inset:0;background:rgba(21,22,61,.4);backdrop-filter:blur(3px);
    display:flex;align-items:center;justify-content:center;z-index:50;padding:24px;
    opacity:0;transition:opacity .25s var(--ease)}
  .overlay.show{opacity:1}
  .modal{background:var(--paper);width:100%;max-width:600px;max-height:90vh;overflow:hidden;
    display:flex;flex-direction:column;box-shadow:var(--shadow-soft);
    transform:translateY(12px);transition:transform .3s var(--ease)}
  .overlay.show .modal{transform:none}
  .modal-head{padding:26px 30px 22px;display:flex;justify-content:space-between;align-items:flex-start;gap:18px;
    border-bottom:1px solid var(--line)}
  .modal-head .eyebrow{margin-bottom:7px;display:block}
  .modal-head h3{font-size:21px;color:var(--navy);font-weight:700;letter-spacing:-.4px}
  .modal-head .x{color:var(--faint);width:34px;height:34px;display:flex;align-items:center;
    justify-content:center;font-size:24px;transition:.18s;flex-shrink:0}
  .modal-head .x:hover{background:var(--line-soft);color:var(--navy)}

  .stepbar{display:flex;align-items:center;gap:14px;padding:16px 30px;border-bottom:1px solid var(--line);background:var(--canvas)}
  .stepbar .sp{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700;color:var(--faint)}
  .stepbar .sp .n{width:22px;height:22px;border:1.5px solid var(--line);display:flex;
    align-items:center;justify-content:center;font-size:11px;background:#fff;transition:.25s}
  .stepbar .sp.active{color:var(--navy)}
  .stepbar .sp.active .n{border-color:var(--navy);background:var(--navy);color:#fff}
  .stepbar .sp.done .n{border-color:var(--green);background:var(--green);color:#fff}
  .stepbar .ln{flex:1;height:1px;background:var(--line)}

  .modal-body{padding:26px 30px;overflow:auto}
  .search-box{position:relative;margin-bottom:16px}
  .search-box input{width:100%;padding:14px 14px 14px 44px;border:1.5px solid var(--line);
    font-size:15px;background:#fff;transition:.2s}
  .search-box input:focus{outline:none;border-color:var(--blue)}
  .search-box .ic{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:var(--faint);display:flex}
  .search-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--faint);
    letter-spacing:.5px;text-transform:uppercase;font-weight:700;margin-bottom:12px}
  .results{max-height:320px;overflow:auto;border:1px solid var(--line)}
  .ritem{padding:15px 18px;border-bottom:1px solid var(--line-soft);cursor:pointer;
    display:flex;align-items:center;gap:14px;transition:background .15s;position:relative}
  .ritem:last-child{border-bottom:none}
  .ritem:hover{background:var(--canvas)}
  .ritem.sel{background:#f0f7fe;box-shadow:inset 3px 0 0 var(--blue)}
  .ritem .ri-body{flex:1;min-width:0}
  .ritem .ri-main{font-weight:700;color:var(--navy);font-size:14.5px}
  .ritem .ri-sub{font-size:12px;color:var(--muted);margin-top:3px}
  .ritem .ri-spec{font-size:10.5px;font-weight:700;color:var(--royal);background:var(--line-soft);
    padding:5px 11px;white-space:nowrap}
  .ritem.sel .ri-spec{background:var(--blue);color:#fff}
  .ritem .tick{color:var(--blue);opacity:0;transition:opacity .2s}
  .ritem.sel .tick{opacity:1}
  .ritem.sel .ri-spec{display:none}
  .no-res{padding:30px;text-align:center;color:var(--faint);font-size:13px}

  .step2 .field2{margin-bottom:18px}
  .step2 label{display:block;font-size:11px;font-weight:700;color:var(--navy);letter-spacing:.8px;
    text-transform:uppercase;margin-bottom:8px}
  .step2 input,.step2 textarea{width:100%;padding:12px 14px;border:1.5px solid var(--line);
    font-size:14px;background:#fff;transition:.2s}
  .step2 input:focus,.step2 textarea:focus{outline:none;border-color:var(--blue)}
  .step2 textarea{resize:vertical;min-height:96px;line-height:1.55}
  .step2 .grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .chosen{display:flex;align-items:center;gap:16px;padding:16px 18px;margin-bottom:22px;
    border:1px solid var(--line);background:var(--canvas)}
  .chosen .ch-ic{width:42px;height:42px;background:var(--navy);color:#fff;display:flex;
    align-items:center;justify-content:center;flex-shrink:0}
  .chosen .ch-txt{flex:1}
  .chosen .ch-txt .t{font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--blue);font-weight:700}
  .chosen .ch-txt .n{font-weight:700;color:var(--navy);font-size:14.5px;margin-top:3px}
  .chosen .chg{font-size:12px;font-weight:700;color:var(--blue);white-space:nowrap}
  .chosen .chg:hover{text-decoration:underline}

  .modal-foot{padding:18px 30px;border-top:1px solid var(--line);display:flex;gap:12px;
    justify-content:flex-end;align-items:center;background:var(--canvas)}
  .btn-ghost{border:1.5px solid var(--line);color:var(--navy);padding:12px 22px;font-weight:700;
    font-size:13.5px;transition:.18s}
  .btn-ghost:hover{border-color:var(--navy)}
  .btn-go{background:var(--navy);color:#fff;padding:13px 26px;font-weight:700;font-size:13.5px;
    display:flex;align-items:center;gap:10px;transition:background .25s,transform .2s}
  .btn-go:hover{background:var(--navy-2);transform:translateY(-1px)}
  .btn-go:disabled{opacity:.35;cursor:not-allowed;transform:none;background:var(--navy)}
  .btn-go .arr{display:inline-flex;transition:transform .25s var(--ease)}
  .btn-go:not(:disabled):hover .arr{transform:translateX(3px)}
  .spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;
    border-radius:50%;animation:spin .7s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}

  /* toast */
  .toast{position:fixed;bottom:28px;right:28px;background:var(--navy);color:#fff;padding:16px 22px;
    display:flex;align-items:center;gap:13px;font-weight:700;font-size:14px;box-shadow:var(--shadow-soft);
    z-index:60;border-left:3px solid var(--green);transform:translateY(16px);opacity:0;
    transition:transform .3s var(--ease),opacity .3s}
  .toast.show{transform:none;opacity:1}
  .toast .tk{width:22px;height:22px;background:var(--green);display:flex;align-items:center;justify-content:center}

  @media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
  @media(max-width:1080px){
    .hero{grid-template-columns:1fr}.hero-left{border-right:none;border-bottom:1px solid var(--line)}
    .lower{grid-template-columns:1fr}
  }
  @media(max-width:820px){
    #loginView{grid-template-columns:1fr}.login-brandside{display:none}
    .stat-strip{grid-template-columns:repeat(2,1fr)}
    .stat:nth-child(2){border-right:none}.stat:nth-child(1),.stat:nth-child(2){border-bottom:1px solid var(--line)}
    .sidebar{width:68px}.sidebar .brand img{height:26px}.nav-item span,.nav-label,.userchip .uc-txt,.logout-btn span{display:none}
    .wrap{padding:0 18px}.hero-bignum .num{font-size:64px}.step2 .grid2{grid-template-columns:1fr}
  }