
  /* ---- Fuentes autoalojadas (mismas que el sitio) ---- */
  @font-face{font-family:'Cinzel';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/cinzel-v26-latin-regular.woff2') format('woff2');}
  @font-face{font-family:'Cinzel';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/cinzel-v26-latin-600.woff2') format('woff2');}
  @font-face{font-family:'Cinzel';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/cinzel-v26-latin-700.woff2') format('woff2');}
  @font-face{font-family:'Newsreader';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/newsreader-v26-latin-regular.woff2') format('woff2');}
  @font-face{font-family:'Newsreader';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/newsreader-v26-latin-500.woff2') format('woff2');}
  @font-face{font-family:'Newsreader';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/newsreader-v26-latin-600.woff2') format('woff2');}
  @font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/ibm-plex-mono-v20-latin-regular.woff2') format('woff2');}
  @font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/ibm-plex-mono-v20-latin-500.woff2') format('woff2');}

  :root{
    --bg:#F1EEE6; --marble:#F7F4EC; --surface:#FBFAF5; --surface-raised:#FFFFFF;
    --ink:#20303E; --navy:#152A3F; --navy-soft:#2A4359; --ink-soft:#586572; --ink-faint:#8C8677;
    --gold:#A9813F; --gold-bright:#C6A05A; --gold-deep:#87682F;
    --line-gold:rgba(169,129,63,0.55); --line-gold-soft:rgba(169,129,63,0.30);
    --line-soft:rgba(21,42,63,0.14);
    --shadow:0 20px 45px -26px rgba(21,42,63,0.40); --logo:url('thesia-mark-512.png');
  }
  *{box-sizing:border-box;}
  @media (prefers-reduced-motion:reduce){ *{animation-duration:0.01ms !important; transition-duration:0.01ms !important;} }
  html,body{margin:0; min-height:100%;}
  body{
    background:linear-gradient(rgba(247,244,236,0.55),rgba(247,244,236,0.55)), url('textures/marble-white-clean.jpg') center/760px, var(--bg);
    color:var(--ink);
    font-family:'Newsreader',Georgia,'Times New Roman',serif; font-size:16.5px; line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{margin:0; color:var(--navy); font-weight:600;}
  a{color:inherit; text-decoration:none;}
  button, input, select, textarea{font-family:inherit; font-size:inherit; color:inherit;}
  .cinzel{font-family:'Cinzel',serif;}
  .mono{font-family:'IBM Plex Mono',ui-monospace,monospace;}
  .eyebrow{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold); font-weight:500;}

  /* ---------- Marco neoclásico reutilizable ---------- */
  .frame{position:relative; border:1px solid var(--line-gold);}
  .frame::before{content:""; position:absolute; inset:5px; border:1px solid var(--line-gold-soft); pointer-events:none;}
  .frame > .star{position:absolute; width:15px; height:15px; color:var(--gold); z-index:2;}
  .star.tl{top:-8px; left:-8px;} .star.tr{top:-8px; right:-8px;}
  .star.bl{bottom:-8px; left:-8px;} .star.br{bottom:-8px; right:-8px;}

  .btn{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.14em; text-transform:uppercase;
    padding:11px 20px; border:1px solid var(--gold); border-radius:1px; cursor:pointer;
    background:none; color:var(--gold-deep); transition:background 0.2s ease, transform 0.15s ease, color .2s;
  }
  .btn:hover{transform:translateY(-1px); background:rgba(169,129,63,0.09);}
  .btn-solid{background:var(--navy); color:#F3EEDF; border-color:var(--navy);}
  .btn-solid:hover{background:#0E2033; color:#fff;}
  .btn-danger{border-color:#B5533C; color:#B5533C;}
  .btn-danger:hover{background:rgba(181,83,60,0.10);}
  .btn-sm{padding:8px 14px; font-size:10.5px;}
  .btn:disabled{opacity:0.5; cursor:not-allowed;}

  /* ---------- Contenedor general ---------- */
  .portal{max-width:1420px; margin:0 auto; padding:26px clamp(16px,3vw,38px) 40px;}

  /* ---------- Barra superior ---------- */
  .topbar{display:flex; align-items:center; justify-content:space-between; padding:16px 26px; margin-bottom:26px; background:rgba(251,250,245,0.55);}
  .wordmark{font-family:'Cinzel',serif; font-size:23px; font-weight:700; letter-spacing:0.34em; color:var(--navy); padding-left:6px;}
  .wordmark span{color:var(--gold);}
  .topbar .who{display:flex; align-items:center; gap:18px;}
  .topbar .who .name{font-family:'Newsreader',serif; font-size:17px; color:var(--navy); font-style:italic;}
  .topbar .who .sep{width:1px; height:26px; background:var(--line-gold);}

  /* ---------- Saludo ---------- */
  .greet{display:flex; align-items:center; gap:22px; padding:6px 8px 4px;}
  .greet .laurel{width:96px; height:90px; color:var(--gold); flex:none;}
  .greet h1{font-family:'Newsreader',serif; font-weight:500; font-size:clamp(34px,5vw,56px); line-height:1; letter-spacing:0.01em; margin:6px 0;}
  .greet .prog{font-family:'IBM Plex Mono',monospace; font-size:12.5px; letter-spacing:0.28em; text-transform:uppercase; color:var(--gold-deep);}

  /* ---------- Ruta T·H·E·S·I·A ---------- */
  .path{display:flex; align-items:center; justify-content:space-between; gap:0; margin:26px 6px 30px; padding:8px 0;}
  .node{display:flex; flex-direction:column; align-items:center; gap:0; flex:none; z-index:2;}
  .node .disc{
    width:54px; height:54px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    font-family:'Cinzel',serif; font-size:22px; font-weight:600;
    border:2px solid var(--gold); color:var(--gold-deep); background:var(--surface);
    box-shadow:0 0 0 4px rgba(255,255,255,0.5);
  }
  .node.done .disc{background:var(--gold); color:#fff; border-color:var(--gold);}
  .node.current .disc{width:60px; height:60px; background:var(--navy); color:#F3EEDF; border-color:var(--navy); box-shadow:0 0 0 4px rgba(169,129,63,0.35), 0 8px 20px -8px rgba(21,42,63,.5); font-size:25px;}
  .seg{flex:1; height:2px; position:relative; background:var(--line-gold); margin:0 4px; align-self:center;}
  .seg::after{content:"✦"; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); font-size:9px; color:var(--gold); background:var(--marble); padding:0 4px; line-height:1;}
  .seg.dim{background:var(--line-gold-soft);} .seg.dim::after{color:var(--line-gold);}

  /* ---------- Banda del título de tesis ---------- */
  .thesis{margin:0 6px 26px; text-align:center; padding:4px 20px;}
  .thesis .eyebrow{display:block; margin-bottom:10px;}
  .thesis .eyebrow{font-size:12px;}
  .thesis .t{font-family:'Newsreader',serif; font-style:italic; font-weight:500; font-size:clamp(21px,2.7vw,31px); color:var(--navy); line-height:1.42; max-width:960px; margin:0 auto;}
  .thesis .flr{display:flex; align-items:center; justify-content:center; gap:12px; margin-top:14px;}
  .thesis .fl{width:52px; height:1px; background:var(--line-gold);}
  .thesis .dot{color:var(--gold); font-size:10px;}

  /* ---------- Sección Metodología y herramientas ---------- */
  .project{padding:26px clamp(16px,2.4vw,30px); margin:0 6px 26px;}
  .vars{display:flex; align-items:stretch; gap:14px; flex-wrap:wrap; margin:6px 0 26px;}
  .vchip{flex:1; min-width:220px; background:var(--surface-raised); border:1px solid var(--line-gold-soft); border-top:2px solid var(--gold); padding:16px 18px;}
  .vchip .vk{display:block; font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--gold-deep); margin-bottom:7px;}
  .vchip .vv{font-family:'Cinzel',serif; font-size:23px; color:var(--navy);}
  .vchip .vd{display:block; font-family:'Newsreader',serif; font-style:italic; font-size:13.5px; color:var(--ink-soft); margin-top:5px;}
  .vsep{display:flex; align-items:center; font-family:'Cinzel',serif; color:var(--gold); font-size:26px;}
  @media(max-width:560px){ .vsep{display:none;} }
  .toolh{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--gold-deep); margin:20px 0 12px;}
  .toolgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:11px;}
  .tool{display:flex; align-items:center; gap:11px; padding:10px 12px; background:var(--surface-raised); border:1px solid var(--line-gold-soft); text-decoration:none; transition:transform .15s ease, box-shadow .15s ease;}
  .tool:hover{transform:translateY(-2px); box-shadow:var(--shadow);}
  .tool .logo{width:33px; height:33px; border-radius:7px; display:flex; align-items:center; justify-content:center; color:#fff; font-family:'IBM Plex Mono',monospace; font-weight:600; font-size:12px; flex:none;}
  .tool .logo svg{width:20px; height:20px;}
  .tool .tt{min-width:0;}
  .tool .tn{font-family:'Newsreader',serif; font-size:14.5px; color:var(--navy); line-height:1.15;}
  .tool .tk{display:block; font-family:'IBM Plex Mono',monospace; font-size:8.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); margin-top:2px;}

  /* ---------- Grilla principal ---------- */
  .main{position:relative; padding:30px clamp(16px,2.4vw,32px);}
  .grid{display:grid; grid-template-columns:minmax(0,1fr) 316px; gap:30px;}
  .col-left{display:flex; flex-direction:column; gap:34px; min-width:0;}
  .sec-title{display:flex; align-items:center; gap:12px; margin-bottom:18px;}
  .sec-title h2{font-family:'Cinzel',serif; font-size:21px; letter-spacing:0.12em; color:var(--navy);}
  .sec-title .flourish{flex:1; height:1px; background:linear-gradient(90deg,var(--line-gold),transparent);}
  .sec-title .dot{color:var(--gold); font-size:11px;}

  /* Asesorías */
  .aseso{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
  .vid{background:var(--surface-raised); border:1px solid var(--line-gold-soft); display:flex; flex-direction:column; transition:transform .18s ease, box-shadow .18s ease;}
  .vid:hover{transform:translateY(-3px); box-shadow:var(--shadow);}
  .vid .thumb{position:relative; aspect-ratio:16/10; background-size:cover; background-position:center; display:flex; align-items:center; justify-content:center; border-bottom:1px solid var(--line-gold-soft);}
  .vid .thumb::before{content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(21,42,63,0.06),rgba(21,42,63,0.28));}
  .play{position:relative; width:54px; height:54px; border-radius:50%; background:var(--gold); display:flex; align-items:center; justify-content:center; box-shadow:0 8px 20px -8px rgba(21,42,63,.6); border:2px solid rgba(255,255,255,.55);}
  .play svg{width:22px; height:22px; margin-left:3px; fill:#fff;}
  .vid:hover .play{background:var(--gold-bright);}
  .vid .meta{padding:14px 16px 16px; display:flex; flex-direction:column; gap:4px; position:relative;}
  .vid .date{font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--gold-deep);}
  .vid .ttl{font-family:'Newsreader',serif; font-size:17px; color:var(--navy); line-height:1.25; padding-right:22px;}
  .vid .drive{position:absolute; right:14px; bottom:16px; width:20px; height:20px; color:var(--gold);}

  /* Material */
  .mat{display:grid; grid-template-columns:repeat(7,1fr); gap:12px;}
  .mcard{
    background:var(--surface-raised); border:1px solid var(--line-gold-soft);
    padding:16px 8px 14px; display:flex; flex-direction:column; align-items:center; gap:10px; text-align:center;
    transition:transform .16s ease, box-shadow .16s ease, border-color .16s;
  }
  .mcard:hover{transform:translateY(-3px); box-shadow:var(--shadow); border-color:var(--line-gold);}
  .mcard .ic{position:relative; width:52px; height:52px; display:flex; align-items:center; justify-content:center; color:var(--navy); background:linear-gradient(160deg, rgba(169,129,63,.13), rgba(169,129,63,.04)); border:1px solid var(--line-gold-soft); border-radius:50%; transition:background .18s ease, border-color .18s ease;}
  .mcard .ic svg{width:27px; height:27px;}
  .mcard:hover .ic{background:linear-gradient(160deg, rgba(169,129,63,.26), rgba(169,129,63,.08)); border-color:var(--line-gold);}
  .mcard .lbl{font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft); line-height:1.4;}
  .mcard.pending{opacity:.5; cursor:default;}
  .mcard.pending:hover{transform:none; box-shadow:none; border-color:var(--line-gold-soft);}
  .mcard.pending .ic{background:rgba(21,42,63,.05); border-color:var(--line-soft); color:var(--ink-faint);}
  .mcard .mtag{font-family:'IBM Plex Mono',monospace; font-size:8px; letter-spacing:.09em; text-transform:uppercase; color:var(--gold-deep); border-top:1px dotted var(--line-gold-soft); padding-top:5px; margin-top:2px;}

  /* ------- Visor de Drive (PDF · video · carpetas) ------- */
  .dv-back{position:fixed; inset:0; z-index:200; background:rgba(12,26,38,.72); backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; padding:clamp(10px,2.5vw,32px); opacity:0; transition:opacity .22s ease;}
  .dv-back.on{opacity:1;}
  .dv{position:relative; width:min(1180px,100%); height:min(88vh,100%); background:var(--surface-raised); border:1px solid var(--line-gold); box-shadow:0 30px 70px -30px rgba(0,0,0,.7); display:flex; flex-direction:column; transform:translateY(14px); transition:transform .22s ease;}
  .dv-back.on .dv{transform:translateY(0);}
  .dv-head{display:flex; align-items:center; gap:14px; padding:13px 16px 13px 20px; border-bottom:1px solid var(--line-gold-soft); background:linear-gradient(180deg, rgba(169,129,63,.07), transparent);}
  .dv-head .dv-ic{width:22px; height:22px; flex:none; color:var(--gold);}
  .dv-head .dv-ic svg{width:100%; height:100%;}
  .dv-ttl{flex:1; min-width:0; font-family:'Cinzel',serif; font-size:15px; font-weight:700; color:var(--navy); letter-spacing:.04em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .dv-act{display:inline-flex; align-items:center; gap:7px; flex:none; font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--gold-deep); border:1px solid var(--line-gold); padding:8px 13px; background:none; transition:background .18s;}
  .dv-act:hover{background:rgba(169,129,63,.10);}
  .dv-act svg{width:14px; height:14px;}
  .dv-x{flex:none; width:36px; height:36px; display:flex; align-items:center; justify-content:center; border:1px solid var(--line-soft); background:none; color:var(--ink-soft); font-size:19px; line-height:1; transition:background .18s, color .18s;}
  .dv-x:hover{background:rgba(21,42,63,.07); color:var(--navy);}
  .dv-body{flex:1; min-height:0; position:relative; background:#20272E;}
  .dv-body.folder{background:#FFFFFF;}
  .dv-body.folder .dv-load{color:var(--gold-deep);}
  .dv-body.folder .dv-load .sp{border-color:rgba(169,129,63,.25); border-top-color:var(--gold);}
  .dv-body iframe{position:absolute; inset:0; width:100%; height:100%; border:0; display:block;}
  .dv-load{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; color:#C6A05A; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; pointer-events:none; transition:opacity .3s ease;}
  .dv-load .sp{width:34px; height:34px; border:2px solid rgba(198,160,90,.28); border-top-color:#C6A05A; border-radius:50%; animation:dvspin .85s linear infinite;}
  @keyframes dvspin{to{transform:rotate(360deg);}}
  .dv-foot{padding:9px 20px; border-top:1px solid var(--line-gold-soft); font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-faint); text-align:center;}
  @media (max-width:640px){ .dv-ttl{font-size:13px;} .dv-act span{display:none;} .dv-act{padding:8px 10px;} }

  /* Próxima sesión */
  .next{align-self:start; background:rgba(251,250,245,0.75); padding:30px 26px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:2px;}
  .next .laurel{width:64px; height:60px; color:var(--gold); margin-bottom:6px;}
  .next h2{font-family:'Cinzel',serif; font-size:19px; letter-spacing:0.1em; color:var(--navy);}
  .next .rule{width:46px; height:1px; background:var(--line-gold); margin:12px 0 18px;}
  .next .cal{width:46px; height:46px; color:var(--navy); margin-bottom:14px;}
  .next .day{font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold-deep); margin-bottom:6px;}
  .next .date{font-family:'Newsreader',serif; font-size:22px; color:var(--navy); line-height:1.2;}
  .next .date b{font-size:30px; font-weight:600;}
  .next .time{font-family:'Newsreader',serif; font-style:italic; font-size:18px; color:var(--ink-soft); margin-top:10px;}
  .next .btn{margin-top:20px;}

  /* ---------- Pie ---------- */
  footer.foot{text-align:center; margin-top:26px; padding:16px; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.28em; text-transform:uppercase; color:var(--navy);}
  footer.foot .in{display:inline-flex; align-items:center; gap:14px;}
  footer.foot .ln{width:60px; height:1px; background:var(--line-gold);}

  /* ---------- Login ---------- */
  .center-wrap{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:48px 20px;}
  .auth-card{width:100%; max-width:430px; background:var(--surface-raised); box-shadow:var(--shadow); padding:44px 40px;}
  .auth-card .laurel{width:64px; height:60px; color:var(--gold); display:block; margin:0 auto 14px;}
  .auth-card h2{font-family:'Newsreader',serif; font-weight:500; font-size:26px; text-align:center; margin-top:4px;}
  .auth-card .sub{color:var(--ink-soft); font-size:14.5px; margin-top:8px; text-align:center;}
  .auth-card .eyebrow{display:block; text-align:center;}
  .field{margin-top:18px;}
  .field label{display:block; font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:7px;}
  .field input, .field select, .field textarea{width:100%; padding:12px 13px; border:1px solid var(--line-soft); background:var(--surface); color:var(--ink); border-radius:1px;}
  .field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--gold); outline-offset:1px;}
  .field textarea{resize:vertical; min-height:70px; font-family:'Newsreader',serif;}
  .submit{width:100%; margin-top:24px;}
  .error-msg{margin-top:16px; padding:11px 13px; background:rgba(181,83,60,0.10); border-left:2px solid #B5533C; color:#9a3f2c; font-size:13.5px;}
  .ok-msg{margin-top:16px; padding:11px 13px; background:rgba(63,125,92,0.12); border-left:2px solid #3F7D5C; color:#2f6247; font-size:13.5px;}
  .hint{margin-top:18px; font-size:12px; color:var(--ink-faint); text-align:center; line-height:1.6;}
  .backlink{display:block; text-align:center; margin-top:22px; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-faint);}
  .backlink:hover{color:var(--gold);}

  /* ---------- Admin ---------- */
  .admin-wrap{max-width:920px; margin:0 auto; padding:12px 4px 40px;}
  .admin-head h1{font-family:'Cinzel',serif; font-size:26px; color:var(--navy);}
  .callout{background:rgba(169,129,63,0.10); border-left:2px solid var(--gold); padding:13px 16px; font-size:13px; color:var(--ink-soft); margin-top:18px;}
  .roster{margin-top:24px; display:flex; flex-direction:column; gap:16px;}
  .stu-card{background:var(--surface-raised); border:1px solid var(--line-gold-soft); padding:20px 22px;}
  .stu-top{display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap;}
  .stu-top h3{font-family:'Newsreader',serif; font-size:18px; color:var(--navy);}
  .stu-top .clave{font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--gold-deep);}
  .stu-grid{display:grid; grid-template-columns:150px 150px 130px; gap:14px; margin-top:14px;}
  @media (max-width:640px){ .stu-grid{grid-template-columns:1fr;} }
  .stu-grid .field, .full .field{margin-top:0;}
  .full{margin-top:14px;}
  .stu-actions{display:flex; gap:10px; margin-top:14px; flex-wrap:wrap;}
  .add-card{background:var(--surface-raised); border:1px dashed var(--line-gold); padding:22px; margin-top:24px;}
  .add-card h3{font-family:'Newsreader',serif; font-size:17px; color:var(--navy); margin-bottom:14px;}
  .add-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
  @media (max-width:560px){ .add-grid{grid-template-columns:1fr;} }
  .section-title{font-family:'Cinzel',serif; font-size:18px; color:var(--navy); margin-top:40px; padding-bottom:10px; border-bottom:1px solid var(--line-gold-soft);}

  /* ---------- Responsive ---------- */
  @media (max-width:900px){
    .grid{grid-template-columns:1fr;}
    .next{order:-1;}
    .mat{grid-template-columns:repeat(4,1fr);}
    .aseso{grid-template-columns:1fr;}
  }
  @media (max-width:520px){
    .mat{grid-template-columns:repeat(2,1fr);}
    .greet{gap:14px;} .greet .laurel{width:66px;height:62px;}
    .node .disc{width:44px;height:44px;font-size:18px;}
    .node.current .disc{width:48px;height:48px;font-size:20px;}
    .topbar{padding:12px 16px;}
  }

  /* ---------- Marca / logo ---------- */
  .brand{display:flex; align-items:center; gap:12px;}
  .wm-mark{width:36px; height:36px; display:block; background:var(--logo) center/contain no-repeat;}
  .laurel.logo-slot{background:var(--logo) center/contain no-repeat;}
  .auth-card .laurel.logo-slot{width:78px; height:78px;}
  .greet .laurel.logo-slot{width:106px; height:106px;}

  /* ---------- Marca de agua (constelación de Libra) ---------- */
  .portal{position:relative;}
  .portal > *{position:relative; z-index:1;}
  .portal > .watermark{position:absolute; top:88px; left:50%; transform:translateX(-50%); width:min(720px,86%); color:var(--gold); opacity:.07; z-index:0; pointer-events:none;}
  .portal > .path{z-index:6;}

  /* ---------- Tooltips de la ruta T·H·E·S·I·A ---------- */
  .path .node{overflow:visible;}
  .pop{position:absolute; top:74px; left:50%; transform:translateX(-50%) translateY(6px); width:198px; background:var(--surface-raised); border:1px solid var(--line-gold); box-shadow:var(--shadow); padding:13px 15px; opacity:0; visibility:hidden; transition:opacity .18s ease, transform .18s ease; z-index:30; text-align:left; pointer-events:none;}
  .pop::before{content:""; position:absolute; top:-6px; left:50%; transform:translateX(-50%) rotate(45deg); width:11px; height:11px; background:var(--surface-raised); border-left:1px solid var(--line-gold); border-top:1px solid var(--line-gold);}
  .node:hover{cursor:help;}
  .node:hover .pop{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);}
  .pop .pk{display:block; font-family:'IBM Plex Mono',monospace; font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--gold-deep); margin-bottom:5px;}
  .pop .pn{display:block; font-family:'Cinzel',serif; font-size:15px; color:var(--navy); margin-bottom:4px;}
  .pop .pt{display:block; font-family:'Newsreader',serif; font-size:12.5px; color:var(--ink-soft); line-height:1.42;}

  /* ---------- Logo real de cada programa (con respaldo) ---------- */
  .tool .logo, .ptool .logo{position:relative; overflow:hidden;}
  .tool .logo img, .ptool .logo img{position:absolute; inset:0; width:100%; height:100%; object-fit:contain; padding:4px; background:#fff; border-radius:inherit;}
  .tool .logo.has-img, .ptool .logo.has-img{background:#fff !important;}

  /* ---------- Propuestas de título ---------- */
  .proj-intro{font-size:14.5px; color:var(--ink-soft); line-height:1.62; margin:2px 0 20px; max-width:840px;}
  .proj-intro b{color:var(--navy);}
  .props{display:flex; flex-direction:column; gap:16px; margin-bottom:6px;}
  .prop{display:flex; gap:24px; padding:20px 22px; background:var(--surface-raised); border:1px solid var(--line-gold-soft); border-left:3px solid var(--gold);}
  @media(max-width:760px){ .prop{flex-direction:column; gap:16px;} }
  .prop-main{flex:1.35; min-width:0;}
  .prop-h{display:flex; align-items:baseline; gap:12px; margin-bottom:12px; flex-wrap:wrap;}
  .prop-n{font-family:'Cinzel',serif; font-size:15px; color:var(--gold-deep); letter-spacing:.06em;}
  .prop-en{font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint);}
  .prop-vars{display:flex; align-items:center; gap:10px; margin-bottom:13px; flex-wrap:wrap;}
  .pv{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.03em; padding:5px 11px; border:1px solid var(--line-gold); color:var(--navy); background:rgba(169,129,63,.07);}
  .pv.i{border-color:var(--navy);}
  .pv-ar{color:var(--gold); font-family:'Cinzel',serif; font-size:18px;}
  .prop-t{font-family:'Newsreader',serif; font-style:italic; font-size:17px; color:var(--navy); line-height:1.42; margin:0;}
  .prop-tools{flex:1; min-width:0;}
  .pt-h{display:block; font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--gold-deep); margin-bottom:11px;}
  .pt-grid{display:flex; flex-wrap:wrap; gap:8px;}
  .ptool{display:flex; align-items:center; gap:8px; padding:5px 10px 5px 5px; background:var(--surface); border:1px solid var(--line-gold-soft);}
  .ptool .logo{width:25px; height:25px; border-radius:5px; display:flex; align-items:center; justify-content:center; color:#fff; font-family:'IBM Plex Mono',monospace; font-weight:600; font-size:8.5px; flex:none;}
  .ptool .pn{font-family:'Newsreader',serif; font-size:12.5px; color:var(--navy);}

  /* ---------- Asesorías vacías ---------- */
  .aseso-empty{grid-column:1/-1; display:flex; flex-direction:column; align-items:center; text-align:center; gap:8px; padding:36px 20px; border:1px dashed var(--line-gold); background:rgba(251,250,245,0.5);}
  .aseso-empty .le{width:52px; height:48px; color:var(--gold); opacity:.85;}
  .aseso-empty p{font-family:'Newsreader',serif; color:var(--ink-soft); font-size:14.5px; line-height:1.55; margin:0;}
  .aseso-empty b{color:var(--navy);}

  /* ---------- Contrato ---------- */
  .contract{margin:26px 6px 0; background:rgba(251,250,245,0.75);}
  .contract > summary{list-style:none; cursor:pointer; display:flex; align-items:center; gap:14px; padding:18px 22px;}
  .contract > summary::-webkit-details-marker{display:none;}
  .contract .cs-l{width:42px; height:42px; flex:none; background:var(--logo) center/contain no-repeat;}
  .contract .cs-tt{flex:1; min-width:0;}
  .contract .cs-eb{display:block; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--gold-deep);}
  .contract .cs-t{font-family:'Cinzel',serif; font-size:17px; color:var(--navy);}
  .contract .cs-x{font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-deep); border:1px solid var(--line-gold); padding:7px 13px; white-space:nowrap;}
  .cbody{position:relative; padding:6px 30px 34px; overflow:hidden;}
  .cwm{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:min(320px,58%); aspect-ratio:1; background:var(--logo) center/contain no-repeat; opacity:.05; pointer-events:none;}
  .chead{position:relative; text-align:center; padding:8px 0 18px; border-bottom:1px solid var(--line-gold-soft); margin-bottom:20px;}
  .chead .che{display:block; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-deep); margin-bottom:8px;}
  .chead h3{font-family:'Cinzel',serif; font-size:20px; color:var(--navy);}
  .cintro{position:relative; font-size:15px; color:var(--ink); line-height:1.7; margin:0 0 16px;}
  .cl{position:relative; margin:0; padding-left:20px; display:flex; flex-direction:column; gap:11px;}
  .cl li{font-size:14.5px; color:var(--ink-soft); line-height:1.65;}
  .cl li b{color:var(--navy); font-weight:600;}
  .cfill{border-bottom:1px solid var(--ink-faint);}
  .csign{position:relative; display:flex; gap:40px; margin-top:36px; flex-wrap:wrap;}
  .csign > div{flex:1; min-width:200px; text-align:center; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft);}
  .csign .cln{display:block; height:1px; background:var(--navy); margin-bottom:8px; opacity:.4;}

  @keyframes spin{to{transform:rotate(360deg);}}
  .spinner{width:15px; height:15px; border:2px solid currentColor; border-top-color:transparent; border-radius:50%; display:inline-block; animation:spin 0.7s linear infinite;}

/* La presentación original se conserva sobre el acceso y los datos conectados. */
body.classic-portal{background:linear-gradient(rgba(247,244,236,.57),rgba(247,244,236,.57)),url('textures/marble-white-clean.jpg') center/760px,var(--bg)}
.classic-portal .btn{border-radius:0;text-decoration:none;letter-spacing:.08em}.classic-portal .field input,.classic-portal .field select,.classic-portal .field textarea{border-radius:0;background:#fdfbf5}.classic-portal .field label{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.09em;text-transform:uppercase}.classic-portal .field input:focus,.classic-portal .field textarea:focus{outline:2px solid #a9813f55;outline-offset:2px}.classic-portal .password-wrap input{padding-right:78px}.classic-portal .password-wrap button{font:10px 'IBM Plex Mono',monospace}
.classic-portal .auth-card{width:460px;max-width:100%;padding:38px 40px;background:#ffffffed;border:1px solid #a9813f30;box-shadow:0 24px 50px -28px #152a3f77}.classic-portal .auth-card .logo-slot{display:block;margin:0 auto 15px}.classic-portal .auth-card .logo-slot img{width:78px;height:78px;object-fit:contain}.classic-portal .auth-card h2{font-size:29px}.classic-portal .auth-card .sub{font-size:16px;margin-bottom:23px}.classic-portal .auth-card .submit{width:100%;min-height:45px;margin-top:6px}.classic-portal .auth-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:17px 0}.classic-portal .auth-links button{font:10px 'IBM Plex Mono',monospace;color:var(--ink-soft)}.classic-portal .auth-help{font:12px/1.6 'Newsreader',serif;color:var(--ink-soft);margin-top:18px}.classic-portal .auth-switch{padding-top:18px;border-top:1px solid var(--line-soft);margin-top:22px}.classic-portal .auth-switch a{font:10px 'IBM Plex Mono',monospace;color:var(--gold-deep);letter-spacing:.07em}
.classic-portal .topbar .brand{gap:12px}.classic-portal .topbar .wm-mark{flex-shrink:0}.classic-portal .topbar .name{font-family:'IBM Plex Mono',monospace;font-size:11px}.classic-portal .star{font-style:normal;font-size:17px;line-height:15px;text-align:center}.classic-portal .classic-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:15px 0 23px}.classic-portal .classic-nav a,.classic-portal .classic-nav button{font:10px 'IBM Plex Mono',monospace;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;padding:10px 13px;background:#fbfaf5bb;border:1px solid #a9813f3b;color:var(--ink-soft);min-height:39px}.classic-portal .classic-nav .active,.classic-portal .classic-nav a:hover,.classic-portal .classic-nav button:hover{background:var(--navy);border-color:var(--navy);color:#fff}.classic-portal .classic-nav .back-site{margin-left:auto}.classic-portal .classic-workspace{min-width:0}.classic-portal .greet .logo-slot img{width:76px;height:76px;object-fit:contain}.classic-portal .greet .prog{line-height:1.5}.classic-portal .path{margin-bottom:8px}.classic-portal .node:focus-within .pop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}.classic-portal .path-label{text-align:center;font:11px 'IBM Plex Mono',monospace;color:var(--gold-deep);letter-spacing:.1em;margin:18px 0 27px}.classic-portal .thesis .t{line-height:1.4}.classic-portal .project{margin-bottom:26px}.classic-portal .project .prop-t{line-height:1.65}
.classic-portal .classic-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.classic-portal .classic-tool{display:flex;align-items:center;gap:13px;padding:14px;border:1px solid var(--line-gold-soft);background:#ffffffbd;text-decoration:none;min-height:78px;transition:border-color .15s,background .15s}.classic-portal a.classic-tool:hover{background:#f6f0e3;border-color:var(--gold)}.classic-portal .classic-tool img{width:44px;height:40px;object-fit:contain;flex-shrink:0}.classic-portal .classic-tool span{font:12px/1.45 'IBM Plex Mono',monospace;overflow-wrap:anywhere}.classic-portal .classic-tool small{display:block;font:12px 'Newsreader',serif;color:var(--ink-soft);margin-top:4px}.classic-portal .prop-tools .classic-tools{grid-template-columns:1fr 1fr}.classic-portal .prop-tools .classic-tool{padding:8px;gap:8px;min-height:53px}.classic-portal .prop-tools .classic-tool img{width:25px;height:25px}.classic-portal .prop-tools .classic-tool span{font-size:10px}.classic-portal .classic-materials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.classic-portal .classic-materials .mcard{min-height:125px}.classic-portal .classic-materials .ic{display:block;width:32px;height:32px;margin:0 auto 12px;color:var(--gold)}.classic-portal .classic-materials .ic svg{width:100%;height:100%}.classic-portal .classic-materials .lbl{font-size:12px}.classic-portal .next .cal{font-size:36px;line-height:1;color:var(--gold);margin:20px auto}.classic-portal .next .next-actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin-top:24px}.classic-portal .next .time{font-family:'Newsreader',serif}.classic-portal .next .small{font-size:13px}.classic-portal .classic-tasks{margin-top:28px}.classic-portal .classic-tasks .task-list{padding:0;list-style:none}.classic-portal .task-list label>span{font-size:16px}.classic-portal .task-list small{font-family:'IBM Plex Mono',monospace;font-size:10px}.classic-portal .note-text{font:16px/1.75 'Newsreader',serif}.classic-portal .classic-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.classic-portal .classic-summary .tag{font:10px 'IBM Plex Mono',monospace}.classic-portal .classic-note{padding:22px;background:#f2eee3;border-left:2px solid var(--gold);font-size:17px;line-height:1.6}.classic-portal .foot small{display:block;font:9px 'IBM Plex Mono',monospace;letter-spacing:.04em;color:var(--ink-faint);margin:15px auto}.classic-portal .aseso-empty{padding:26px;min-height:150px}.classic-portal .aseso-empty .le img{width:46px;height:46px;object-fit:contain;opacity:.65}.classic-portal .vid .thumb{display:grid;place-items:center;background:linear-gradient(#fff8,#fff8),url('textures/marble-white-clean.jpg') center/cover}.classic-portal .vid .play{font-size:30px;color:var(--gold)}
.classic-portal .page-heading h1{font-size:42px}.classic-portal .page-heading>div>p{font-size:17px}.classic-portal .panel,.classic-portal .metric{border-color:var(--line-gold-soft);border-radius:0;background:#fffffff0;box-shadow:var(--shadow)}.classic-portal .metric strong{font-family:'Newsreader',serif;font-weight:400}.classic-portal .metric>span{font-family:'IBM Plex Mono',monospace;font-size:10px}.classic-portal .admin-welcome{position:relative;border:1px solid var(--line-gold);border-radius:0;background:linear-gradient(#fff9,#fff9),url('textures/marble-white-clean.jpg') center/760px;color:var(--navy)}.classic-portal .admin-welcome:before{content:'';position:absolute;inset:6px;border:1px solid var(--line-gold-soft);pointer-events:none}.classic-portal .admin-welcome h2{color:var(--navy)}.classic-portal .admin-welcome .eyebrow{color:var(--gold)}.classic-portal .admin-welcome p{color:var(--ink-soft)}.classic-portal .admin-welcome .link-button{color:var(--ink-soft)}.classic-portal .panel h2{font-family:'Newsreader',serif;font-weight:600;font-size:24px}.classic-portal .editor .savebar{border:1px solid var(--line-gold-soft);background:#fbfaf5}.classic-portal .admin-task b,.classic-portal .agenda-person b{font-family:'Newsreader',serif;font-size:17px}.classic-portal .student-row strong{font-family:'Newsreader',serif;font-size:20px}.classic-portal .student-row small{font-size:12px}.classic-portal .alert{border-radius:0}.classic-portal .btn.secondary{background:#fbfaf5;color:var(--ink);border-color:var(--line-gold)}
@media(max-width:760px){.classic-portal .portal{padding-top:16px}.classic-portal .topbar{padding:15px}.classic-portal .topbar .wm-mark{width:30px;height:30px}.classic-portal .topbar .wordmark{font-size:18px}.classic-portal .topbar .who{gap:10px}.classic-portal .topbar .name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.classic-portal .classic-nav{gap:6px;padding-bottom:18px}.classic-portal .classic-nav a,.classic-portal .classic-nav button{padding:9px;font-size:9px}.classic-portal .classic-nav .back-site{margin-left:0}.classic-portal .greet .logo-slot img{width:57px;height:57px}.classic-portal .classic-tools{grid-template-columns:repeat(2,minmax(0,1fr))}.classic-portal .classic-tool{padding:11px;gap:9px}.classic-portal .classic-tool img{width:33px;height:32px}.classic-portal .classic-tool span{font-size:10px}.classic-portal .classic-materials{grid-template-columns:repeat(2,minmax(0,1fr))}.classic-portal .classic-summary{align-items:flex-start;flex-direction:column}.classic-portal .page-heading h1{font-size:34px}.classic-portal .center-wrap{padding:22px 16px}.classic-portal .auth-card{padding:30px 24px}.classic-portal .auth-card h2{font-size:27px}.classic-portal .classic-note{padding:17px}}

/* Emblema protagonista y doble marco de la identidad original. */
.classic-portal .auth-card.frame{width:520px;padding:34px 46px 30px;border:1px solid #ae8747;background:linear-gradient(#fffffff5,#fffffff0),url('textures/marble-white-clean.jpg') center/620px;box-shadow:0 25px 65px -25px #152a3f55}.classic-portal .auth-card.frame:before{inset:8px;border:1px solid #c8ac794f}.classic-portal .auth-card>.star{font-size:22px;width:20px;height:20px;line-height:20px;background:var(--marble)}.classic-portal .auth-card .star.tl{top:-10px;left:-10px}.classic-portal .auth-card .star.tr{top:-10px;right:-10px}.classic-portal .auth-card .star.bl{bottom:-10px;left:-10px}.classic-portal .auth-card .star.br{bottom:-10px;right:-10px}.classic-portal .auth-card .logo-slot{width:132px;height:132px;margin:0 auto 10px}.classic-portal .auth-card .logo-slot img{width:132px;height:132px;filter:drop-shadow(0 5px 9px #a9813f18)}.classic-portal .auth-wordmark{font:600 27px/1.2 'Cinzel',serif;letter-spacing:.21em;color:var(--navy);padding-left:.21em}.classic-portal .auth-wordmark span{color:var(--gold)}.classic-portal .auth-divider{display:flex;align-items:center;gap:12px;width:172px;margin:12px auto 18px;color:var(--gold)}.classic-portal .auth-divider:before,.classic-portal .auth-divider:after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,#b89a61)}.classic-portal .auth-divider:after{transform:rotate(180deg)}.classic-portal .auth-divider span{font-size:12px;line-height:1}.classic-portal .auth-card>.eyebrow{margin:0 0 10px}.classic-portal .auth-card h2{font-size:31px;line-height:1.2;margin-bottom:12px}.classic-portal .auth-card .sub{margin-top:0;margin-bottom:22px;line-height:1.5}.classic-portal .auth-card .auth-help{margin:17px 0 0;text-align:center}.classic-portal .auth-switch{margin-top:17px;padding-top:15px;text-align:center}.classic-portal .auth-card .backlink{margin-top:12px}.classic-portal .auth-card .submit{min-height:47px;border:1px solid #a9813f80}.classic-portal .topbar .wm-mark{width:56px;height:56px;background-size:contain}.classic-portal .topbar .wordmark{font-size:29px;letter-spacing:.14em}.classic-portal .greet .logo-slot img{width:94px;height:94px}
@media(max-width:760px){.classic-portal .auth-card.frame{padding:27px 27px 26px}.classic-portal .auth-card .logo-slot,.classic-portal .auth-card .logo-slot img{width:108px;height:108px}.classic-portal .auth-wordmark{font-size:24px}.classic-portal .auth-card h2{font-size:28px}.classic-portal .topbar .wm-mark{width:42px;height:42px}.classic-portal .topbar .wordmark{font-size:21px}.classic-portal .greet .logo-slot img{width:68px;height:68px}.classic-portal .topbar .name{max-width:90px}}

.classic-portal .laurel.logo-slot{background:none}.classic-portal .auth-wordmark{text-align:center}.classic-portal .greet .laurel.logo-slot{width:94px;height:94px;display:flex;align-items:center;justify-content:center}.classic-portal .next .laurel.logo-slot{display:block;width:46px;height:46px;margin:0 auto 20px}
@media(max-width:760px){.classic-portal .greet .laurel.logo-slot{width:68px;height:68px}.classic-portal .topbar .brand{gap:8px}}

.classic-portal .classic-sources .classic-tool{flex-direction:column;align-items:flex-start;justify-content:center;padding:17px;gap:12px;min-height:133px}.classic-portal .classic-sources .classic-tool img{width:120px;max-width:100%;height:39px;object-position:left center}.classic-portal .classic-sources .classic-tool span{font-size:12px}.classic-portal .prop-tools .classic-tool img{width:34px;height:34px}.classic-portal .prop-tools .classic-tool span{font-size:11px}
@media(max-width:760px){.classic-portal .classic-sources .classic-tool{padding:13px;gap:10px;min-height:125px}.classic-portal .classic-sources .classic-tool img{width:106px;height:36px}.classic-portal .classic-sources .classic-tool span{font-size:11px}}

/* Contrato breve y datos del asesor, visibles únicamente en la ficha del alumno. */
.classic-portal .contract-card{margin:0 0 26px;background:linear-gradient(#ffffffde,#ffffffed),url('textures/marble-white-clean.jpg') center/760px;scroll-margin-top:24px}
.classic-portal .contract-card>summary{display:flex;align-items:center;gap:17px;padding:23px 28px;cursor:pointer;list-style:none;min-height:94px}
.classic-portal .contract-card>summary::-webkit-details-marker{display:none}
.classic-portal .contract-card>summary:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.classic-portal .contract-icon{display:grid;place-items:center;width:46px;height:52px;color:var(--gold-deep);border:1px solid var(--line-gold-soft);background:#f7f2e7;flex-shrink:0}
.classic-portal .contract-icon svg{width:27px;height:31px}
.classic-portal .contract-heading{display:flex;flex-direction:column;gap:6px;min-width:0}
.classic-portal .contract-heading strong{font:500 27px/1.15 'Newsreader',serif;color:var(--ink)}
.classic-portal .contract-heading small{font:14px/1.4 'Newsreader',serif;color:var(--ink-soft)}
.classic-portal .contract-toggle{display:flex;align-items:center;gap:12px;margin-left:auto;flex-shrink:0;font:10px 'IBM Plex Mono',monospace;color:var(--gold-deep)}
.classic-portal .contract-toggle svg{width:22px;height:22px}
.classic-portal .contract-hide,.classic-portal .contract-card[open] .contract-show{display:none}
.classic-portal .contract-card[open] .contract-hide{display:inline}
.classic-portal .contract-card[open] .contract-toggle svg{transform:rotate(180deg)}
.classic-portal .contract-content{margin:0 28px;padding:25px 0 19px;border-top:1px solid var(--line-gold-soft)}
.classic-portal .contract-person{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:22px}
.classic-portal .contract-person .eyebrow{font-size:10px}
.classic-portal .contract-person h2{font:500 26px/1.35 'Newsreader',serif;margin:8px 0 0;overflow-wrap:anywhere}
.classic-portal .contract-amounts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0}
.classic-portal .contract-amounts>div{padding:18px 21px;background:#fff;border:1px solid var(--line-gold-soft);min-width:0}
.classic-portal .contract-amounts dt{font:10px/1.6 'IBM Plex Mono',monospace;color:var(--ink-soft)}
.classic-portal .contract-amounts dd{font:500 clamp(22px,2.5vw,32px)/1.3 'Newsreader',serif;margin:9px 0 0;color:var(--navy);overflow-wrap:anywhere}
.classic-portal .contract-amounts .contract-balance{background:#f4eedf;border-color:var(--line-gold)}
.classic-portal .contract-note{white-space:pre-line;font:17px/1.6 'Newsreader',serif;margin:21px 0 0;color:var(--ink-soft);overflow-wrap:anywhere}
.classic-portal .contract-footer{margin:20px 0 0;font:9px/1.5 'IBM Plex Mono',monospace;color:var(--ink-faint)}
.classic-portal .academic-advisor{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:18px 22px;margin:20px 0;border:1px solid var(--line-gold-soft);background:#f7f3e9}
.classic-portal .academic-advisor .eyebrow{font-size:9px}.classic-portal .academic-advisor strong{display:block;font:500 21px/1.4 'Newsreader',serif;margin-top:7px;overflow-wrap:anywhere}.classic-portal .academic-advisor a{font:11px/1.5 'IBM Plex Mono',monospace;color:var(--gold-deep)}
@media(max-width:600px){.classic-portal .contract-card>summary{padding:20px 17px;gap:12px}.classic-portal .contract-toggle{gap:4px;font-size:9px}.classic-portal .contract-heading strong{font-size:24px}.classic-portal .contract-heading small{font-size:12px}.classic-portal .contract-icon{width:33px;height:41px}.classic-portal .contract-icon svg{width:23px}.classic-portal .contract-content{margin:0 18px;padding-top:20px}.classic-portal .contract-amounts{grid-template-columns:1fr;gap:8px}.classic-portal .contract-amounts>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px}.classic-portal .contract-amounts dd{margin:0;font-size:25px}.classic-portal .contract-person h2{font-size:24px}}

/* Coordinación de fecha, Meet y confirmación por WhatsApp desde la ficha admin. */
.classic-portal .coordination-panel{background:linear-gradient(#fffdf9f2,#fffffff2),url('textures/marble-white-clean.jpg') center/760px}
.classic-portal .coordination-steps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0 0 21px;padding:0;border:1px solid var(--line-gold-soft);background:#ffffffb8}
.classic-portal .coordination-steps li{display:flex;align-items:flex-start;gap:12px;min-width:0;padding:18px;border-right:1px solid var(--line-gold-soft)}
.classic-portal .coordination-steps li:last-child{border-right:0}
.classic-portal .coordination-steps li>span{flex:none;color:var(--gold);font:400 23px/1 'Newsreader',serif}
.classic-portal .coordination-steps b{font:500 16px/1.35 'Newsreader',serif;color:var(--ink)}
.classic-portal .coordination-steps p{font:12px/1.5 'Newsreader',serif;color:var(--ink-soft);margin:7px 0 0}
.classic-portal .coordination-actions{display:flex;gap:10px;flex-wrap:wrap}
.classic-portal .coordination-actions .is-disabled{opacity:.44;pointer-events:none}
.classic-portal .coordination-hint{font:12px/1.6 'Newsreader',serif;color:var(--ink-soft);margin:14px 0 0}
@media(max-width:800px){.classic-portal .coordination-steps{grid-template-columns:1fr}.classic-portal .coordination-steps li{padding:14px 16px;border-right:0;border-bottom:1px solid var(--line-gold-soft)}.classic-portal .coordination-steps li:last-child{border-bottom:0}}
@media(max-width:600px){.classic-portal .coordination-actions{display:grid;grid-template-columns:1fr}.classic-portal .coordination-actions .btn{width:100%;white-space:normal}}
