/* minogest · estilos de la aplicación */:root{
  --bg:#f3f5f9; --panel:#ffffff; --panel2:#f8fafc; --line:#e3e8ef; --text:#142033; --muted:#64748b;
  --side:#0e1a2b; --side2:#16263d; --sidetext:#c7d2e1; --accent:#2f6fed; --accent2:#1f55c9; --accentsoft:#e8efff;
  --ok:#0f9d6b; --oksoft:#e3f6ee; --bad:#d64545; --badsoft:#fdeaea; --warn:#d98a00; --warnsoft:#fff4dc;
  --gold:#f5b301; --teal:#12a594; --violet:#7c5cff; --shadow:0 1px 2px rgba(16,24,40,.06),0 4px 14px rgba(16,24,40,.06);
  --radius:14px; --paper:#fffdf7; --ink:#1d2433;
}
[data-theme="dark"]{
  --bg:#0b1220; --panel:#121b2c; --panel2:#0f1727; --line:#223049; --text:#e6ecf5; --muted:#8fa1bb;
  --side:#070d18; --side2:#101b2e; --accentsoft:#1a2a4d; --oksoft:#0f2e25; --badsoft:#3a1616; --warnsoft:#3a2a08;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 18px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.45}
button{font:inherit;cursor:pointer}
input,select,textarea{font:inherit;color:var(--text)}
.hidden{display:none!important}
a{color:var(--accent)}

/* ---------- LOGIN ---------- */
#login{position:fixed;inset:0;display:grid;grid-template-columns:1.1fr 1fr;background:var(--side)}
#login .hero{padding:56px;color:#fff;display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(1200px 600px at -10% -10%,#2f6fed55,transparent),radial-gradient(900px 500px at 110% 110%,#12a59444,transparent),var(--side)}
#login .hero h1{font-size:44px;margin:0 0 12px;letter-spacing:-1px}
#login .hero p{color:#b8c6da;font-size:17px;max-width:520px}
.feat{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.feat span{background:#ffffff12;border:1px solid #ffffff22;padding:8px 14px;border-radius:999px;font-size:13px;color:#dbe6f5}
#login .box{background:var(--panel);display:flex;align-items:center;justify-content:center;padding:40px}
#login .card{width:100%;max-width:400px}
#login h2{margin:0 0 6px;font-size:26px}
.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px}
.logo .mk{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#2f6fed,#12a594);display:grid;place-items:center;color:#fff;font-weight:800;font-size:18px;box-shadow:0 4px 14px #2f6fed55}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:12.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.inp{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:10px 12px;outline:none;width:100%;transition:border .15s,box-shadow .15s}
.inp:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2f6fed22}
textarea.inp{min-height:70px;resize:vertical}
.btn{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:9px 16px;border-radius:10px;font-weight:600;display:inline-flex;align-items:center;gap:8px;transition:.15s}
.btn:hover{background:var(--panel2)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.pri:hover{background:var(--accent2)}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.danger{color:var(--bad)}
.btn.big{padding:12px 20px;font-size:15px;width:100%;justify-content:center}
.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:8px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.link{background:none;border:none;color:var(--accent);padding:0;font-weight:600}
.sep{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;margin:18px 0}
.sep:before,.sep:after{content:"";flex:1;height:1px;background:var(--line)}

/* ---------- LAYOUT ---------- */
#app{display:grid;grid-template-columns:248px 1fr;height:100vh}
aside{background:var(--side);color:var(--sidetext);display:flex;flex-direction:column;overflow:auto}
aside .logo{color:#fff;padding:18px 18px 14px}
aside .logo small{display:block;font-size:11px;color:#7f93b0;font-weight:500}
.nav{padding:6px 10px;flex:1}
.nav h6{margin:16px 10px 6px;font-size:10.5px;color:#5d7292;text-transform:uppercase;letter-spacing:1px}
.nav button{width:100%;display:flex;align-items:center;gap:11px;background:none;border:none;color:var(--sidetext);padding:9px 12px;border-radius:9px;text-align:left;font-size:13.5px}
.nav button:hover{background:var(--side2);color:#fff}
.nav button.on{background:linear-gradient(90deg,#2f6fed33,#2f6fed11);color:#fff;box-shadow:inset 3px 0 0 var(--accent)}
.nav .ic{width:18px;text-align:center;opacity:.9}
.nav .cnt{margin-left:auto;background:#2f6fed;color:#fff;border-radius:999px;font-size:11px;padding:1px 8px;font-weight:700}
.side-foot{padding:14px;border-top:1px solid #ffffff10;font-size:12px;color:#6f84a3}
main{display:flex;flex-direction:column;overflow:hidden}
header.top{height:64px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 22px;flex-shrink:0}
.search{flex:1;max-width:420px;display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;color:var(--muted);cursor:pointer}
.search kbd{margin-left:auto;font-size:11px;border:1px solid var(--line);border-radius:5px;padding:1px 6px;background:var(--panel)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:12.5px;font-weight:600;white-space:nowrap}
.xpbox{display:flex;align-items:center;gap:10px;min-width:230px}
.lvl{width:38px;height:38px;border-radius:50%;background:conic-gradient(var(--gold) var(--p,0%),var(--line) 0);display:grid;place-items:center;flex-shrink:0}
.lvl b{width:30px;height:30px;border-radius:50%;background:var(--panel);display:grid;place-items:center;font-size:13px}
.xpbox .t{font-size:12px;line-height:1.25}
.xpbox .t b{display:block;font-size:13px}
.xpbar{height:6px;background:var(--line);border-radius:9px;overflow:hidden;margin-top:4px;width:150px}
.xpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),#ff8a00);border-radius:9px;transition:width .6s}
.streak{font-weight:800;color:#ff6a00}
.iconbtn{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel);display:grid;place-items:center;position:relative;color:var(--text)}
.iconbtn .dot{position:absolute;top:6px;right:7px;width:8px;height:8px;border-radius:50%;background:var(--bad);border:2px solid var(--panel)}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#7c5cff,#2f6fed);color:#fff;display:grid;place-items:center;font-weight:700}
#view{flex:1;overflow:auto;padding:26px 28px 60px}
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.ph h1{margin:0;font-size:24px;letter-spacing:-.4px}
.ph p{margin:4px 0 0;color:var(--muted)}
.crumb{font-size:12px;color:var(--muted);margin-bottom:4px}

/* ---------- CARDS ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pad{padding:18px 20px}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
.kpi{padding:16px 18px;display:flex;gap:14px;align-items:center}
.kpi .ki{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:20px}
.kpi .v{font-size:22px;font-weight:700;letter-spacing:-.4px}
.kpi .l{color:var(--muted);font-size:12.5px}
.card h3{margin:0 0 12px;font-size:15px}
.card .hd{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.card .hd h3{margin:0}
.muted{color:var(--muted)}
.tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap}
.t-blue{background:var(--accentsoft);color:var(--accent)}.t-ok{background:var(--oksoft);color:var(--ok)}.t-bad{background:var(--badsoft);color:var(--bad)}.t-warn{background:var(--warnsoft);color:var(--warn)}.t-gray{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}.t-vio{background:#efe9ff;color:#6a47ff}
[data-theme="dark"] .t-vio{background:#2a2150}

/* ---------- TABLES ---------- */
.toolbar{display:flex;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.toolbar .inp{width:auto;min-width:160px;padding:8px 11px}
.tbl-wrap{overflow:auto;max-height:calc(100vh - 260px)}
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{position:sticky;top:0;background:var(--panel2);text-align:left;font-weight:600;color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;user-select:none}
.tbl td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:hover td{background:var(--panel2)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl tfoot td{font-weight:700;background:var(--panel2)}
.mine{box-shadow:inset 3px 0 0 var(--violet)}
.empty{padding:40px;text-align:center;color:var(--muted)}

/* ---------- TASKS ---------- */
.jtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.jtab{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:10px 14px;text-align:left;min-width:150px}
.jtab.on{border-color:var(--accent);box-shadow:0 0 0 3px #2f6fed22}
.jtab small{display:block;color:var(--muted);font-size:11.5px}
.jtab.lock{opacity:.55}
.tasklist{display:flex;flex-direction:column}
.trow{display:flex;align-items:center;gap:14px;padding:13px 18px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}
.trow:hover{background:var(--panel2)}
.trow .ti{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-size:18px;flex-shrink:0;background:var(--accentsoft)}
.trow .tt{flex:1;min-width:0}
.trow .tt b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trow .tt span{color:var(--muted);font-size:12.5px}
.trow.done{opacity:.72}
.trow.done .tt b{text-decoration:none}
.xp{font-weight:800;color:#c98a00;font-size:12.5px;white-space:nowrap}
.score{font-weight:700;font-size:12.5px;min-width:54px;text-align:right}
.prog{height:8px;background:var(--line);border-radius:9px;overflow:hidden}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--teal));border-radius:9px;transition:width .6s}
.stars{color:var(--gold);letter-spacing:2px;font-size:16px}
.stars .off{color:var(--line)}

/* ---------- WORKSPACE (task modal) ---------- */
.overlay{position:fixed;inset:0;background:rgba(8,14,26,.55);backdrop-filter:blur(3px);z-index:50;display:flex;align-items:center;justify-content:center;animation:fade .15s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.ws{width:min(1380px,96vw);height:min(900px,94vh);background:var(--panel);border-radius:18px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.35);animation:pop .18s}
@keyframes pop{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}
.ws .wh{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line)}
.ws .wh h2{margin:0;font-size:17px;flex:1}
.ws .wb{flex:1;display:grid;grid-template-columns:1.05fr 1fr;overflow:hidden}
.ws .desk{background:repeating-linear-gradient(45deg,#e9e3d6,#e9e3d6 12px,#e5dfd1 12px,#e5dfd1 24px);overflow:auto;padding:28px;display:flex;flex-direction:column;align-items:center;gap:16px}
[data-theme="dark"] .ws .desk{background:repeating-linear-gradient(45deg,#1a1f2a,#1a1f2a 12px,#171c26 12px,#171c26 24px)}
.ws .form{overflow:auto;padding:22px 26px;border-left:1px solid var(--line)}
.ws .wf{display:flex;align-items:center;gap:12px;padding:12px 20px;border-top:1px solid var(--line);background:var(--panel2)}
.frm{display:grid;grid-template-columns:repeat(6,1fr);gap:12px 14px}
.frm .field{margin:0;grid-column:span 6}
.frm .w2{grid-column:span 2}.frm .w3{grid-column:span 3}.frm .w4{grid-column:span 4}
.frm .sec{grid-column:span 6;font-weight:700;font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--line);padding-bottom:6px;margin-top:6px}
.radios{display:flex;gap:8px;flex-wrap:wrap}
.radios label{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;cursor:pointer;font-size:13.5px;text-transform:none;letter-spacing:0;color:var(--text);font-weight:500;background:var(--panel)}
.radios label:has(input:checked){border-color:var(--accent);background:var(--accentsoft)}
.checks{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px}
.checks label{display:flex;gap:9px;align-items:flex-start;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px;text-transform:none;letter-spacing:0;color:var(--text);font-weight:500}
.checks label:hover{background:var(--panel2)}
.checks label:has(input:checked){background:var(--accentsoft)}
.qopts{display:flex;flex-direction:column;gap:10px}
.qopts label{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:13px 15px;cursor:pointer;font-size:14px;text-transform:none;letter-spacing:0;color:var(--text);font-weight:500}
.qopts label:has(input:checked){border-color:var(--accent);background:var(--accentsoft)}
.lines{grid-column:span 6}
.lines table{width:100%;border-collapse:collapse}
.lines td{padding:4px}
.totals{display:flex;justify-content:flex-end;gap:22px;padding:10px 4px;font-variant-numeric:tabular-nums}
.totals b{font-size:16px}
.hint{background:var(--accentsoft);border-radius:10px;padding:10px 13px;font-size:13px;color:var(--text);margin-bottom:14px;display:flex;gap:10px}
.question{font-size:16px;font-weight:600;margin:0 0 14px}

/* ---------- PAPER DOCUMENTS ---------- */
.paper{background:var(--paper);color:var(--ink);width:100%;max-width:620px;padding:36px 40px;box-shadow:0 2px 3px rgba(0,0,0,.08),0 12px 30px rgba(0,0,0,.18);position:relative;font-family:Arial,Helvetica,sans-serif;font-size:12.5px;line-height:1.5}
.paper h4{margin:0}
.paper .lh{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-bottom:2px solid var(--c,#333);padding-bottom:12px;margin-bottom:16px}
.paper .brand{font-size:19px;font-weight:800;color:var(--c,#333);letter-spacing:-.3px}
.paper .brand small{display:block;font-size:10.5px;color:#666;font-weight:400;letter-spacing:0}
.paper .box{border:1px solid #cfcfcf;padding:8px 10px;border-radius:3px}
.paper table{width:100%;border-collapse:collapse;margin:12px 0}
.paper th{background:var(--c,#333);color:#fff;font-weight:600;text-align:left;padding:5px 7px;font-size:11.5px}
.paper td{padding:5px 7px;border-bottom:1px solid #e2e2e2}
.paper .r{text-align:right}
.paper .tot td{border:none;padding:3px 7px}
.paper .tot .big td{font-size:15px;font-weight:800;border-top:2px solid #333}
.paper .foot{font-size:10px;color:#777;margin-top:18px;border-top:1px solid #ddd;padding-top:8px}
.stamp{position:absolute;border:3px solid #c62828;color:#c62828;font-weight:800;padding:6px 12px;border-radius:6px;transform:rotate(-12deg);opacity:.75;font-size:13px;text-align:center;line-height:1.2;font-family:"Courier New",monospace;background:transparent}
.stamp.blue{border-color:#1e4fb8;color:#1e4fb8}
.hand{font-family:"Segoe Print","Bradley Hand","Comic Sans MS","Segoe Script",cursive;color:#1b3a8a;font-size:14px}
.ficha .row{display:flex;gap:10px;border-bottom:1px dotted #aaa;padding:7px 0;align-items:baseline}
.ficha .row span:first-child{font-size:10.5px;text-transform:uppercase;color:#555;width:150px;flex-shrink:0}
.postit{background:#fff59a;color:#333;width:360px;padding:22px 24px;box-shadow:0 10px 24px rgba(0,0,0,.2);transform:rotate(-1.2deg);font-family:"Segoe Print","Bradley Hand","Comic Sans MS",cursive;font-size:15px;line-height:1.55}
.postit.blue{background:#bfe6ff}.postit.pink{background:#ffd0e0}.postit.green{background:#c9f5c4}
.mail{background:#fff;color:#1d2433;width:100%;max-width:640px;border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.18);overflow:hidden;font-size:13.5px}
.mail .mh{padding:16px 20px;border-bottom:1px solid #e7e7e7;background:#f7f9fc}
.mail .mh > b{font-size:16px;display:block;margin-bottom:6px}
.mail .mh div{color:#555;font-size:12.5px}
.mail .mb{padding:18px 20px;line-height:1.6}
.mail .att{display:inline-flex;gap:6px;align-items:center;border:1px solid #ddd;border-radius:8px;padding:6px 10px;margin:4px 6px 0 0;font-size:12px;background:#fafafa}
.phone{background:#101826;color:#e6ecf5;border-radius:18px;padding:22px;width:100%;max-width:560px;box-shadow:0 12px 30px rgba(0,0,0,.25)}
.phone .bub{background:#1d2a40;border-radius:14px;padding:12px 14px;margin:8px 0;line-height:1.5}
.phone .who{font-size:12px;color:#8fa1bb}

/* ---------- RESULT ---------- */
.res{width:min(640px,94vw);max-height:90vh;overflow:auto;background:var(--panel);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.35);animation:pop .2s}
.res .top{padding:26px 26px 18px;text-align:center}
.res .big{font-size:46px;font-weight:800;letter-spacing:-1px}
.res .gain{display:inline-block;background:linear-gradient(90deg,#ffd24a,#ff9f1a);color:#4a2c00;font-weight:800;padding:6px 16px;border-radius:999px;margin-top:6px;font-size:15px}
.res .items{padding:0 22px 8px}
.ri{display:flex;gap:12px;padding:9px 6px;border-bottom:1px solid var(--line);font-size:13px;align-items:flex-start}
.ri .ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;flex-shrink:0;color:#fff;font-weight:700}
.ri .l{font-weight:600;width:170px;flex-shrink:0}
.ri .v{flex:1}
.ri .v s{color:var(--bad)}
.exp{margin:12px 22px;padding:12px 14px;background:var(--panel2);border-radius:10px;font-size:13px;border-left:3px solid var(--accent)}
.res .ft{padding:16px 22px;display:flex;justify-content:flex-end;gap:10px}

/* ---------- BADGES ---------- */
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.badge{border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center;background:var(--panel)}
.badge .bi{font-size:30px;width:58px;height:58px;margin:0 auto 8px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ffe07a,#ffb020);box-shadow:0 4px 14px #ffb02055}
.badge.off{opacity:.45;filter:grayscale(1)}
.badge b{display:block;font-size:13px}
.badge span{font-size:11.5px;color:var(--muted)}

/* ---------- TOAST ---------- */
#toasts{position:fixed;right:22px;bottom:22px;display:flex;flex-direction:column;gap:10px;z-index:90}
.toast{background:var(--side);color:#fff;padding:12px 16px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.3);display:flex;gap:12px;align-items:center;min-width:260px;max-width:380px;animation:slide .25s}
.toast small{display:block;color:#9fb0c8}
@keyframes slide{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
#confetti{position:fixed;inset:0;pointer-events:none;z-index:100}

/* ---------- MISC ---------- */
.drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:94vw;background:var(--panel);box-shadow:-20px 0 50px rgba(0,0,0,.2);z-index:60;animation:slide .2s;display:flex;flex-direction:column}
.drawer .dh{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.drawer .db{padding:18px 20px;overflow:auto}
.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 12px;font-size:13px}
.kv span:nth-child(odd){color:var(--muted)}
.palette{width:min(620px,94vw);background:var(--panel);border-radius:14px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.35);align-self:flex-start;margin-top:12vh}
.palette input{border:none;border-bottom:1px solid var(--line);border-radius:0;padding:16px 18px;font-size:16px}
.palette .it{padding:10px 18px;display:flex;gap:10px;cursor:pointer;border-bottom:1px solid var(--line)}
.palette .it:hover{background:var(--panel2)}
.norms h3{margin-top:0}
.norms table{width:100%;border-collapse:collapse;font-size:13px}
.norms td,.norms th{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left}
.norms th{color:var(--muted);font-size:11.5px;text-transform:uppercase}
.pill-lock{font-size:12px}
.bars{display:flex;align-items:flex-end;gap:18px;height:190px;padding:10px 6px 0}
.bars .b{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.bars .b i{display:block;width:100%;max-width:56px;border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,#5b8cff,#2f6fed)}
.bars .b span{font-size:11.5px;color:var(--muted)}
.bars .b em{font-style:normal;font-size:11.5px;font-weight:700}
.hbar{display:flex;align-items:center;gap:10px;margin:8px 0;font-size:12.5px}
.hbar .n{width:150px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbar .t{flex:1;height:10px;background:var(--line);border-radius:9px;overflow:hidden}
.hbar .t i{display:block;height:100%;background:var(--teal);border-radius:9px}
.hbar .v{width:80px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.ring{--p:0;width:92px;height:92px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--line) 0);display:grid;place-items:center;flex-shrink:0}
.ring b{width:74px;height:74px;border-radius:50%;background:var(--panel);display:grid;place-items:center;font-size:19px}
.welcome{background:linear-gradient(120deg,#1a3a8f,#2f6fed 55%,#12a594);color:#fff;border:none}
.welcome .muted{color:#d4e1ff}
@media (max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}.ws .wb{grid-template-columns:1fr}.ws .desk{max-height:45vh}#login{grid-template-columns:1fr}#login .hero{display:none}}
@media print{aside,header.top,#toasts{display:none!important}#app{display:block}#view{overflow:visible}}
.cert{background:#fffdf5;color:#222;border:10px double #c9a227;padding:50px;text-align:center;max-width:820px;margin:0 auto;font-family:Georgia,serif}
.cert h1{font-size:34px;margin:10px 0;color:#1a3a8f}
.search{min-width:180px}
.search span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xpbox .t b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}
header.top .chip{flex-shrink:0}
@media (max-width:1400px){ header.top .chip[title="Fecha simulada"]{font-size:11.5px;padding:5px 9px} .search kbd{display:none} }
.search kbd{white-space:nowrap}
/* ===== v2 ===== */
.scan{filter:grayscale(1) contrast(1.05);background:#f4f4f2}
.folder{background:linear-gradient(180deg,#f7d98b,#eec566);color:#4a3a10;border-radius:4px 10px 6px 6px;padding:14px 16px 14px 54px;margin:8px 0;position:relative;font-weight:700;font-size:15px;box-shadow:0 4px 10px rgba(0,0,0,.15)}
.folder .tab{position:absolute;left:12px;top:10px;width:30px;height:24px;border-radius:5px;background:#4a3a10;color:#f7d98b;display:grid;place-items:center;font-size:13px}
.desk-madera .ws .desk,.ws.desk-madera .desk{background:repeating-linear-gradient(90deg,#b07b4f,#b07b4f 40px,#a8714a 40px,#a8714a 80px)}
.ws.desk-corcho .desk{background:radial-gradient(#c79b62 1px,transparent 1.5px) 0 0/6px 6px,#b8864f}
.ws.desk-marmol .desk{background:linear-gradient(135deg,#f3f3f3,#e2e2e6 40%,#f7f7f7 60%,#dedee4)}
.ws.desk-pizarra .desk{background:#2f3b36}
.ws.desk-cuaderno .desk{background:repeating-linear-gradient(0deg,#fbfbf6,#fbfbf6 26px,#cfe0f5 27px),#fbfbf6}
.coins{font-weight:800;color:#b7791f}
.shop{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.item{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--panel);display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.item .big{font-size:34px;line-height:1}
.item.owned{border-color:var(--ok)}
.item.eq{box-shadow:0 0 0 3px var(--accent)}
.swatch{width:46px;height:46px;border-radius:12px}
.evento{position:fixed;left:50%;top:76px;transform:translateX(-50%);z-index:95;width:min(560px,94vw);background:var(--panel);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.35);border:2px solid var(--gold);animation:drop .3s}
@keyframes drop{from{transform:translate(-50%,-30px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
.evento .eh{display:flex;gap:10px;align-items:center;padding:12px 16px;background:linear-gradient(90deg,#ffd24a,#ff9f1a);color:#4a2c00;border-radius:14px 14px 0 0;font-weight:800}
.evento .eb{padding:14px 16px}
.evento .timer{height:5px;background:var(--line)}
.evento .timer i{display:block;height:100%;background:var(--bad);transition:width 1s linear}
.evento button.opt{display:block;width:100%;text-align:left;margin:6px 0;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:10px 12px;color:var(--text)}
.evento button.opt:hover{border-color:var(--accent);background:var(--accentsoft)}
.eval .cat{display:flex;align-items:center;gap:12px;margin:10px 0}
.eval .cat b{width:130px}
.eval .cat .prog{flex:1}
.decor{font-size:18px;letter-spacing:2px}
.deskdecor{position:sticky;bottom:0;align-self:flex-end;font-size:30px;opacity:.9;margin-top:auto}
.agenda{border-collapse:collapse;width:100%;font-size:12.5px}
.agenda th,.agenda td{border:1px solid var(--line);padding:6px;text-align:center}
.agenda th{background:var(--panel2);color:var(--muted);font-size:11.5px}
.agenda td.busy{background:var(--badsoft);color:var(--bad);font-size:11px}
.agenda td.free{background:var(--oksoft)}
.agenda td.mine{background:var(--accentsoft);color:var(--accent);font-weight:700}
.meca-src{font-family:Consolas,"Courier New",monospace;white-space:pre-wrap;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px;font-size:15px;line-height:1.6;user-select:none}
.meca-in{font-family:Consolas,"Courier New",monospace;font-size:15px;min-height:130px}
.filepath{font-family:Consolas,monospace;background:var(--side);color:#9fe6b8;padding:10px 12px;border-radius:10px;font-size:13.5px;word-break:break-all}
.rival{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.rival:last-child{border:none}
.rival .n{flex:1}
.rival.me{font-weight:700;color:var(--accent)}

/* ===== licencia ===== */
#gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:radial-gradient(900px 500px at 10% 0%,#2f6fed33,transparent),radial-gradient(700px 400px at 100% 100%,#12a59433,transparent),var(--bg);padding:16px}
.gcard{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:34px 30px;width:100%;max-width:420px;text-align:center}
.gmsg{margin-top:14px;background:var(--warnsoft);border-radius:10px;padding:12px 14px;font-size:13.5px;text-align:left}
.spin{width:38px;height:38px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--accent);margin:10px auto;animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ===== MiñoGest 3 · EducaNorte ===== */
:root{--accent:#0d65c1;--accent2:#0a4f99}

/* --- ARREGLO: los documentos de la mesa ya no se encogen; la columna se desplaza --- */
.ws .desk > *{flex-shrink:0}
.ws .desk{justify-content:flex-start}
.postit{max-width:100%}

/* --- marca EducaNorte --- */
.en-brand{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:inherit}
.en-brand img{height:22px;width:auto;display:block}
.side-foot .en-brand img{height:20px;filter:brightness(0) invert(1);opacity:.85}

/* --- campos nuevos --- */
.gridin{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.gridin table{width:100%;border-collapse:collapse;min-width:420px}
.gridin th{background:var(--panel2);font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;padding:7px 6px;text-align:left;font-weight:600}
.gridin td{padding:4px;border-top:1px solid var(--line)}
.gridin .rn{width:30px;text-align:center;color:var(--muted);font-weight:700}
.gridin .inp{padding:7px 8px;border-radius:7px;font-size:13.5px}
.dlg{margin-bottom:6px!important}
.dlg .bub{border-radius:14px;padding:11px 14px;line-height:1.5;margin-bottom:8px;font-size:14px}
.dlg .bub.them{background:#101826;color:#e6ecf5;border-top-left-radius:4px}
.dlg .bub .who{display:block;font-size:11.5px;color:#8fa1bb;margin-bottom:3px}
.dlg .qopts label{padding:10px 13px;font-size:13.5px}
.dlgend .bub.them{background:#25324a}
.ring-ph{width:46px;height:46px;border-radius:50%;background:#1f9d55;display:grid;place-items:center;font-size:22px;animation:ringph 1.2s infinite}
@keyframes ringph{0%,100%{transform:rotate(0)}10%,30%{transform:rotate(-12deg)}20%,40%{transform:rotate(12deg)}50%{transform:rotate(0)}}
.dndpool{min-height:52px;border:2px dashed var(--line);border-radius:12px;padding:10px;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;background:var(--panel2)}
.dndzones{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.dndz{min-height:110px;border:2px solid var(--line);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px;background:linear-gradient(180deg,var(--panel2),var(--panel));transition:.15s;cursor:pointer}
.dndz.over{border-color:var(--accent);background:var(--accentsoft)}
.dndz .zt b{display:block;font-size:13px}
.dndz .zt small{color:var(--muted);font-size:11.5px}
.dndc{display:inline-block;background:#fff7dc;color:#4a3a10;border:1px solid #e9cf7a;border-radius:8px;padding:6px 9px;font-size:12.5px;font-weight:600;cursor:grab;box-shadow:0 2px 5px rgba(0,0,0,.08);user-select:none;line-height:1.3}
.dndc.sel{outline:3px solid var(--accent);background:var(--accentsoft);color:var(--text);border-color:var(--accent)}
[data-theme="dark"] .dndc{background:#3a3218;color:#f5e3a6;border-color:#6b5a24}

/* --- documentos manuscritos --- */
.hw{font-family:"Segoe Print","Bradley Hand","Comic Sans MS","Segoe Script",cursive;color:#1b3a8a;font-size:15px}
.hw.big{font-size:18px}
.hw.red{color:#c62828}
.hw.tach{color:#7a7a7a;text-decoration:line-through;text-decoration-color:#c62828;text-decoration-thickness:2px}
.handform .hrow{display:flex;gap:10px;border-bottom:1px dotted #aaa;padding:7px 0;align-items:baseline}
.handform .hrow > span{font-size:10.5px;text-transform:uppercase;color:#555;width:140px;flex-shrink:0}
.handform table td{vertical-align:middle}
.handform tr.anul td{text-decoration:line-through;text-decoration-color:#c62828;text-decoration-thickness:2px;opacity:.75}
.borrador{line-height:1.75}
.slot{background:#fff3b0;border-bottom:2px solid #e0a100;padding:0 3px;border-radius:3px;position:relative}
.slot sup{background:#e0a100;color:#fff;border-radius:9px;padding:0 5px;font-size:10px;font-weight:800;margin-right:3px;font-family:Arial,sans-serif}
.mail .mini{overflow-x:auto}
.mail .mini table{border-collapse:collapse;font-size:12px;width:100%}
.mail .mini th{background:#00897b;color:#fff;padding:5px 6px;text-align:left}
.mail .mini td{border-bottom:1px solid #e2e2e2;padding:5px 6px}
.frag{border-left:3px solid #2E4A7A;background:#f7f9fc;padding:8px 12px;margin:10px 0;border-radius:0 8px 8px 0}
.frag p{margin:4px 0 0;font-size:13px}
.ofi{background:#fff;color:#1d2433;width:100%;max-width:640px;border-radius:14px;box-shadow:0 12px 30px rgba(0,0,0,.18);overflow:hidden}
.ofih{background:#244a2c;color:#fff;padding:12px 16px;font-weight:700}
.ofig{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;padding:14px}
.ofic{border:1px solid #e3e3e3;border-radius:10px;padding:10px;font-size:12.5px;position:relative;background:#fbfbf8}
.ofie{font-size:28px;margin-bottom:4px}
.ofin{position:absolute;top:6px;right:8px;background:#244a2c;color:#fff;border-radius:9px;padding:0 7px;font-size:11px;font-weight:800}

/* --- retos sorpresa --- */
.evento.urgente{border-color:var(--bad)}
.evento.urgente .eh{background:linear-gradient(90deg,#ff6b6b,#d64545);color:#fff}
.urgT{font-variant-numeric:tabular-nums}
.urgT.big{font-size:13px;padding:5px 10px}
.urgT.late{background:var(--bad);color:#fff}
.crisisban{display:flex;gap:14px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.crisischip{border-width:2px!important;color:var(--bad)}
.cofrechip{background:linear-gradient(90deg,#ffe07a,#ffb020)!important;color:#4a2c00!important;border-color:#e0a100!important;cursor:pointer}
.caido{text-align:center;padding:40px 20px}
.cofresbox{margin-bottom:10px;background:linear-gradient(135deg,var(--panel),var(--panel2))}
.item.locked{opacity:.7}
.cofre{padding-top:34px!important}
.chest{font-size:90px;display:inline-block;animation:shake .35s infinite}
.chest.open{animation:none;transform:scale(.6);opacity:.4;font-size:50px}
@keyframes shake{0%,100%{transform:rotate(0)}25%{transform:rotate(-9deg) scale(1.05)}75%{transform:rotate(9deg) scale(1.05)}}
.reveal .rar{display:inline-block;color:#fff;font-weight:800;border-radius:999px;padding:3px 14px;font-size:12px;letter-spacing:1px;text-transform:uppercase}
.ws.desk-estrellas .desk{background:radial-gradient(#ffffff55 1px,transparent 1.5px) 0 0/22px 22px,radial-gradient(#ffffff33 1px,transparent 1.5px) 11px 11px/22px 22px,linear-gradient(180deg,#0b1430,#1b2f6b)}

/* --- menú móvil --- */
.hamb{display:none}

/* --- adaptable: tablet --- */
@media (max-width:1100px){
  .ws .wb{display:block;overflow:auto}
  .ws .desk{max-height:none;overflow:visible;padding:20px}
  .ws .form{overflow:visible;border-left:none;border-top:1px solid var(--line)}
  header.top .xpbox{min-width:0}
  header.top .xpbox .xpbar{width:90px}
}
/* --- adaptable: móvil --- */
@media (max-width:860px){
  #app{grid-template-columns:1fr}
  aside{position:fixed;top:0;bottom:0;left:0;width:260px;z-index:75;transform:translateX(-100%);transition:transform .2s;box-shadow:10px 0 40px rgba(0,0,0,.35)}
  aside.open{transform:none}
  .hamb{display:grid}
  header.top{height:auto;min-height:58px;padding:8px 12px;gap:8px;flex-wrap:wrap}
  header.top .search{display:none}
  header.top .xpbox .t{display:none}
  header.top .chip{padding:5px 8px;font-size:11.5px}
  #view{padding:16px 14px 60px}
  .ph h1{font-size:20px}
  .grid.g2,.grid.g3,.grid.g4{grid-template-columns:1fr}
  #view .grid[style*="grid-template-columns"]{grid-template-columns:1fr!important}
  .ws{width:100vw;height:100vh;height:100dvh;border-radius:0}
  .ws .wh{flex-wrap:wrap;padding:10px 12px;gap:8px}
  .ws .wh h2{font-size:15px;white-space:normal!important}
  .ws .wh > div[style*="flex:1"]{flex:1 1 calc(100% - 56px)!important}
  .ws .wh .btn.sm{padding:5px 8px}
  .ws .wf{padding:10px 12px;flex-wrap:wrap}
  .ws .wf > .muted{display:none}
  .ws .desk{padding:14px 10px}
  .ws .form{padding:16px 14px}
  .paper{padding:22px 18px}
  .frm .w2,.frm .w3,.frm .w4{grid-column:span 6}
  .jtab{min-width:0!important;flex:1 1 140px}
  .res{width:96vw}
  .ri .l{width:110px}
  #toasts{right:10px;left:10px;bottom:10px}
  .toast{min-width:0;max-width:none}
  .kv{grid-template-columns:110px 1fr}
  .drawer{width:100vw;max-width:100vw}
  .handform .hrow > span{width:96px}
}
.corr .corrq{font-size:14px;margin-bottom:6px;display:flex;gap:8px;align-items:center}
.corrn{background:#e0a100;color:#fff;border-radius:9px;padding:1px 8px;font-size:12px;font-weight:800}
/* cabecera: que quepan los chips nuevos */
header.top{overflow:hidden}
.search{min-width:120px}
@media (max-width:1500px){header.top .xpbox .xpbar{width:100px} header.top .xpbox{min-width:170px} .search{max-width:240px}}
@media (max-width:1380px){header.top #clock{display:none} header.top .search{flex:0 0 auto;min-width:0;max-width:none} header.top .search span{display:none} .cofrechip,.crisischip{padding:5px 9px}}
