:root{
  --bg:#f5f4f1;--surface:#ffffff;--surface-2:#efede8;--text:#1d1b22;--muted:#77727f;
  --line:#e3e0dc;--purple:#6d4aff;--purple-soft:#eee9ff;--green:#1f9d69;
  --shadow:0 18px 55px rgba(37,31,51,.08)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif;color:var(--text);background:var(--bg)}
a{text-decoration:none;color:inherit}.eyebrow{font-size:12px;letter-spacing:.16em;font-weight:800;color:var(--purple)}
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(420px,46%) 1fr;background:#f8f7f4}
.login-panel{display:flex;flex-direction:column;justify-content:center;padding:8vw;max-width:700px;width:100%;margin:auto}
.brand-mark,.logo-icon{display:grid;place-items:center;background:linear-gradient(145deg,#7658ff,#5130e8);color:white;font-weight:900;box-shadow:0 12px 30px rgba(109,74,255,.22)}
.brand-mark{width:54px;height:54px;border-radius:17px;margin-bottom:36px;font-size:24px}.login-panel h1{font-size:46px;letter-spacing:-.04em;margin:10px 0 8px}.muted,.login-panel>p{color:var(--muted);font-size:17px;margin:0 0 36px}
.login-form{display:grid;gap:18px}.login-form label span{display:block;font-size:13px;font-weight:700;margin-bottom:8px}.login-form input{width:100%;height:54px;border:1px solid var(--line);background:#fff;border-radius:14px;padding:0 16px;font-size:16px;outline:none;transition:.2s}.login-form input:focus{border-color:#9b88ff;box-shadow:0 0 0 4px var(--purple-soft)}
.login-form button{height:56px;border:0;border-radius:14px;background:var(--text);color:#fff;font-size:15px;font-weight:800;display:flex;align-items:center;justify-content:space-between;padding:0 20px;cursor:pointer}.login-form button:hover{background:#2c2932}.demo-note{margin-top:20px;padding:13px 15px;border-radius:12px;background:var(--purple-soft);color:#5e4d9a;font-size:12px}.alert{background:#fff0f0;color:#a63838;padding:13px 15px;border-radius:12px;margin-bottom:18px;font-size:13px}
.login-art{position:relative;overflow:hidden;margin:18px;border-radius:28px;background:linear-gradient(145deg,#e8e3f8,#d9e8f3);min-height:calc(100vh - 36px)}.orb{position:absolute;border-radius:999px;filter:blur(2px)}.orb-a{width:430px;height:430px;background:rgba(115,83,255,.34);right:-70px;top:-60px}.orb-b{width:370px;height:370px;background:rgba(255,255,255,.72);left:8%;bottom:-110px}.art-copy{position:absolute;left:9%;bottom:10%;display:grid;gap:12px}.art-copy span{font-size:13px;font-weight:800;letter-spacing:.14em;color:#675f75}.art-copy strong{font-size:46px;line-height:1.04;letter-spacing:-.045em}
.app-shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr}.sidebar{background:#ebe9e4;border-right:1px solid var(--line);padding:26px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.logo{display:flex;align-items:center;gap:11px;font-weight:900;padding:0 8px 30px}.logo-icon{width:35px;height:35px;border-radius:11px;font-size:15px}.side-label{font-size:10px;letter-spacing:.16em;font-weight:900;color:#99939e;padding:12px 12px 8px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{padding:12px;border-radius:12px;color:#6d6872;font-size:14px;font-weight:700;display:flex;align-items:center;gap:11px}.sidebar nav a.active{background:#fff;color:var(--text);box-shadow:0 4px 15px rgba(45,39,55,.05)}.nav-icon{width:23px;text-align:center}.sidebar-bottom{margin-top:auto}.user-chip{display:flex;align-items:center;gap:10px;padding:12px}.avatar{width:34px;height:34px;border-radius:50%;background:#dcd7ff;color:#5840d7;display:grid;place-items:center;font-weight:900}.user-chip div{display:grid}.user-chip strong{font-size:13px}.user-chip small{color:var(--muted);font-size:11px;margin-top:2px}.logout{display:block;padding:10px 12px;color:#8b858f;font-size:12px}
.content{padding:58px clamp(28px,5vw,78px);max-width:1500px;width:100%;margin:0 auto}.page-head{display:flex;justify-content:space-between;gap:30px;align-items:flex-start;margin-bottom:42px}.page-head h1{font-size:42px;letter-spacing:-.04em;margin:8px 0 7px}.page-head p{margin:0;color:var(--muted);font-size:15px}.status-pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:10px 14px;font-size:12px;font-weight:700;color:#69636d;display:flex;align-items:center;gap:8px}.status-pill i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(31,157,105,.12)}
.apps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.app-card{min-height:250px;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:22px;display:flex;flex-direction:column;position:relative;transition:.2s;box-shadow:0 8px 30px rgba(30,25,39,.03)}.app-card.primary:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#d6ceff}.app-icon{width:58px;height:58px;border-radius:17px;background:var(--purple-soft);color:var(--purple);display:grid;place-items:center;font-size:14px;font-weight:900}.app-icon.soft{background:#efeeeb;color:#8a858d}.app-card-body{margin-top:auto}.app-card h2{margin:9px 0 5px;font-size:22px;letter-spacing:-.025em}.app-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.live-badge,.soon-badge,.module-tag{font-size:9px;letter-spacing:.12em;font-weight:900}.live-badge{color:var(--green)}.soon-badge,.muted-tag{color:#aaa4ad}.arrow{position:absolute;right:22px;top:24px;font-size:22px;color:var(--purple)}.disabled{opacity:.7}
.back-link{display:inline-block;color:#817a87;font-size:12px;font-weight:700;margin-bottom:24px}.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.module-card{min-height:230px;border-radius:22px;border:1px solid var(--line);background:#fff;padding:22px;display:flex;flex-direction:column;position:relative}.module-card.featured{background:linear-gradient(145deg,#fff,#f2efff);border-color:#dcd4ff}.module-no{font-size:12px;font-weight:900;color:#b3adb6}.module-card>div{margin-top:auto}.module-card h2{font-size:22px;margin:9px 0 6px}.module-card p{font-size:13px;color:var(--muted);line-height:1.5;margin:0}.module-arrow{position:absolute;right:22px;top:20px;color:var(--purple);font-size:22px}.next-step{margin-top:18px;background:#e9e6df;border-radius:20px;padding:24px 26px}.next-step span{font-size:9px;letter-spacing:.14em;font-weight:900;color:#8e8792}.next-step strong{display:block;font-size:17px;margin:7px 0}.next-step p{font-size:13px;color:#716b75;margin:0;max-width:760px;line-height:1.5}
@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-art{display:none}.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;flex-direction:row;align-items:center;padding:14px 18px}.logo{padding:0}.side-label,.sidebar nav,.sidebar-bottom{display:none}.content{padding:34px 20px}.apps-grid,.module-grid{grid-template-columns:1fr}.page-head{flex-direction:column}.page-head h1{font-size:34px}}

.notice{padding:14px 16px;border-radius:14px;margin-bottom:22px;font-size:13px;font-weight:700}.notice.success{background:#e8f7f0;color:#237a58}.notice.error{background:#fff0f0;color:#a63838}.count-pill{background:#fff;border:1px solid var(--line);padding:10px 14px;border-radius:999px;font-size:12px;font-weight:800;color:#746e79}
.upload-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:24px;display:grid;grid-template-columns:1.2fr 1fr;gap:30px;align-items:center;margin-bottom:20px}.upload-card h2{margin:8px 0 7px;font-size:21px}.upload-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.upload-form{display:flex;gap:10px;align-items:stretch}.file-picker{flex:1;border:1px dashed #cfc9d6;border-radius:14px;padding:12px 14px;cursor:pointer;background:#faf9f7;display:grid;gap:3px}.file-picker input{display:none}.file-picker span{font-size:13px;font-weight:800}.file-picker small{font-size:11px;color:var(--muted)}.upload-form button,.settings-grid button{border:0;border-radius:13px;background:var(--text);color:#fff;padding:0 18px;font-weight:800;cursor:pointer}
.exam-list{display:grid;gap:10px}.exam-row{background:#fff;border:1px solid var(--line);border-radius:17px;padding:15px 17px;display:grid;grid-template-columns:48px 1fr auto auto 26px;align-items:center;gap:14px;transition:.2s}.exam-row:hover{border-color:#d4ccff;box-shadow:0 8px 25px rgba(40,34,50,.05)}.exam-index{width:42px;height:42px;border-radius:13px;background:var(--purple-soft);color:var(--purple);display:grid;place-items:center;font-weight:900;font-size:12px}.exam-main h3{font-size:15px;margin:0 0 4px}.exam-main p{font-size:11px;color:var(--muted);margin:0}.badge{padding:7px 10px;border-radius:999px;font-size:10px;font-weight:900}.badge-active{background:#e7f7ef;color:#21815c}.badge-passive{background:#f0efed;color:#827c85}.badge-premium{background:#eee9ff;color:#6246d8}.badge-normal{background:#edf3f7;color:#60717e}.row-arrow{color:var(--purple);font-size:18px}.empty-state{background:#fff;border:1px dashed #d7d2da;border-radius:20px;padding:50px;text-align:center;color:var(--muted)}.empty-state strong{display:block;color:var(--text);font-size:18px}.empty-state p{font-size:13px}
.settings-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;margin-bottom:34px}.settings-grid{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px;align-items:end}.settings-grid label{display:grid;gap:7px}.settings-grid label span{font-size:11px;font-weight:800;color:#77717c}.settings-grid input,.settings-grid select{height:46px;border:1px solid var(--line);border-radius:12px;background:#faf9f7;padding:0 13px;font-size:13px;outline:none}.settings-grid button{height:46px}.section-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:14px}.section-title h2{margin:5px 0 0;font-size:23px}.section-title>span{font-size:12px;color:var(--muted)}
.question-list{display:grid;gap:9px}.question-row{background:#fff;border:1px solid var(--line);border-radius:16px;padding:11px 14px;display:grid;grid-template-columns:42px 92px 1fr auto;gap:14px;align-items:center}.q-number{font-size:12px;font-weight:900;color:#8b8490;text-align:center}.q-thumb{width:92px;height:68px;border-radius:10px;background:#f4f2ef;overflow:hidden;border:1px solid #ebe7e3}.q-thumb img{width:100%;height:100%;object-fit:contain;background:#fff}.q-meta{display:grid;gap:3px}.q-meta strong{font-size:13px}.q-meta span{font-size:12px;color:#6f6874}.q-meta small{font-size:11px;color:#9a949e}.answer-chip{min-width:78px;text-align:center;border-left:1px solid var(--line);padding-left:16px}.answer-chip span{display:block;font-size:9px;color:#99929d;margin-bottom:4px}.answer-chip strong{font-size:20px;color:var(--purple)}
@media(max-width:900px){.upload-card{grid-template-columns:1fr}.upload-form{flex-direction:column}.upload-form button{height:48px}.exam-row{grid-template-columns:44px 1fr auto}.exam-row .badge-normal,.exam-row .badge-premium,.row-arrow{display:none}.settings-grid{grid-template-columns:1fr}.question-row{grid-template-columns:34px 72px 1fr}.q-thumb{width:72px;height:58px}.answer-chip{grid-column:3;border-left:0;text-align:left;padding-left:0}.answer-chip span,.answer-chip strong{display:inline;font-size:11px;margin-right:5px}}

.question-row{grid-template-columns:42px 92px 1fr auto auto}.edit-q{border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:11px;font-weight:800;background:#faf9f7}.danger-zone{margin-top:34px;border:1px solid #f0d7d7;background:#fffafa;border-radius:18px;padding:18px 20px;display:flex;justify-content:space-between;align-items:center}.danger-zone strong{font-size:13px}.danger-zone p{font-size:11px;color:var(--muted);margin:4px 0 0}.danger-zone a{color:#a23b3b;border:1px solid #eccaca;border-radius:11px;padding:10px 13px;font-size:11px;font-weight:800}.question-editor{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.6fr);gap:22px;align-items:start}.editor-image,.editor-form{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px}.editor-image img{width:100%;max-height:70vh;object-fit:contain}.editor-form{display:grid;gap:14px}.editor-form label{display:grid;gap:7px}.editor-form label span{font-size:11px;font-weight:800;color:#77717c}.editor-form select{height:46px;border:1px solid var(--line);border-radius:12px;background:#faf9f7;padding:0 12px}.editor-form button{height:48px;border:0;border-radius:12px;background:var(--text);color:#fff;font-weight:800;cursor:pointer}.catalog-note{font-size:11px;line-height:1.5;color:#706879;background:#f5f2ff;border-radius:11px;padding:11px}.delete-confirm{max-width:620px;background:#fff;border:1px solid #f0d7d7;border-radius:20px;padding:25px}.delete-confirm p{color:var(--muted);font-size:13px}.delete-confirm form{display:flex;gap:10px;margin-top:20px}.delete-confirm button{border:0;border-radius:11px;background:#9d3434;color:#fff;padding:12px 16px;font-weight:800}.delete-confirm a{border:1px solid var(--line);border-radius:11px;padding:12px 16px;font-size:12px;font-weight:800}
@media(max-width:900px){.question-row{grid-template-columns:34px 72px 1fr}.edit-q{grid-column:3;width:max-content}.question-editor{grid-template-columns:1fr}.danger-zone{align-items:flex-start;gap:15px;flex-direction:column}}

.publish-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px 20px;margin:-18px 0 34px;display:grid;grid-template-columns:1fr auto auto;gap:22px;align-items:center}.publish-card h3{margin:7px 0 5px;font-size:16px}.publish-card p{margin:0;color:var(--muted);font-size:11px;line-height:1.5;max-width:620px}.publish-meta{display:grid;grid-template-columns:auto auto;gap:5px 10px;align-items:center;font-size:10px}.publish-meta span{color:var(--muted);font-weight:800}.publish-meta code{background:#f5f2ff;padding:5px 7px;border-radius:7px;color:var(--purple)}.package-test{background:var(--text);color:#fff;border-radius:11px;padding:11px 13px;font-size:11px;font-weight:800;white-space:nowrap}.package-locked{background:#f3f1ef;color:#817a83;border-radius:11px;padding:11px 13px;font-size:10px;font-weight:800;white-space:nowrap}
@media(max-width:900px){.publish-card{grid-template-columns:1fr}.publish-meta{width:max-content}}

/* Exam ZIP upload progress */
.upload-form{flex-wrap:wrap}.upload-progress,.upload-result{flex-basis:100%;width:100%}.upload-progress{margin-top:4px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:#faf9f7}.upload-progress-head,.upload-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.upload-progress-head{font-size:12px}.upload-progress-head span{font-weight:800}.upload-progress-track{height:8px;margin:10px 0 8px;border-radius:999px;background:#e8e5eb;overflow:hidden}.upload-progress-bar{height:100%;width:0;border-radius:inherit;background:var(--text);transition:width .15s ease}.upload-progress-meta{font-size:11px;color:var(--muted)}.upload-form.is-uploading .file-picker{pointer-events:none;opacity:.65}.upload-form button:disabled{cursor:not-allowed;opacity:.55}.upload-result{padding:11px 13px;border-radius:12px;font-size:12px;font-weight:700}.upload-result.error{display:block;background:#fff1f1;color:#9b2c2c;border:1px solid #f0cccc}
