/* TCLMS PATCH-25A — Unified Design Tokens & Theme Engine */
:root{
  --tclms-font-body:"Segoe UI",Tahoma,Arial,sans-serif;
  --tclms-font-heading:"Segoe UI",Tahoma,Arial,sans-serif;
  --tclms-front-font-body:"Segoe UI",Tahoma,Arial,sans-serif;
  --tclms-front-font-heading:"Segoe UI",Tahoma,Arial,sans-serif;
  --tclms-font-size:15px;--tclms-front-font-size:16px;--tclms-heading-scale:1.12;--tclms-front-heading-scale:1.08;
  --tclms-line-height:1.65;--tclms-front-line-height:1.75;--t-control-height:42px;--front-control-height:46px;
  --t-focus:#23AFAC;--t-focus-width:3px;--t-border-width:1px;--t-section-gap:24px;--t-density-scale:1;
}
html,body{font-synthesis:none;text-rendering:optimizeLegibility}
body.tclms-admin-shell,body.tclms-student-shell,body.tclms-auth-shell{font-family:var(--tclms-font-body);font-size:var(--tclms-font-size);line-height:var(--tclms-line-height)}
body.tclms-public-shell{font-family:var(--tclms-front-font-body);font-size:var(--tclms-front-font-size);line-height:var(--tclms-front-line-height)}
body.tclms-admin-shell h1,body.tclms-admin-shell h2,body.tclms-admin-shell h3,body.tclms-admin-shell h4,body.tclms-admin-shell h5,body.tclms-admin-shell h6,
body.tclms-student-shell h1,body.tclms-student-shell h2,body.tclms-student-shell h3,body.tclms-student-shell h4,body.tclms-student-shell h5,body.tclms-student-shell h6,
body.tclms-auth-shell h1,body.tclms-auth-shell h2,body.tclms-auth-shell h3{font-family:var(--tclms-font-heading);letter-spacing:0}
body.tclms-public-shell h1,body.tclms-public-shell h2,body.tclms-public-shell h3,body.tclms-public-shell h4,body.tclms-public-shell h5,body.tclms-public-shell h6{font-family:var(--tclms-front-font-heading);letter-spacing:0}
button,input,select,textarea,option{font-family:inherit}
code,kbd,pre,.code{font-family:Consolas,"Courier New",monospace}
.fa,.fas,.far,.fab,[class^="icofont-"],[class*=" icofont-"]{font-family:inherit}
.fas,.fa-solid{font-family:"Font Awesome 5 Free"!important}.far,.fa-regular{font-family:"Font Awesome 5 Free"!important}.fab,.fa-brands{font-family:"Font Awesome 5 Brands"!important}[class^="icofont-"],[class*=" icofont-"]{font-family:IcoFont!important}

body.tclms-admin-shell .card,body.tclms-student-shell .card,
body.tclms-admin-shell .tclms-kpi-card,body.tclms-student-shell .tclms-kpi-card{border-width:var(--t-border-width);border-color:var(--t-border);border-radius:var(--t-radius);box-shadow:var(--t-card-shadow)}
body.tclms-admin-shell input:not([type=checkbox]):not([type=radio]):not([type=color]),body.tclms-admin-shell select,body.tclms-admin-shell textarea,
body.tclms-student-shell input:not([type=checkbox]):not([type=radio]):not([type=color]),body.tclms-student-shell select,body.tclms-student-shell textarea{min-height:var(--t-control-height);border-radius:calc(var(--t-radius) * .72);border-color:var(--t-border);background:var(--t-surface-2);color:var(--t-text)}
body.tclms-public-shell input:not([type=checkbox]):not([type=radio]):not([type=color]),body.tclms-public-shell select,body.tclms-public-shell textarea{min-height:var(--front-control-height);font-family:var(--tclms-front-font-body)}
body.tclms-admin-shell :is(a,button,input,select,textarea):focus-visible,body.tclms-student-shell :is(a,button,input,select,textarea):focus-visible,body.tclms-auth-shell :is(a,button,input,select,textarea):focus-visible{outline:var(--t-focus-width) solid color-mix(in srgb,var(--t-focus) 70%,transparent);outline-offset:2px}
body.tclms-admin-shell .tclms-table th,body.tclms-admin-shell .tclms-table td,body.tclms-student-shell .tclms-table th,body.tclms-student-shell .tclms-table td{padding:var(--t-table-pad)}
body.tclms-admin-shell .tclms-content,body.tclms-student-shell .tclms-content{max-width:var(--t-max);margin-inline:auto}
body.tclms-admin-shell .btn,body.tclms-student-shell .btn{border-radius:calc(var(--t-radius) * .72);transition:transform var(--t-motion),box-shadow var(--t-motion),background var(--t-motion),border-color var(--t-motion)}
body.tclms-admin-shell .btn:hover,body.tclms-student-shell .btn:hover{transform:translateY(var(--t-hover-y))}
body.tclms-public-shell .tclms-front-container{max-width:var(--front-max)}
body.tclms-public-shell .tclms-front-btn,body.tclms-public-shell .tclms-front-card{border-radius:var(--front-radius);transition:transform var(--front-motion),box-shadow var(--front-motion)}

/* PATCH-25A editor */
.t25-theme-page{display:grid;gap:20px}.t25-theme-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:24px;border:1px solid var(--t-border);border-radius:var(--t-radius);background:linear-gradient(135deg,color-mix(in srgb,var(--t-primary) 12%,var(--t-surface)),var(--t-surface));box-shadow:var(--t-card-shadow)}
.t25-theme-hero h1{margin:6px 0 8px;font-size:calc(30px * var(--tclms-heading-scale))}.t25-theme-hero p{margin:0;color:var(--t-muted);max-width:850px}.t25-theme-status{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.t25-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,var(--t-muted) 12%,transparent);border:1px solid var(--t-border);font-size:12px}.t25-chip.good{color:var(--t-success);background:color-mix(in srgb,var(--t-success) 12%,transparent);border-color:color-mix(in srgb,var(--t-success) 35%,var(--t-border))}
.t25-theme-workspace{display:grid;grid-template-columns:minmax(440px,.95fr) minmax(520px,1.05fr);gap:20px;align-items:start}.t25-theme-controls,.t25-preview-pane{min-width:0}.t25-theme-controls{display:grid;gap:14px}.t25-theme-toolbar,.t25-presets,.t25-token-group,.t25-preview-pane,.t25-history{border:1px solid var(--t-border);border-radius:var(--t-radius);background:var(--t-surface);box-shadow:var(--t-card-shadow)}
.t25-theme-toolbar{padding:16px;display:flex;gap:12px;align-items:end;justify-content:space-between}.t25-label-wide{display:grid;gap:6px;flex:1;color:var(--t-muted);font-size:12px}.t25-label-wide input{width:100%}.t25-theme-actions{display:flex;gap:8px;flex-wrap:wrap}.btn.ghost{background:transparent!important;color:var(--t-text)!important;border:1px solid var(--t-border)!important}
.t25-presets{padding:14px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.t25-presets>div{display:grid;gap:2px;margin-inline-end:auto}.t25-presets small{color:var(--t-muted)}.t25-preset{border:1px solid var(--t-border);background:var(--t-surface-2);color:var(--t-text);border-radius:10px;padding:9px 12px;cursor:pointer}.t25-preset:hover{border-color:var(--t-primary);color:var(--t-primary)}
.t25-theme-groups{display:grid;gap:10px}.t25-token-group{overflow:hidden}.t25-token-group summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center;padding:16px 18px}.t25-token-group summary::-webkit-details-marker{display:none}.t25-token-group summary span{display:grid;gap:4px}.t25-token-group summary small{font-weight:400;color:var(--t-muted);max-width:720px}.t25-token-group[open] summary{border-bottom:1px solid var(--t-border)}.t25-token-grid{padding:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.t25-token-field{display:grid;gap:6px;font-size:12px;color:var(--t-muted)}.t25-token-field>input,.t25-token-field>select,.t25-token-field .t25-number-field{width:100%}.t25-token-field select,.t25-token-field input[type=number]{width:100%;min-height:40px}.t25-color-field{display:grid;grid-template-columns:54px 1fr;gap:8px;align-items:center}.t25-color-field input[type=color]{width:54px;height:40px;padding:2px;background:var(--t-surface-2);border:1px solid var(--t-border);border-radius:8px}.t25-color-field code{direction:ltr;display:flex;align-items:center;min-height:40px;padding:0 10px;border-radius:8px;background:var(--t-surface-2);border:1px solid var(--t-border);color:var(--t-text)}.t25-number-field{position:relative}.t25-number-field em{position:absolute;inset-inline-end:10px;top:50%;transform:translateY(-50%);font-style:normal;color:var(--t-muted);pointer-events:none}
.t25-preview-pane{position:sticky;top:calc(var(--t-topbar) + 16px);overflow:hidden}.t25-preview-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--t-border)}.t25-preview-head>div:first-child{display:grid;gap:3px}.t25-preview-head small{color:var(--t-muted)}.t25-preview-modes{display:flex;padding:3px;background:var(--t-surface-2);border:1px solid var(--t-border);border-radius:9px}.t25-preview-modes button{border:0;background:transparent;color:var(--t-muted);padding:6px 10px;border-radius:7px;cursor:pointer}.t25-preview-modes button.active{background:var(--t-primary);color:#fff}
.t25-preview{--pv-primary:#2457A7;--pv-accent:#23AFAC;--pv-bg:#101722;--pv-surface:#182231;--pv-surface2:#172033;--pv-border:#314158;--pv-text:#F5F7FA;--pv-muted:#B5C0D0;--pv-radius:10px;--pv-font:Tahoma,Arial,sans-serif;--pv-heading:Tahoma,Arial,sans-serif;--pv-font-size:15px;--pv-line:1.65;--pv-sidebar:180px;padding:14px;background:color-mix(in srgb,var(--t-bg) 70%,#000);overflow:auto}.t25-preview[data-preview-theme=light]{--pv-bg:#F5F7FA;--pv-surface:#FFFFFF;--pv-surface2:#FFFFFF;--pv-border:#D9E0E8;--pv-text:#172033;--pv-muted:#596579}.t25-preview-shell{min-width:650px;height:570px;display:grid;grid-template-columns:var(--pv-sidebar) 1fr;background:var(--pv-bg);color:var(--pv-text);font:var(--pv-font-size)/var(--pv-line) var(--pv-font);border:1px solid var(--pv-border);border-radius:calc(var(--pv-radius) + 2px);overflow:hidden}.t25-preview-sidebar{padding:14px 10px;background:var(--pv-surface);border-inline-end:1px solid var(--pv-border)}.t25-preview-logo{display:flex;gap:8px;align-items:center;padding:4px 4px 14px;border-bottom:1px solid var(--pv-border);font-family:var(--pv-heading)}.t25-preview-logo span{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--pv-primary),var(--pv-accent))}.t25-preview-sidebar nav{display:grid;gap:5px;margin-top:14px}.t25-preview-sidebar a{display:flex;gap:8px;align-items:center;padding:9px;border-radius:calc(var(--pv-radius) * .7);color:var(--pv-muted)}.t25-preview-sidebar a.active{color:#fff;background:linear-gradient(90deg,var(--pv-primary),color-mix(in srgb,var(--pv-primary) 65%,var(--pv-accent)))}.t25-preview-main{min-width:0;display:grid;grid-template-rows:50px 1fr}.t25-preview-main>header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--pv-surface);border-bottom:1px solid var(--pv-border)}.t25-preview-content{padding:16px;overflow:auto}.t25-preview-title{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin-bottom:14px}.t25-preview-title h2{font-family:var(--pv-heading);margin:2px 0;font-size:24px}.t25-preview-title p,.t25-preview-title small{margin:0;color:var(--pv-muted)}.t25-preview button{border:0;border-radius:calc(var(--pv-radius) * .7);background:var(--pv-primary);color:#fff;padding:9px 12px;font:inherit}.t25-preview button.soft{background:color-mix(in srgb,var(--pv-primary) 16%,var(--pv-surface2));color:var(--pv-text);border:1px solid color-mix(in srgb,var(--pv-primary) 35%,var(--pv-border))}.t25-preview-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.t25-preview-kpis article,.t25-preview-card{background:var(--pv-surface);border:1px solid var(--pv-border);border-radius:var(--pv-radius);box-shadow:0 8px 22px rgba(0,0,0,.08)}.t25-preview-kpis article{padding:12px;display:grid;gap:3px}.t25-preview-kpis small{color:var(--pv-muted)}.t25-preview-kpis strong{font-size:22px;font-family:var(--pv-heading)}.t25-preview-kpis span{font-size:11px;color:#55BE70}.t25-preview-kpis span.warn{color:#F59E0B}.t25-preview-card{overflow:hidden}.t25-preview-card-head{padding:11px 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--pv-border)}.t25-preview-form{display:grid;grid-template-columns:1fr 150px;gap:8px;padding:10px 12px}.t25-preview input,.t25-preview select{height:36px;border-radius:calc(var(--pv-radius) * .65);border:1px solid var(--pv-border);background:var(--pv-surface2);color:var(--pv-text);padding:0 9px;font:inherit}.t25-preview table{width:100%;border-collapse:collapse}.t25-preview th,.t25-preview td{padding:10px 12px;text-align:right;border-top:1px solid var(--pv-border)}.t25-preview th{color:var(--pv-muted);font-weight:600}.t25-preview .status{padding:3px 7px;border-radius:999px;font-size:11px}.t25-preview .status.good{color:#55BE70;background:color-mix(in srgb,#55BE70 12%,transparent)}.t25-preview .status.warn{color:#F59E0B;background:color-mix(in srgb,#F59E0B 12%,transparent)}
.t25-history{padding:0;overflow:hidden}.t25-history-head{padding:16px 18px;border-bottom:1px solid var(--t-border)}.t25-history-head h3,.t25-history-head p{margin:0}.t25-history-head p,.t25-muted{color:var(--t-muted)}.t25-history .pagination{padding:12px 16px}
@media(max-width:1250px){.t25-theme-workspace{grid-template-columns:1fr}.t25-preview-pane{position:relative;top:auto}.t25-preview-shell{min-width:720px}}
@media(max-width:780px){.t25-theme-hero,.t25-theme-toolbar{flex-direction:column;align-items:stretch}.t25-theme-status{justify-content:flex-start}.t25-token-grid{grid-template-columns:1fr}.t25-theme-actions{width:100%}.t25-theme-actions .btn{flex:1}.t25-preview{padding:8px}}
