:root{--primary-color: #4A4C9C;--primary-light: #6B6DB8;--primary-dark: #2E3066;--success-color: #2E7D32;--danger-color: #C62828;--warning-color: #F57C00;--info-color: #0277BD;--admin-button-color: #4DB6AC;--admin-button-hover: #26A69A;--text-dark: #111827;--text-light: #FFFFFF;--text-gray: #6B7280;--text-tertiary: #9CA3AF;--text-disabled: #A9A9BC;--bg-light: #EFEFF3;--bg-white: #FFFFFF;--border-light: #E4E4EA;--divider: #F0F0F4;--track: #EDEDF2;--shadow: 0 4px 6px rgba(0,0,0,.1);--radius: 8px;--tint: #F0F1F7;--row-active: #F7F7FB;--dark-tile: #43458A;--on-dark-text: #C9CAE8;--on-dark-label: #A9ABDC;--on-dark-client: #B6B8DE;--on-dark-progress: #8FE3B0;--success-bg: #EAF3EB;--warning-bg: #FDF0E1;--danger-bg: #F9E4E4;--primary: var(--primary-color);--secondary: var(--primary-light);--background: var(--bg-light);--surface: var(--bg-white);--text: var(--text-dark);--muted: var(--text-gray);--border: var(--border-light);--danger: var(--danger-color);--success: var(--success-color);--font-display: "Sora", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--shadow-soft: 0 1px 2px rgba(30, 32, 70, .06), 0 4px 14px rgba(30, 32, 70, .08);--shadow-raise: 0 8px 28px rgba(30, 32, 70, .16)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-body);color:var(--text);background:var(--background);line-height:1.55;font-size:15px}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.2;margin:0;color:var(--text)}p{margin:0}a{color:var(--primary);text-decoration:none}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:15px}:focus-visible{outline:3px solid rgba(74,76,156,.45);outline-offset:2px;border-radius:4px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--radius);padding:10px 18px;font-size:14.5px;font-weight:600;cursor:pointer;transition:background .15s ease,box-shadow .15s ease,transform .06s ease;text-decoration:none;white-space:nowrap;min-height:42px}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);color:var(--text-light)}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-ghost{background:transparent;color:var(--primary);border-color:#4a4c9c59}.btn-ghost:hover:not(:disabled){background:#4a4c9c14}.btn-danger{background:var(--danger);color:var(--text-light)}.btn-danger:hover:not(:disabled){background:#9d1f1f}.btn-danger-ghost{background:transparent;color:var(--danger);border-color:#c6282866}.btn-danger-ghost:hover:not(:disabled){background:#c6282814}.btn-admin{background:var(--admin-button-color);color:#0b3a35}.btn-admin:hover:not(:disabled){background:var(--admin-button-hover);color:var(--text-light)}.btn-sm{padding:6px 12px;font-size:13px;min-height:32px;border-radius:6px}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label{font-size:13.5px;font-weight:600;color:var(--text)}.field .hint{font-size:12.5px;color:var(--muted)}.input,.select,.textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;background:var(--surface);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4a4c9c26;outline:none}.textarea{min-height:96px;resize:vertical}.checkbox-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer}.checkbox-row:hover{background:#4a4c9c0f}.checkbox-row input{width:17px;height:17px;accent-color:var(--primary)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.card-pad{padding:20px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap}.badge-ready{background:var(--success-bg);color:var(--success)}.badge-processing{background:#e4f1f9;color:var(--info-color)}.badge-importing{background:var(--tint);color:var(--primary)}.badge-error{background:var(--danger-bg);color:var(--danger)}.badge-none{background:var(--bg-light);color:var(--muted)}.badge-warning{background:var(--warning-bg);color:var(--warning-color)}.table-wrap{overflow-x:auto;border-radius:var(--radius)}table.table{width:100%;border-collapse:collapse;background:var(--surface);font-size:14px}.table th{text-align:left;font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--muted);padding:11px 14px;border-bottom:1px solid var(--border);background:var(--row-active)}.table td{padding:12px 14px;border-bottom:1px solid var(--divider);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--row-active)}.cell-sub{font-size:12px;color:var(--text-tertiary);margin-top:1px}.cell-time{color:var(--text-tertiary);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1516308c;display:flex;align-items:center;justify-content:center;padding:16px;z-index:100;animation:fadeIn .15s ease}.modal-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-raise);width:100%;max-width:520px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:popIn .18s ease}.modal-card.wide{max-width:760px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 12px}.modal-head h3{font-size:17px}.modal-close{background:none;border:none;cursor:pointer;color:var(--muted);padding:6px;border-radius:6px;display:flex}.modal-close:hover{background:#0000000f;color:var(--text)}.modal-body{padding:4px 20px 16px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px 18px;border-top:1px solid var(--divider);flex-wrap:wrap}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.toast-zone{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:200;width:min(440px,calc(100vw - 32px))}.toast{background:var(--primary-dark);color:var(--text-light);border-radius:var(--radius);padding:12px 16px;font-size:14px;font-weight:500;box-shadow:var(--shadow-raise);animation:toastIn .22s ease;display:flex;gap:10px;align-items:flex-start}.toast-success{background:var(--success)}.toast-error{background:var(--danger)}@keyframes toastIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.progress-track{height:10px;background:#4a4c9c24;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary-light),var(--primary));border-radius:999px;transition:width .3s ease}.progress-thin{height:5px}.progress-success .progress-fill{background:var(--success)}.empty{text-align:center;padding:42px 20px;color:var(--muted)}.empty h3{color:var(--text);margin-bottom:6px;font-size:16px}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid rgba(74,76,156,.2);border-top-color:var(--primary);animation:spin .8s linear infinite;display:inline-block}.spinner-light{border-color:#ffffff4d;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}.page-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:64px 0;color:var(--muted)}.admin-shell{display:flex;min-height:100vh}.admin-sidebar{width:232px;flex:0 0 232px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.admin-brand{padding:16px 16px 14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--divider)}.admin-brand>div{min-width:0}.admin-brand .brand-name{font-family:var(--font-display);font-weight:700;font-size:14.5px;color:var(--text)}.admin-brand .brand-sub{font-size:11.5px;color:var(--text-tertiary);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-logo{width:36px;height:36px;border-radius:9px;background:var(--primary);padding:7px;object-fit:contain;flex-shrink:0}.brand-logo-sm{width:30px;height:30px;border-radius:8px;padding:6px}.admin-nav{display:flex;flex-direction:column;gap:1px;padding:8px 10px 14px;flex:1;overflow-y:auto}.admin-nav a{position:relative;display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:7px;color:var(--muted);font-size:14px;font-weight:500;transition:background .12s ease,color .12s ease}.admin-nav a svg{width:18px;height:18px;flex:0 0 auto;color:var(--text-tertiary);transition:color .12s ease}.admin-nav a:hover{background:var(--row-active);color:var(--text)}.admin-nav a:hover svg{color:var(--muted)}.admin-nav a.active{background:var(--tint);color:var(--primary);font-weight:600}.admin-nav a.active svg{color:var(--primary)}.admin-nav a.active:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--primary)}.admin-main{flex:1;min-width:0;padding:26px 30px 64px}.admin-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.admin-page-head h1{font-size:21px}.admin-page-head .sub{color:var(--muted);font-size:13px;margin-top:3px}.admin-topbar{display:none}.admin-nav-group+.admin-nav-group{margin-top:2px}.admin-nav-group-label{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);padding:13px 12px 6px}.admin-nav-group:first-child .admin-nav-group-label{padding-top:6px}.admin-nav a .nav-label{flex:1}.nav-badge{flex:0 0 auto;min-width:20px;height:19px;padding:0 6px;border-radius:999px;background:var(--warning-bg);color:var(--warning-color);font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.admin-sidebar-foot{padding:10px 12px 12px;border-top:1px solid var(--divider);display:flex;flex-direction:column;gap:2px}.admin-health{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--muted);padding:5px 8px}.admin-health .health-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}.admin-health.ok .health-dot{background:#22a45d;box-shadow:0 0 0 3px #22a45d29}.admin-health.warn{color:var(--warning-color)}.admin-health.warn .health-dot{background:var(--warning-color);box-shadow:0 0 0 3px #f57c002e}.admin-sidebar-foot button{background:none;border:none;color:var(--muted);cursor:pointer;text-align:left;font-size:13.5px;font-weight:500;display:flex;align-items:center;gap:11px;padding:8px;border-radius:7px}.admin-sidebar-foot button svg{color:var(--text-tertiary);flex:0 0 auto}.admin-sidebar-foot button:hover{background:var(--row-active);color:var(--text)}.page-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;box-shadow:var(--shadow-soft);display:flex;align-items:center;gap:13px}.kpi-tile{width:38px;height:38px;flex:0 0 auto;border-radius:9px;background:var(--tint);color:var(--primary);display:flex;align-items:center;justify-content:center}.kpi-body{min-width:0}.kpi-card .kpi-label{font-size:12.5px;color:var(--muted);font-weight:600}.kpi-card .kpi-value{font-family:var(--font-display);font-size:25px;font-weight:800;color:var(--text);line-height:1.15}.kpi-card .kpi-sub{font-size:12px;color:var(--text-tertiary)}.kpi-sub-warn{color:var(--warning-color);font-weight:600}.kpi-trend{display:inline-flex;align-items:center;gap:3px;font-weight:700}.kpi-trend.up{color:var(--success)}.kpi-trend.down{color:var(--danger)}.dash-row{display:grid;grid-template-columns:1.55fr 1fr;gap:14px;margin-bottom:14px;align-items:stretch}.dash-panel{display:flex;flex-direction:column}.dash-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.dash-panel-head h2{font-size:14.5px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:7px}.dash-panel-head h2 svg{color:var(--primary);flex:0 0 auto}.dash-panel-head a{font-size:12.5px;font-weight:600}.dash-panel-body{flex:1;display:flex;flex-direction:column;min-height:0}.panel-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:14px 12px 20px}.panel-empty-icon{width:38px;height:38px;border-radius:50%;background:var(--success-bg);color:var(--success);display:flex;align-items:center;justify-content:center;margin-bottom:10px}.panel-empty strong{font-size:14.5px;font-weight:700;color:var(--text)}.panel-empty span{font-size:13px;color:var(--muted);margin-top:2px;max-width:300px}.proc-list{display:flex;flex-direction:column}.proc-item{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--divider)}.proc-item:last-child{border-bottom:none}.proc-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;background:var(--muted)}.proc-dot.proc-processing{background:var(--info-color)}.proc-dot.proc-queued,.proc-dot.proc-importing{background:var(--primary-light)}.proc-dot.proc-error{background:var(--danger)}.proc-title{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proc-actions{flex:0 0 auto}.storage-value{font-family:var(--font-display);font-size:26px;font-weight:800;color:var(--text);line-height:1.1}.storage-sub{font-size:12px;color:var(--text-tertiary);margin-top:1px}.storage-bar{height:6px;border-radius:999px;background:var(--track);overflow:hidden;margin:12px 0 0}.storage-bar span{display:block;height:100%;border-radius:999px;background:var(--primary)}.kv-list{margin:14px 0 0}.kv-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--divider);font-size:13px}.kv-row dt{color:var(--muted)}.kv-row dd{margin:0;color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.activity-list{display:flex;flex-direction:column}.activity-item{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--divider)}.activity-item:last-child{border-bottom:none;padding-bottom:0}.activity-icon{width:28px;height:28px;flex:0 0 auto;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--tint);color:var(--primary);margin-top:1px}.activity-icon.is-done{background:var(--success-bg);color:var(--success)}.activity-body{flex:1;min-width:0}.activity-main{font-size:13.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-main strong{color:var(--text);font-weight:700}.activity-origin{font-size:12px;color:var(--text-tertiary);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-time{flex:0 0 auto;font-size:12px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-top:3px}.filter-bar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.filter-bar .select{width:auto;min-width:220px}.upload-card{border:1px dashed rgba(74,76,156,.4);border-radius:var(--radius);padding:22px;background:#4a4c9c08}.upload-status-line{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;flex-wrap:wrap}.upload-status-line .phase{font-weight:700;color:var(--primary-dark);font-family:var(--font-display);font-size:15px}.upload-status-line .meta{color:var(--muted);font-size:13px}.upload-percent{font-family:var(--font-display);font-weight:800;font-size:34px;color:var(--primary);margin:10px 0 8px}.steps-track{display:flex;flex-direction:column;gap:8px;margin-top:18px}.step-item{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}.step-item.done{color:var(--success);font-weight:600}.step-item.current{color:var(--primary-dark);font-weight:700}.step-dot{width:9px;height:9px;border-radius:50%;background:var(--border);flex:0 0 auto}.step-item.done .step-dot{background:var(--success)}.step-item.current .step-dot{background:var(--primary);box-shadow:0 0 0 4px #4a4c9c2e}.qr-result{text-align:center}.qr-result img{width:240px;height:240px;border:1px solid var(--border);border-radius:var(--radius);padding:10px;background:#fff}.qr-url{font-size:12.5px;color:var(--muted);word-break:break-all;background:var(--bg-light);border-radius:6px;padding:10px 12px;margin:12px 0;text-align:left}.callout{border-radius:var(--radius);padding:12px 14px;font-size:13.5px;margin:12px 0}.callout-warning{background:#f57c001a;color:#8a4b00;border:1px solid rgba(245,124,0,.35)}.callout-info{background:#0277bd14;color:#06496f;border:1px solid rgba(2,119,189,.25)}.callout-danger{background:#c6282814;color:#7c1d1d;border:1px solid rgba(198,40,40,.3)}.callout-success{background:#2e7d321a;color:#1d4f20;border:1px solid rgba(46,125,50,.3)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(160deg,var(--primary-dark) 0%,var(--primary) 90%)}.login-wrap.login-admin{background:var(--bg-light)}.login-admin .login-card{border:1px solid var(--border);box-shadow:var(--shadow-soft)}.login-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-raise);width:100%;max-width:400px;padding:34px 30px}.login-card h1{font-size:20px;margin-bottom:4px}.login-card .sub{color:var(--muted);font-size:13.5px;margin-bottom:24px}.login-logo{display:block;width:58px;height:58px;object-fit:contain;margin:0 auto 14px}.portal-shell{min-height:100vh;background:var(--background);display:flex;flex-direction:column}.portal-content{width:100%;max-width:1060px;margin:0 auto;padding:20px 20px 72px;flex:1}.ptop{background:var(--primary-dark);position:sticky;top:0;z-index:20}.ptop-inner{width:100%;max-width:1060px;margin:0 auto;padding:9px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.ptop-brand{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:700;font-size:14.5px;color:#fff}.ptop-brand:hover{color:#fff}.ptop-mark{width:26px;height:26px;flex:0 0 auto;border-radius:7px;background:var(--dark-tile);display:flex;align-items:center;justify-content:center;padding:3px}.ptop-mark img{width:100%;height:100%;object-fit:contain}.ptop-client{color:var(--on-dark-client);font-size:13px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phead{background:var(--surface);border-bottom:1px solid var(--border)}.phead-inner{width:100%;max-width:1060px;margin:0 auto;padding:22px 20px 18px}.phead h1{font-size:clamp(21px,4.6vw,26px);font-weight:800;letter-spacing:-.01em}.phead p{color:var(--muted);font-size:14px;margin-top:4px}.pstats{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin-top:14px;font-size:13.5px;color:var(--muted)}.pstats strong{color:var(--text);font-weight:700}.pstats-sep{width:3px;height:3px;border-radius:50%;background:var(--text-tertiary)}.cwatch{display:flex;align-items:center;gap:15px;background:var(--primary-dark);color:#fff;border-radius:14px;padding:15px 18px;margin-bottom:26px;transition:box-shadow .18s ease,transform .18s ease}.cwatch:hover{color:#fff;box-shadow:var(--shadow-raise);transform:translateY(-1px)}.cwatch-tile{flex:0 0 auto;width:46px;height:46px;border-radius:12px;background:var(--dark-tile);color:#fff;display:flex;align-items:center;justify-content:center}.cwatch-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.cwatch-label{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--on-dark-label)}.cwatch-title{font-family:var(--font-display);font-weight:700;font-size:15px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cwatch-bar{display:flex;align-items:center;gap:12px;margin-top:2px}.cwatch-track{flex:1;height:5px;background:#ffffff29;border-radius:999px;overflow:hidden}.cwatch-track i{display:block;height:100%;background:var(--on-dark-progress);border-radius:999px}.cwatch-left{color:var(--on-dark-text);font-size:12.5px;font-weight:600;white-space:nowrap}.cwatch-btn{flex:0 0 auto;background:#fff;color:var(--primary-dark);font-weight:700;font-size:13.5px;padding:9px 17px;border-radius:9px}.psection{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.psection h2{font-size:16.5px;font-weight:700}.psection-count{color:var(--muted);font-size:13px}.ccard-list{display:flex;flex-direction:column;gap:12px}.ccard{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;color:var(--text);transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.ccard:hover{color:var(--text);box-shadow:var(--shadow-soft);border-color:#d8d9e4;transform:translateY(-1px)}.ccard-tile{flex:0 0 auto;width:62px;height:62px;border-radius:12px;background:var(--tint);color:var(--primary);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.ccard-tile.is-done{background:var(--success-bg);color:var(--success)}.ccard-tile em{font-style:normal;font-size:10.5px;font-weight:700}.ccard-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.ccard-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.ccard-head h3{font-size:16px;font-weight:700;letter-spacing:-.01em}.ccard-badge{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--tint);color:var(--primary)}.ccard-badge.is-concluida{background:var(--success-bg);color:var(--success)}.ccard-desc{color:var(--muted);font-size:13.5px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ccard-foot{display:flex;align-items:center;gap:12px;margin-top:4px}.ccard-track{flex:1;max-width:260px;height:5px;background:var(--track);border-radius:999px;overflow:hidden}.ccard-track i{display:block;height:100%;background:var(--primary);border-radius:999px}.ccard-track.is-done i{background:var(--success)}.ccard-meta{color:var(--muted);font-size:12.5px;font-weight:600;white-space:nowrap}.ccard-action{flex:0 0 auto;background:var(--primary);color:#fff;font-weight:700;font-size:13.5px;padding:10px 18px;border-radius:9px;text-align:center;transition:background .15s ease}.ccard:hover .ccard-action{background:var(--primary-dark)}.ccard-action.is-ghost{background:transparent;color:var(--primary);border:1px solid var(--border)}.ccard:hover .ccard-action.is-ghost{background:var(--tint)}.support-bar{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:26px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--muted);font-size:13.5px;transition:border-color .15s ease;text-align:center}.support-bar svg{color:var(--success);flex:0 0 auto}.support-bar strong{color:var(--text);font-weight:700}.support-bar:hover{border-color:var(--success);color:var(--muted)}.pcrumb{background:var(--background)}.pcrumb-inner{width:100%;max-width:1060px;margin:0 auto;padding:14px 20px 0;display:flex;align-items:center;gap:8px;font-size:13px;min-width:0}.pcrumb-inner a{color:var(--primary);font-weight:600;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.pcrumb-sep{color:var(--text-tertiary)}.pcrumb-current{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.col-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.col-main{min-width:0}.col-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:66px}.colhead{padding:18px 20px;margin-bottom:20px}.colhead-top{display:flex;align-items:flex-start;gap:14px}.colhead-tile{flex:0 0 auto;width:46px;height:46px;border-radius:11px;background:var(--tint);color:var(--primary);display:flex;align-items:center;justify-content:center}.colhead-id{min-width:0}.colhead-id h1{font-size:clamp(19px,3.6vw,23px);font-weight:800;letter-spacing:-.01em}.colhead-meta{color:var(--muted);font-size:13px;margin-top:4px}.colhead-cta{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid var(--divider)}.colhead-prog{display:flex;align-items:center;gap:11px;flex:1;min-width:170px}.colhead-track{flex:1;max-width:200px;height:6px;background:var(--track);border-radius:999px;overflow:hidden}.colhead-track i{display:block;height:100%;background:var(--primary);border-radius:999px}.colhead-progtext{color:var(--muted);font-size:13px;font-weight:600;white-space:nowrap}.clist{padding:2px 0}.crow{display:flex;align-items:center;gap:13px;padding:13px 18px;color:var(--text);border-left:3px solid transparent;transition:background .15s ease}.crow+.crow{border-top:1px solid var(--divider)}a.crow:hover{background:var(--row-active);color:var(--text)}.crow-icon{width:30px;height:30px;flex:0 0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:13px;background:var(--tint);color:var(--primary)}.crow-icon.is-done{background:var(--success-bg);color:var(--success)}.crow-icon.is-active{background:var(--primary);color:#fff}.crow-icon.is-locked{background:var(--divider);color:var(--text-disabled)}.crow-title{flex:1;min-width:0;font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crow-side{flex:0 0 auto;color:var(--muted);font-size:12.5px}.crow-side.is-action{color:var(--primary);font-weight:700;font-size:13px}.crow.is-done .crow-title{color:var(--text-tertiary);font-weight:500}.crow.is-done .crow-side{color:var(--text-tertiary)}.crow.is-locked{cursor:default}.crow.is-locked .crow-title,.crow.is-locked .crow-side{color:var(--text-disabled);font-weight:500}.crow.is-active{background:var(--row-active);border-left-color:var(--primary)}.crow-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.crow-body .crow-title{flex:none;font-weight:700}.crow-mini{display:flex;align-items:center;gap:10px}.crow-mini-track{width:130px;max-width:40%;height:4px;background:var(--track);border-radius:999px;overflow:hidden}.crow-mini-track i{display:block;height:100%;background:var(--primary);border-radius:999px}.crow-mini-label{color:var(--muted);font-size:12px;font-weight:600}.side-progress{background:var(--primary-dark);border-radius:14px;padding:20px 18px;text-align:center}.ring{position:relative;width:96px;height:96px;margin:0 auto}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring circle{fill:none;stroke-width:8;stroke-linecap:round}.ring-track{stroke:var(--dark-tile)}.ring-fill{stroke:var(--on-dark-progress);transition:stroke-dashoffset .5s ease}.ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10.5px;color:var(--on-dark-label);line-height:1.25}.ring-label strong{font-family:var(--font-display);font-size:21px;font-weight:800;color:#fff}.side-progress-text{color:var(--on-dark-text);font-size:13px;margin-top:12px}.side-progress-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:13px;border-top:1px solid rgba(255,255,255,.12);font-size:13px}.side-progress-row span{color:var(--on-dark-label)}.side-progress-row strong{font-family:var(--font-display);font-weight:700;color:#fff}.side-about{padding:16px 18px}.side-about h3{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:10px}.side-about p{color:var(--muted);font-size:13.5px;line-height:1.6;margin-bottom:10px}.side-about p:last-child{margin-bottom:0}.side-about strong{color:var(--text);font-weight:600}.side-help{display:flex;align-items:flex-start;gap:11px;padding:15px 18px;color:var(--muted);font-size:13px;transition:border-color .15s ease}.side-help:hover{border-color:var(--success);color:var(--muted)}.side-help svg{color:var(--success);flex:0 0 auto;margin-top:1px}.side-help strong{display:block;color:var(--text);font-size:14px;font-weight:700;margin-bottom:2px}.collection-empty{padding:34px 26px;text-align:center}.collection-empty-icon{width:56px;height:56px;border-radius:14px;background:var(--tint);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}.collection-empty h3{font-size:17px;color:var(--text)}.collection-empty p{color:var(--muted);font-size:14px;margin-top:8px;max-width:420px;margin-left:auto;margin-right:auto}.player-frame{position:relative;width:100%;aspect-ratio:16 / 9;background:#000;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-raise)}.player-frame iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none}.player-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fffc;gap:10px;font-size:14px}.lesson-page-head{margin:2px 0 14px}.lesson-page-head h1{color:var(--text);font-size:clamp(19px,4.4vw,25px)}.lesson-page-head .lesson-count{color:var(--muted);font-size:13px;margin-top:4px}.lesson-nav{display:flex;gap:10px;margin-top:18px}.lesson-nav .btn{flex:1}.lesson-desc{margin-top:18px}.lesson-desc h3{font-size:15px;margin-bottom:8px}.lesson-desc p{color:var(--muted);font-size:14.5px;margin-bottom:8px}.lesson-desc p:last-child{margin-bottom:0}.noaccess-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,var(--primary-dark),var(--primary))}.noaccess-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-raise);max-width:430px;width:100%;padding:34px 30px;text-align:center}.noaccess-card .icon-circle{width:58px;height:58px;border-radius:50%;background:#c628281a;color:var(--danger);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.noaccess-card h1{font-size:19px;margin-bottom:8px}.noaccess-card p{color:var(--muted);font-size:14.5px}@media(max-width:900px){.admin-shell{flex-direction:column}.admin-sidebar{display:none}.admin-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface);color:var(--text);border-bottom:1px solid var(--border);padding:10px 16px;position:sticky;top:0;z-index:50}.admin-topbar .brand-name{font-family:var(--font-display);font-weight:700;font-size:15px;display:flex;align-items:center;gap:9px;color:var(--text)}.admin-topbar button{background:none;border:none;color:var(--muted);cursor:pointer;display:flex;padding:6px}.admin-mobile-nav{background:var(--surface);border-bottom:1px solid var(--border);padding:8px 10px 12px;display:flex;flex-direction:column;gap:1px;position:sticky;top:53px;z-index:49;box-shadow:var(--shadow-soft)}.admin-mobile-nav a{color:var(--muted);padding:10px 12px;border-radius:7px;font-size:14.5px;font-weight:500;display:flex;gap:11px;align-items:center}.admin-mobile-nav a svg{width:18px;height:18px;flex:0 0 auto;color:var(--text-tertiary)}.admin-mobile-nav a .nav-label{flex:1}.admin-mobile-nav a{position:relative}.admin-mobile-nav a.active{background:var(--tint);color:var(--primary);font-weight:600}.admin-mobile-nav a.active svg{color:var(--primary)}.admin-mobile-nav a.active:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--primary)}.admin-main{padding:20px 16px 56px}.modal-foot .btn{flex:1}.kpi-grid,.dash-row{grid-template-columns:1fr}.page-head-actions{width:100%}.page-head-actions .btn{flex:1}}@media(min-width:901px){.admin-mobile-nav{display:none}}@media(max-width:480px){.admin-page-head h1{font-size:19px}.upload-percent{font-size:28px}}@media(max-width:900px){.col-layout{grid-template-columns:1fr}.col-side{position:static}}@media(max-width:640px){.ccard{flex-wrap:wrap;align-items:flex-start;gap:13px}.ccard-action{flex:1 1 100%}.cwatch{flex-wrap:wrap}.cwatch-btn{flex:1 1 100%;text-align:center}.cwatch-tile{width:40px;height:40px}.colhead-cta .btn{flex:1 1 100%}.crow{padding:13px 15px}.crow-mini-track{width:64px}.crow-mini-label{white-space:nowrap}}
