:root {
    --primary: #116466;
    --primary-dark: #0a4547;
    --primary-soft: #e4f3f1;
    --accent: #e4a11b;
    --ink: #173042;
    --muted: #677985;
    --line: #dbe4e8;
    --surface: #ffffff;
    --surface-soft: #f5f8f9;
    --danger: #b42318;
    --danger-soft: #fff0ee;
    --success: #087a55;
    --success-soft: #e9f8f1;
    --warning: #9a6700;
    --warning-soft: #fff7dc;
    --shadow: 0 12px 32px rgba(23, 48, 66, .08);
    --radius: 18px;
    --sidebar: 270px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); background: var(--surface-soft); }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
img { max-width: 100%; }
.container { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.muted { color: var(--muted); }
.text-primary { color: var(--primary); }
.text-right { text-align: right; }
.full-span { grid-column: 1 / -1; }

.brand { display: inline-flex; align-items: center; gap: 12px; color: var(--ink); }
.brand > span:last-child { display: flex; flex-direction: column; line-height: 1.15; }
.brand strong { font-size: 17px; letter-spacing: -.2px; }
.brand small { margin-top: 4px; font-size: 12px; color: var(--muted); }
.brand-mark { width: 43px; height: 43px; display: grid; place-items: center; border-radius: 13px; background: var(--primary); color: #fff; font-size: 14px; font-weight: 800; letter-spacing: .5px; box-shadow: 0 8px 18px rgba(17, 100, 102, .22); }
.brand-light, .brand-light small { color: #fff; }

.button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; padding: 10px 16px; border: 1px solid transparent; border-radius: 11px; font-weight: 700; font-size: 14px; transition: .18s ease; }
.button:hover { transform: translateY(-1px); }
.button-primary { background: var(--primary); color: #fff; box-shadow: 0 8px 18px rgba(17, 100, 102, .16); }
.button-primary:hover { background: var(--primary-dark); }
.button-light { background: #fff; color: var(--ink); border-color: var(--line); }
.button-light:hover { border-color: #b8c8ce; background: #f9fbfb; }
.button-white { background: #fff; color: var(--primary-dark); }
.button-danger-soft { background: var(--danger-soft); color: var(--danger); border-color: #ffd3ce; }
.button-small { min-height: 34px; padding: 7px 10px; border-radius: 9px; font-size: 12px; }
.button-large { min-height: 50px; padding-inline: 22px; }
.button-block { width: 100%; }

.eyebrow { display: inline-block; font-size: 11px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; }

/* Landing */
.landing-body { background: #fff; }
.landing-header { min-height: 86px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.landing-nav { display: flex; align-items: center; gap: 26px; font-size: 14px; font-weight: 650; }
.landing-nav > a:not(.button):hover { color: var(--primary); }
.hero { min-height: 650px; display: grid; grid-template-columns: 1.04fr .96fr; align-items: center; gap: 60px; padding-block: 64px 90px; }
.hero-copy h1 { margin: 18px 0 22px; max-width: 690px; font-size: clamp(44px, 5.2vw, 72px); line-height: 1.02; letter-spacing: -3px; }
.hero-copy > p { max-width: 650px; margin: 0; font-size: 19px; line-height: 1.7; color: var(--muted); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.hero-trust { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 28px; font-size: 13px; color: var(--muted); }
.hero-trust span { display: inline-flex; align-items: center; gap: 6px; }
.hero-visual { position: relative; min-height: 450px; display: grid; place-items: center; }
.lab-window { width: 100%; max-width: 540px; border: 1px solid #cbd9de; border-radius: 24px; overflow: hidden; background: #fff; box-shadow: 0 32px 70px rgba(23, 48, 66, .17); transform: rotate(1.5deg); }
.lab-window-bar { height: 42px; display: flex; align-items: center; gap: 7px; padding: 0 16px; background: #edf3f4; border-bottom: 1px solid #d7e1e5; }
.lab-window-bar span { width: 9px; height: 9px; border-radius: 50%; background: #a9bbc2; }
.lab-screen { padding: 30px; background: linear-gradient(145deg, #f8fbfb, #edf5f4); }
.simulation-card { padding: 25px; border: 1px solid #d7e4e5; border-radius: 17px; background: #fff; }
.simulation-label { font-size: 10px; font-weight: 800; letter-spacing: 1.2px; color: var(--primary); }
.caliper { position: relative; height: 160px; margin-top: 15px; }
.caliper-rule { position: absolute; left: 7%; right: 5%; top: 64px; height: 24px; border: 3px solid #49626e; border-radius: 3px; background: repeating-linear-gradient(90deg, transparent 0 8px, #49626e 8px 9px); }
.caliper-jaw { position: absolute; top: 38px; width: 18px; height: 80px; border: 4px solid #49626e; background: #f7fbfb; }
.jaw-left { left: 15%; border-right: 0; }
.jaw-right { right: 23%; border-left: 0; }
.sample-bar { position: absolute; left: 34%; right: 40%; top: 46px; height: 70px; border-radius: 8px; background: linear-gradient(90deg, #9b673a, #d89f62, #8c5a31); box-shadow: inset 0 0 0 3px rgba(90, 50, 20, .18); }
.measure-result { display: flex; justify-content: space-between; gap: 20px; padding-top: 17px; border-top: 1px solid var(--line); font-size: 13px; }
.measure-result strong { color: var(--primary); }
.screen-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; }
.screen-stats div { display: flex; flex-direction: column; gap: 4px; padding: 16px; border-radius: 13px; background: #fff; border: 1px solid #dae6e7; }
.screen-stats span { color: var(--muted); font-size: 11px; }
.screen-stats strong { font-size: 18px; }
.floating-note { position: absolute; padding: 11px 15px; border-radius: 999px; background: #fff; font-size: 12px; font-weight: 750; box-shadow: var(--shadow); border: 1px solid #dce6e9; }
.note-one { left: -5px; top: 80px; }
.note-two { right: 0; bottom: 70px; }
.section-block { padding-block: 96px; }
.section-soft { background: #f3f8f7; }
.section-heading { max-width: 720px; margin-bottom: 42px; }
.section-heading h2 { margin: 13px 0 14px; font-size: clamp(32px, 4vw, 48px); line-height: 1.1; letter-spacing: -1.5px; }
.section-heading p { margin: 0; color: var(--muted); font-size: 17px; line-height: 1.7; }
.feature-grid, .module-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.feature-card { padding: 28px; border-radius: var(--radius); background: #fff; border: 1px solid #dce7e7; box-shadow: 0 8px 20px rgba(23, 48, 66, .04); }
.feature-icon { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 13px; background: var(--primary-soft); color: var(--primary); font-size: 22px; }
.feature-card h3, .module-card h3 { margin: 20px 0 9px; font-size: 20px; }
.feature-card p, .module-card p { margin: 0; color: var(--muted); line-height: 1.65; }
.module-grid { grid-template-columns: repeat(3, 1fr); }
.module-card { position: relative; min-height: 220px; padding: 28px; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: #fff; }
.module-card > span { display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: var(--ink); color: #fff; font-weight: 800; font-size: 12px; }
.module-card::after { content: ''; position: absolute; width: 90px; height: 90px; right: -45px; bottom: -45px; border-radius: 50%; background: var(--primary-soft); }
.section-dark { background: var(--ink); color: #fff; }
.heading-light p { color: #bbcad2; }
.steps-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.steps-grid > div { padding-top: 22px; border-top: 1px solid rgba(255,255,255,.22); }
.steps-grid strong { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--accent); color: #342506; }
.steps-grid h3 { margin: 20px 0 8px; }
.steps-grid p { margin: 0; color: #b9c7ce; line-height: 1.65; }
.landing-footer { min-height: 120px; display: flex; align-items: center; justify-content: space-between; gap: 25px; }
.landing-footer p { color: var(--muted); font-size: 13px; }

/* Auth */
.auth-body { min-height: 100vh; background: #fff; }
.auth-shell { min-height: 100vh; display: grid; grid-template-columns: 1.05fr .95fr; }
.auth-panel { min-height: 100vh; padding: clamp(34px, 5vw, 72px); }
.auth-visual { display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; color: #fff; background: linear-gradient(145deg, #0b4d4f, #116466 60%, #1f7b78); }
.auth-visual::before, .auth-visual::after { content: ''; position: absolute; border-radius: 50%; border: 1px solid rgba(255,255,255,.12); }
.auth-visual::before { width: 520px; height: 520px; right: -200px; top: 50px; }
.auth-visual::after { width: 350px; height: 350px; left: -180px; bottom: -90px; }
.auth-message { position: relative; max-width: 650px; z-index: 1; }
.auth-message h1 { margin: 16px 0 20px; font-size: clamp(42px, 5vw, 66px); line-height: 1.05; letter-spacing: -2.4px; }
.auth-message p { margin: 0; max-width: 580px; color: rgba(255,255,255,.78); font-size: 17px; line-height: 1.7; }
.visual-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.visual-grid div { padding: 18px; border-radius: 14px; background: rgba(255,255,255,.09); border: 1px solid rgba(255,255,255,.13); backdrop-filter: blur(6px); }
.visual-grid strong, .visual-grid span { display: block; }
.visual-grid strong { font-size: 25px; }
.visual-grid span { margin-top: 5px; color: rgba(255,255,255,.7); font-size: 11px; }
.auth-form-panel { display: grid; place-items: center; background: #fff; }
.auth-form-wrap { width: min(450px, 100%); }
.auth-form-wrap h2 { margin: 12px 0 8px; font-size: 34px; letter-spacing: -1px; }
.auth-form-wrap > p { margin: 0 0 26px; }
.mobile-brand { display: none; margin-bottom: 30px; font-weight: 800; color: var(--primary); }
.form-stack { display: grid; gap: 18px; }
.demo-box { margin-top: 22px; display: grid; gap: 5px; padding: 15px 17px; border-radius: 12px; background: var(--surface-soft); border: 1px solid var(--line); font-size: 12px; color: var(--muted); }
.demo-box strong { color: var(--ink); margin-bottom: 3px; }

/* Application shell */
.app-body { min-height: 100vh; }
.app-shell { min-height: 100vh; display: grid; grid-template-columns: var(--sidebar) 1fr; }
.sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; padding: 24px 18px 18px; background: #fff; border-right: 1px solid var(--line); z-index: 40; }
.sidebar .brand { margin: 0 8px 28px; }
.sidebar-nav { display: flex; flex-direction: column; gap: 5px; overflow-y: auto; }
.nav-label { margin: 22px 12px 8px; font-size: 10px; font-weight: 800; letter-spacing: 1.2px; color: #97a8b0; }
.nav-link { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 10px 12px; border-radius: 11px; color: #4e626e; font-size: 14px; font-weight: 650; }
.nav-link:hover { background: #f4f8f8; color: var(--primary); }
.nav-link.active { background: var(--primary-soft); color: var(--primary-dark); }
.nav-icon { width: 23px; display: inline-grid; place-items: center; font-size: 19px; }
.sidebar-profile { margin-top: auto; display: flex; align-items: center; gap: 10px; padding: 14px 10px 4px; border-top: 1px solid var(--line); }
.avatar { width: 38px; height: 38px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 11px; background: var(--primary); color: #fff; font-weight: 800; }
.avatar-small { width: 34px; height: 34px; border-radius: 9px; font-size: 12px; }
.profile-copy { min-width: 0; display: flex; flex-direction: column; }
.profile-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.profile-copy small { margin-top: 3px; color: var(--muted); font-size: 10px; }
.app-main { min-width: 0; }
.topbar { min-height: 88px; display: flex; align-items: center; gap: 16px; padding: 16px 28px; background: rgba(245,248,249,.92); border-bottom: 1px solid var(--line); backdrop-filter: blur(10px); }
.topbar h1 { margin: 0; font-size: 22px; letter-spacing: -.5px; }
.topbar p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.topbar-actions { margin-left: auto; }
.menu-toggle { display: none; }
.icon-button { width: 42px; height: 42px; border: 1px solid var(--line); border-radius: 11px; background: #fff; color: var(--ink); }
.content { padding: 28px; }
.sidebar-overlay { display: none; }

/* General panels and data */
.welcome-card { display: flex; align-items: center; justify-content: space-between; gap: 30px; padding: 30px; border-radius: 20px; color: #fff; background: linear-gradient(120deg, var(--primary-dark), var(--primary)); box-shadow: var(--shadow); }
.welcome-card h2 { margin: 10px 0 8px; font-size: 28px; }
.welcome-card p { margin: 0; max-width: 700px; color: rgba(255,255,255,.76); line-height: 1.6; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 20px 0; }
.stat-card { display: flex; flex-direction: column; padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: #fff; box-shadow: 0 7px 20px rgba(23,48,66,.04); }
.stat-card span { color: var(--muted); font-size: 12px; }
.stat-card strong { margin: 8px 0 5px; font-size: 31px; letter-spacing: -1px; }
.stat-card small { color: #9aabb3; font-size: 10px; }
.dashboard-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 20px; }
.panel { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 7px 22px rgba(23,48,66,.04); overflow: hidden; }
.panel-header { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 22px; border-bottom: 1px solid var(--line); }
.panel-header h3 { margin: 0; font-size: 16px; }
.panel-header p { margin: 5px 0 0; color: var(--muted); font-size: 11px; }
.panel-header > a { color: var(--primary); font-size: 12px; font-weight: 750; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 14px 16px; text-align: left; border-bottom: 1px solid #e8eef0; vertical-align: middle; font-size: 12px; }
th { background: #fbfcfc; color: #71838c; font-size: 10px; letter-spacing: .35px; text-transform: uppercase; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #fbfdfd; }
td strong, td small { display: block; }
td small { margin-top: 4px; color: var(--muted); font-size: 10px; }
.actions-cell { display: flex; justify-content: flex-end; align-items: center; gap: 6px; white-space: nowrap; }
.actions-cell form { display: inline-flex; }
.activity-list { padding: 6px 18px 14px; }
.activity-item { display: grid; grid-template-columns: 38px 1fr 20px; align-items: center; gap: 12px; padding: 13px 3px; border-bottom: 1px solid #e8eef0; }
.activity-item:last-child { border-bottom: 0; }
.activity-item:hover strong { color: var(--primary); }
.activity-number { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: var(--primary-soft); color: var(--primary); font-size: 11px; font-weight: 800; }
.activity-item strong, .activity-item small { display: block; }
.activity-item strong { font-size: 12px; }
.activity-item small { margin-top: 4px; color: var(--muted); font-size: 10px; }
.activity-arrow { color: var(--primary); font-size: 24px; }

.page-actions { display: flex; justify-content: space-between; gap: 16px; align-items: center; margin-bottom: 18px; }
.search-form, .filter-form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.search-form input { width: min(360px, 70vw); }
.filter-form input { width: min(300px, 70vw); }
.filter-form select { min-width: 150px; }

input, select, textarea { width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid #cfdade; border-radius: 10px; background: #fff; color: var(--ink); outline: none; transition: .16s ease; }
textarea { resize: vertical; line-height: 1.6; }
input:focus, select:focus, textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(17,100,102,.11); }
input::placeholder, textarea::placeholder { color: #a7b4ba; }
.field { display: flex; flex-direction: column; gap: 7px; }
.field label { font-size: 12px; font-weight: 750; }
.field label span { color: var(--danger); }
.field small { color: var(--muted); font-size: 10px; line-height: 1.45; }
.password-wrap { position: relative; }
.password-wrap input { padding-right: 67px; }
.password-toggle { position: absolute; right: 6px; top: 6px; min-height: 32px; padding: 5px 8px; border: 0; border-radius: 7px; background: #edf3f4; color: var(--primary-dark); font-size: 10px; font-weight: 750; }
.check-row { display: flex; align-items: center; gap: 9px; font-size: 12px; color: var(--muted); }
.check-row input { width: 16px; height: 16px; min-height: 0; accent-color: var(--primary); }
.form-panel { padding: 24px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 19px; }
.field-span-2 { grid-column: 1 / -1; }
.form-actions { display: flex; justify-content: flex-end; gap: 9px; padding-top: 24px; margin-top: 24px; border-top: 1px solid var(--line); }
.switch-row { display: flex; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fbfcfc; }
.switch-row > input[type="checkbox"] { width: 38px; min-height: 22px; accent-color: var(--primary); }
.switch-row > input[type="hidden"] { display: none; }
.switch-row span { display: flex; flex-direction: column; gap: 3px; }
.switch-row strong { font-size: 12px; }
.switch-row small { color: var(--muted); font-size: 10px; }
.form-section { margin-top: 26px; padding-top: 24px; border-top: 1px solid var(--line); }
.form-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 15px; }
.form-section-heading h3 { margin: 0; font-size: 15px; }
.form-section-heading p { margin: 4px 0 0; color: var(--muted); font-size: 10px; }
.student-filter { max-width: 280px; }
.check-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; max-height: 330px; overflow-y: auto; padding: 2px; }
.student-check { display: flex; align-items: center; gap: 9px; padding: 11px; border: 1px solid var(--line); border-radius: 11px; cursor: pointer; }
.student-check:hover { border-color: #abc4c5; background: #fbfdfd; }
.student-check > input { width: 15px; height: 15px; min-height: 0; accent-color: var(--primary); }
.student-check > span:last-child { min-width: 0; }
.student-check strong, .student-check small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.student-check strong { font-size: 11px; }
.student-check small { margin-top: 3px; color: var(--muted); font-size: 9px; }

.badge { display: inline-flex; align-items: center; min-height: 24px; padding: 4px 8px; border-radius: 999px; font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .25px; }
.badge-success { color: var(--success); background: var(--success-soft); }
.badge-warning { color: var(--warning); background: var(--warning-soft); }
.badge-muted { color: #687a84; background: #edf2f4; }
.badge-info { color: #155f88; background: #e9f5fb; }
.sequence-pill { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; background: var(--primary-soft); color: var(--primary); font-weight: 800; }

.alert { position: relative; display: flex; align-items: flex-start; gap: 10px; margin-bottom: 16px; padding: 13px 42px 13px 14px; border-radius: 11px; font-size: 12px; line-height: 1.5; }
.alert > span:first-child { width: 22px; height: 22px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; font-weight: 850; }
.alert ul { margin: 6px 0 0; padding-left: 18px; }
.alert-success { background: var(--success-soft); color: #075f43; border: 1px solid #c8eddd; }
.alert-success > span:first-child { background: #c7ebdc; }
.alert-danger { background: var(--danger-soft); color: #8d1c14; border: 1px solid #ffd1cc; }
.alert-danger > span:first-child { background: #ffd2cd; }
.alert-close { position: absolute; top: 7px; right: 8px; border: 0; background: transparent; color: inherit; font-size: 20px; }

.practicum-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.practicum-card { display: flex; flex-direction: column; min-height: 315px; padding: 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 8px 24px rgba(23,48,66,.04); }
.practicum-card:hover { transform: translateY(-2px); border-color: #b8cecf; box-shadow: var(--shadow); transition: .18s ease; }
.practicum-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.practicum-sequence { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; background: var(--ink); color: #fff; font-size: 12px; font-weight: 800; }
.practicum-card h3 { margin: 10px 0 10px; font-size: 20px; letter-spacing: -.4px; }
.practicum-card > p { margin: 0; color: var(--muted); line-height: 1.6; font-size: 12px; }
.practicum-meta { display: flex; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 20px; color: var(--muted); font-size: 10px; }
.card-link { display: flex; justify-content: space-between; align-items: center; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); color: var(--primary); font-size: 12px; font-weight: 800; }
.detail-hero { display: grid; grid-template-columns: 1fr 150px; gap: 35px; align-items: center; padding: 34px; border-radius: 22px; color: #fff; background: linear-gradient(125deg, var(--primary-dark), #147f7c); box-shadow: var(--shadow); }
.detail-hero h2 { margin: 10px 0 12px; font-size: 34px; letter-spacing: -1px; }
.detail-hero p { margin: 0; max-width: 790px; color: rgba(255,255,255,.78); line-height: 1.65; }
.detail-meta { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 24px; color: rgba(255,255,255,.72); font-size: 11px; }
.detail-meta strong { color: #fff; }
.detail-illustration { width: 120px; height: 120px; display: grid; place-items: center; border-radius: 30px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.17); font-size: 55px; }
.detail-grid { display: grid; grid-template-columns: 1fr 390px; gap: 18px; margin-top: 18px; }
.prose-box { padding: 22px; line-height: 1.8; color: #465d69; font-size: 13px; }
.stage-list { display: grid; padding: 8px 22px 18px; }
.stage-list div { display: grid; grid-template-columns: 29px 1fr; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.stage-list div:last-child { border-bottom: 0; }
.stage-list span { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 50%; background: #edf2f4; color: #6f828b; font-size: 10px; font-weight: 800; }
.stage-list strong { font-size: 11px; }
.stage-list .done span { background: var(--success-soft); color: var(--success); }
.notice-card { display: flex; justify-content: space-between; align-items: center; gap: 25px; margin-top: 18px; padding: 20px 22px; border: 1px solid #ead8a6; border-radius: 15px; background: #fff9e9; }
.notice-card strong { font-size: 13px; }
.notice-card p { margin: 5px 0 0; color: #7d6a33; font-size: 11px; }

.empty-inline, .empty-state { padding: 30px; text-align: center; color: var(--muted); }
.empty-state { border: 1px dashed #c9d5da; border-radius: var(--radius); background: #fff; }
.empty-state strong { display: block; color: var(--ink); }
.empty-state p { margin: 8px 0 0; font-size: 12px; }
.pagination-wrap { display: flex; justify-content: center; margin-top: 20px; }
.pagination { display: flex; align-items: center; gap: 5px; margin: 0; padding: 0; list-style: none; }
.page-item a, .page-item span { min-width: 36px; height: 36px; display: grid; place-items: center; padding: 0 9px; border: 1px solid var(--line); border-radius: 9px; background: #fff; font-size: 11px; }
.page-item.active span { background: var(--primary); border-color: var(--primary); color: #fff; }
.page-item.disabled span { color: #a8b5bb; background: #f2f5f6; }

.error-body { min-height: 100vh; display: grid; place-items: center; padding: 25px; background: var(--surface-soft); }
.error-card { width: min(480px, 100%); padding: 42px; text-align: center; border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: var(--shadow); }
.error-code { color: var(--primary); font-size: 60px; font-weight: 900; letter-spacing: -3px; }
.error-card h1 { margin: 6px 0 10px; }
.error-card p { margin: 0 0 23px; color: var(--muted); line-height: 1.6; }

@media (max-width: 1080px) {
    .hero { grid-template-columns: 1fr; }
    .hero-visual { min-height: 410px; }
    .auth-shell { grid-template-columns: .9fr 1.1fr; }
    .dashboard-grid, .detail-grid { grid-template-columns: 1fr; }
    .practicum-grid { grid-template-columns: repeat(2, 1fr); }
    .check-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 900px) {
    .legacy-lab-notice { align-items: stretch; flex-direction: column; }
    :root { --sidebar: 260px; }
    .app-shell { display: block; }
    .sidebar { position: fixed; left: 0; top: 0; transform: translateX(-100%); transition: transform .22s ease; box-shadow: 15px 0 40px rgba(23,48,66,.16); }
    .sidebar.open { transform: translateX(0); }
    .sidebar-overlay { position: fixed; inset: 0; background: rgba(13,34,45,.38); z-index: 35; }
    .sidebar-overlay.show { display: block; }
    .menu-toggle { display: inline-grid; place-items: center; }
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
    .auth-shell { display: block; }
    .auth-visual { display: none; }
    .auth-panel { min-height: 100vh; }
    .mobile-brand { display: inline-block; }
    .feature-grid, .module-grid { grid-template-columns: repeat(2, 1fr); }
    .steps-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 680px) {
    .container { width: min(100% - 28px, 1180px); }
    .landing-header { min-height: 72px; }
    .landing-nav > a:not(.button) { display: none; }
    .hero { padding-block: 50px 65px; gap: 30px; }
    .hero-copy h1 { letter-spacing: -2px; }
    .hero-copy > p { font-size: 16px; }
    .hero-visual { min-height: 310px; }
    .lab-screen { padding: 16px; }
    .caliper { height: 130px; }
    .floating-note { display: none; }
    .feature-grid, .module-grid, .steps-grid, .practicum-grid { grid-template-columns: 1fr; }
    .section-block { padding-block: 68px; }
    .landing-footer { align-items: flex-start; flex-direction: column; justify-content: center; }
    .auth-panel { padding: 28px 20px; }
    .content { padding: 18px 14px 30px; }
    .topbar { padding: 13px 14px; min-height: 76px; }
    .topbar p { display: none; }
    .topbar h1 { font-size: 18px; }
    .topbar-actions .button { min-height: 38px; padding: 8px 11px; }
    .welcome-card { align-items: flex-start; flex-direction: column; padding: 23px; }
    .welcome-card h2 { font-size: 23px; }
    .stats-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
    .stat-card { padding: 16px; }
    .stat-card strong { font-size: 25px; }
    .page-actions { align-items: stretch; flex-direction: column; }
    .search-form, .filter-form { display: grid; grid-template-columns: 1fr auto; }
    .filter-form select { grid-column: 1 / -1; }
    .search-form input, .filter-form input { width: 100%; }
    .form-grid { grid-template-columns: 1fr; }
    .field-span-2 { grid-column: auto; }
    .form-panel { padding: 17px; }
    .check-grid { grid-template-columns: 1fr; }
    .form-section-heading { align-items: stretch; flex-direction: column; }
    .student-filter { max-width: none; }
    .form-actions { flex-direction: column-reverse; }
    .form-actions .button { width: 100%; }
    .detail-hero { grid-template-columns: 1fr; padding: 24px; }
    .detail-hero h2 { font-size: 27px; }
    .detail-illustration { display: none; }
    .notice-card { align-items: flex-start; flex-direction: column; }
    .notice-card .button { width: 100%; }
    .table-wrap { border-radius: 0; }
    th, td { white-space: nowrap; }
}

/* V-Lab V2: Besaran dan Pengukuran */
.lab-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; color: var(--muted); font-size: 11px; }
.lab-breadcrumb a:hover { color: var(--primary); }
.lab-breadcrumb strong { color: var(--ink); }
.lab-intro-hero { display: grid; grid-template-columns: 1fr 160px; align-items: center; gap: 32px; padding: 36px; border-radius: 24px; color: #fff; background: linear-gradient(125deg, #0a4547 0%, #116466 60%, #21817e 100%); box-shadow: var(--shadow); }
.lab-intro-hero h2 { max-width: 780px; margin: 10px 0 14px; font-size: clamp(28px, 4vw, 42px); line-height: 1.1; letter-spacing: -1.4px; }
.lab-intro-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.78); line-height: 1.7; }
.lab-intro-badges { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 24px; }
.lab-intro-badges span { padding: 8px 11px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; background: rgba(255,255,255,.09); font-size: 10px; font-weight: 700; }
.measurement-icon { width: 130px; height: 130px; display: grid; place-items: center; border-radius: 32px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); font-size: 70px; font-weight: 300; }
.theory-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 18px; }
.theory-card { position: relative; min-height: 190px; padding: 23px; overflow: hidden; }
.theory-number { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; color: var(--primary); background: var(--primary-soft); font-size: 11px; font-weight: 900; }
.theory-card h3 { margin: 18px 0 8px; }
.theory-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
.lab-start-grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: 18px; margin-top: 18px; }
.procedure-list { display: grid; gap: 0; margin: 0; padding: 0 22px 22px; list-style: none; }
.procedure-list li { display: grid; grid-template-columns: 36px 1fr; gap: 12px; padding: 15px 0; border-bottom: 1px solid var(--line); }
.procedure-list li:last-child { border-bottom: 0; }
.procedure-list li > span { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 10px; background: var(--ink); color: #fff; font-size: 11px; font-weight: 800; }
.procedure-list strong { font-size: 12px; }
.procedure-list p { margin: 4px 0 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
.start-panel { padding-bottom: 22px; }
.lab-start-form { display: grid; gap: 18px; padding: 0 22px; }
.instrument-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.instrument-option { display: grid; grid-template-columns: auto 42px 1fr; align-items: center; gap: 10px; min-height: 96px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: #fff; cursor: pointer; transition: .18s ease; }
.instrument-option:hover { border-color: #a9c8c8; }
.instrument-option:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); box-shadow: inset 0 0 0 1px var(--primary); }
.instrument-option.is-disabled { opacity: .42; cursor: not-allowed; }
.instrument-option input { accent-color: var(--primary); }
.instrument-symbol { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 11px; color: var(--primary); background: #fff; border: 1px solid #d6e3e4; font-size: 22px; }
.instrument-option strong, .instrument-option small { display: block; }
.instrument-option strong { font-size: 11px; }
.instrument-option small { margin-top: 4px; color: var(--muted); font-size: 9px; line-height: 1.4; }
.history-panel { margin-top: 18px; }
.score-pill { min-width: 36px; height: 30px; display: inline-grid; place-items: center; border-radius: 9px; color: var(--success); background: var(--success-soft); font-weight: 850; }
.module-ready-card { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 30px; margin-top: 18px; padding: 30px; border-radius: 20px; color: #fff; background: linear-gradient(120deg, #0a4547, #116466); box-shadow: var(--shadow); }
.module-ready-copy h3 { margin: 10px 0 9px; font-size: 26px; }
.module-ready-copy > p { max-width: 750px; margin: 0; color: rgba(255,255,255,.76); line-height: 1.65; }
.module-feature-list { display: flex; flex-wrap: wrap; gap: 9px 18px; margin-top: 20px; color: rgba(255,255,255,.86); font-size: 10px; font-weight: 700; }
.module-ready-action { min-width: 220px; display: flex; flex-direction: column; align-items: stretch; gap: 9px; text-align: center; }
.resume-label { color: rgba(255,255,255,.75); font-size: 10px; }
.experiment-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 24px 26px; border: 1px solid var(--line); border-radius: 18px; background: #fff; }
.experiment-header h2 { margin: 7px 0 6px; font-size: 26px; }
.experiment-header p { margin: 0; color: var(--muted); font-size: 12px; }
.experiment-header-actions { display: flex; align-items: center; gap: 12px; }
.attempt-status { display: inline-flex; align-items: center; gap: 7px; color: var(--success); font-size: 10px; font-weight: 800; }
.attempt-status i { width: 8px; height: 8px; border-radius: 50%; background: #12a273; box-shadow: 0 0 0 5px rgba(18,162,115,.12); }
.experiment-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .65fr); gap: 18px; margin-top: 18px; }
.simulator-panel { overflow: hidden; }
.simulator-toolbar { display: grid; grid-template-columns: repeat(3, 1fr); background: #f5f8f9; border-bottom: 1px solid var(--line); }
.simulator-toolbar > div { padding: 15px 18px; border-right: 1px solid var(--line); }
.simulator-toolbar > div:last-child { border-right: 0; }
.simulator-toolbar span, .simulator-toolbar strong { display: block; }
.simulator-toolbar span { color: var(--muted); font-size: 8px; letter-spacing: 1px; font-weight: 850; }
.simulator-toolbar strong { margin-top: 5px; font-size: 11px; }
.measurement-simulator { padding: 22px; }
.simulator-instruction { display: flex; align-items: center; gap: 11px; margin-bottom: 20px; padding: 13px 15px; border-radius: 13px; background: #eef6f5; }
.instruction-step { width: 28px; height: 28px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; color: #fff; background: var(--primary); font-size: 10px; font-weight: 800; }
.simulator-instruction strong { font-size: 11px; }
.simulator-instruction p { margin: 3px 0 0; color: var(--muted); font-size: 9px; }
.caliper-stage { position: relative; height: 260px; margin: 12px 0 18px; border: 1px solid #d8e4e6; border-radius: 18px; overflow: hidden; background: linear-gradient(#fbfdfd, #eef4f5); }
.caliper-beam { position: absolute; left: 12%; right: 8%; top: 104px; height: 34px; border: 2px solid #576e78; border-radius: 4px; background: linear-gradient(#eaf0f2, #cbd7dc); box-shadow: 0 4px 10px rgba(23,48,66,.1); }
.caliper-beam i { position: absolute; top: -2px; width: 1px; height: 12px; background: #344f5b; }
.caliper-beam i:nth-child(5n+1) { height: 20px; width: 2px; }
.caliper-beam small { position: absolute; top: 21px; left: -5px; color: #526873; font-size: 7px; font-style: normal; }
.fixed-jaw { position: absolute; left: calc(12% - 12px); top: 46px; width: 24px; height: 148px; border: 4px solid #415b67; border-right: 0; border-radius: 6px 0 0 6px; z-index: 3; }
.fixed-jaw span { position: absolute; left: 10px; top: 42px; width: 48px; height: 18px; border-top: 4px solid #415b67; }
.moving-jaw { position: absolute; top: 54px; width: 52px; height: 138px; transform: translateX(-8px); border: 4px solid #415b67; border-left: 0; border-radius: 0 7px 7px 0; background: rgba(224,233,236,.9); z-index: 4; transition: left .05s linear; }
.moving-jaw span { position: absolute; right: 40px; top: 34px; width: 40px; height: 18px; border-top: 4px solid #415b67; }
.moving-jaw b { position: absolute; left: 7px; bottom: 12px; color: #4b626d; font-size: 7px; letter-spacing: .8px; }
.civil-object { position: absolute; left: 12%; top: 84px; height: 72px; z-index: 2; transform-origin: left center; }
.object-round, .object-ribbed { height: 70px; border-radius: 999px; background: linear-gradient(90deg, #7d522f, #d79a5a 45%, #7e4f2c); box-shadow: inset 0 0 0 3px rgba(75,42,18,.16), 0 8px 16px rgba(55,32,18,.12); }
.object-ribbed { background: repeating-linear-gradient(75deg, #84552f 0 8px, #c48347 8px 13px, #704424 13px 18px); }
.object-pipe { height: 72px; border-radius: 8px; background: linear-gradient(#c8d1d5, #f5f7f8 45%, #aebbc0); box-shadow: inset 0 0 0 8px #c2cdd1, inset 0 0 0 13px #7d8f96; }
.object-plate { top: 102px; height: 35px; border-radius: 3px; background: linear-gradient(#87989f, #d3dbde, #74868e); box-shadow: inset 0 0 0 2px rgba(55,73,81,.18); }
.object-block { top: 65px; height: 108px; border-radius: 5px; background: repeating-linear-gradient(45deg, #a8a39a 0 8px, #b8b3aa 8px 16px); box-shadow: inset 0 0 0 3px rgba(72,68,62,.15); }
.ruler-stage { position: relative; height: 235px; margin: 12px 0 18px; border: 1px solid #d8e4e6; border-radius: 18px; overflow: hidden; background: linear-gradient(#fbfdfd, #eef4f5); }
.ruler-object { position: absolute; left: 4%; bottom: 80px; height: 65px; }
.ruler-scale { position: absolute; left: 4%; right: 4%; bottom: 35px; height: 36px; border: 2px solid #526a75; background: linear-gradient(#eaf0f2, #cbd6da); }
.ruler-scale i { position: absolute; top: 0; width: 1px; height: 16px; background: #334d59; }
.ruler-scale i small { position: absolute; top: 18px; left: -5px; font-size: 7px; font-style: normal; }
.ruler-pointer { position: absolute; bottom: 28px; width: 3px; height: 130px; background: var(--danger); z-index: 5; transition: left .05s linear; }
.ruler-pointer span { position: absolute; left: -7px; top: -3px; width: 17px; height: 17px; border-radius: 50%; background: var(--danger); box-shadow: 0 0 0 5px rgba(180,35,24,.12); }
.slider-control { padding: 0 4px; }
.slider-control label { display: block; margin-bottom: 9px; font-size: 10px; font-weight: 800; }
.slider-control input[type=range] { width: 100%; accent-color: var(--primary); }
.slider-labels { display: flex; justify-content: space-between; margin-top: 4px; color: var(--muted); font-size: 8px; }
.reading-panel { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; margin-top: 18px; }
.reading-panel > div { padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.reading-panel span, .reading-panel strong { display: block; }
.reading-panel span { color: var(--muted); font-size: 8px; }
.reading-panel strong { margin-top: 5px; font-size: 14px; }
.reading-panel .reading-total { border-color: #9ecaca; background: var(--primary-soft); }
.reading-panel .reading-total strong { color: var(--primary-dark); }
.contact-feedback { display: flex; align-items: center; gap: 10px; margin: 13px 0; padding: 12px 14px; border-radius: 12px; background: #f3f6f7; color: var(--muted); }
.contact-feedback > span { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; background: #e2eaed; font-size: 12px; font-weight: 900; }
.contact-feedback p { margin: 0; font-size: 9px; }
.contact-feedback.is-contact { color: var(--success); background: var(--success-soft); }
.contact-feedback.is-contact > span { background: #ccefe0; }
.contact-feedback.is-near { color: var(--warning); background: var(--warning-soft); }
.contact-feedback.is-near > span { background: #f7e9b9; }
.simulator-message { min-height: 18px; margin: 8px 0 0; text-align: center; color: var(--muted); font-size: 9px; }
.simulator-message.success { color: var(--success); }
.simulator-message.error { color: var(--danger); }
.button:disabled { cursor: not-allowed; opacity: .45; transform: none; }
.measurement-data-panel { overflow: hidden; }
.record-counter { min-width: 48px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: var(--surface-soft); color: var(--muted); font-size: 10px; }
.record-counter strong { color: var(--primary); font-size: 14px; }
.measurement-progress { height: 5px; margin: 0 22px 15px; overflow: hidden; border-radius: 999px; background: #e6edef; }
.measurement-progress span { display: block; height: 100%; border-radius: inherit; background: var(--primary); transition: width .2s ease; }
.measurement-records { display: grid; gap: 8px; padding: 0 18px; }
.measurement-record { display: grid; grid-template-columns: 34px 1fr 28px; align-items: center; gap: 10px; padding: 11px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.record-number { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 9px; color: #fff; background: var(--ink); font-size: 10px; font-weight: 850; }
.measurement-record strong, .measurement-record small { display: block; }
.measurement-record strong { font-size: 11px; }
.measurement-record small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.record-delete { width: 26px; height: 26px; border: 0; border-radius: 8px; color: var(--danger); background: var(--danger-soft); font-size: 16px; }
.empty-measurements { min-height: 175px; display: grid; place-items: center; align-content: center; text-align: center; color: var(--muted); }
.empty-measurements span { font-size: 30px; color: #a9b9bf; }
.empty-measurements strong { margin-top: 8px; color: var(--ink); font-size: 11px; }
.empty-measurements p { margin: 4px 0 0; font-size: 9px; }
.live-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 17px 18px 18px; padding-top: 15px; border-top: 1px solid var(--line); }
.live-summary div { padding: 12px; border-radius: 11px; background: var(--surface-soft); }
.live-summary span, .live-summary strong { display: block; }
.live-summary span { color: var(--muted); font-size: 8px; }
.live-summary strong { margin-top: 5px; font-size: 11px; }
.analysis-panel { margin-top: 18px; }
.analysis-lock { padding: 8px 10px; border-radius: 9px; color: var(--warning); background: var(--warning-soft); font-size: 9px; font-weight: 800; }
.analysis-lock.is-ready { color: var(--success); background: var(--success-soft); }
.analysis-form { display: grid; gap: 17px; padding: 0 22px 22px; }
.submit-note { display: flex; align-items: flex-start; gap: 9px; padding: 12px 14px; border-radius: 12px; color: #6c5a2b; background: #fff9e9; font-size: 9px; line-height: 1.5; }
.submit-note span { width: 22px; height: 22px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; color: #fff; background: var(--accent); font-weight: 850; }
.submit-note p { margin: 1px 0 0; }
.result-hero { display: grid; grid-template-columns: 1fr 150px; align-items: center; gap: 30px; padding: 32px; border-radius: 22px; color: #fff; background: linear-gradient(125deg, #0a4547, #116466 65%, #247f7c); box-shadow: var(--shadow); }
.result-hero h2 { margin: 9px 0 8px; font-size: 34px; }
.result-hero p { margin: 0; color: rgba(255,255,255,.76); }
.result-score { width: 132px; height: 132px; display: grid; place-items: center; align-content: center; border: 1px solid rgba(255,255,255,.18); border-radius: 30px; background: rgba(255,255,255,.1); }
.result-score span, .result-score small { color: rgba(255,255,255,.7); font-size: 9px; }
.result-score strong { font-size: 47px; line-height: 1; }
.result-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 18px; }
.result-metrics article { padding: 19px; border: 1px solid var(--line); border-radius: 16px; background: #fff; }
.result-metrics span, .result-metrics strong, .result-metrics small { display: block; }
.result-metrics span { color: var(--muted); font-size: 9px; }
.result-metrics strong { margin-top: 8px; font-size: 20px; }
.result-metrics small { margin-top: 5px; color: var(--muted); font-size: 8px; }
.result-layout { display: grid; grid-template-columns: 1fr 360px; gap: 18px; margin-top: 18px; }
.quality-indicator { display: flex; gap: 10px; margin: 0 18px 15px; padding: 13px; border-radius: 12px; }
.quality-indicator > span { width: 10px; height: 10px; margin-top: 3px; border-radius: 50%; flex: 0 0 auto; }
.quality-indicator strong { font-size: 11px; }
.quality-indicator p { margin: 4px 0 0; font-size: 9px; line-height: 1.5; }
.quality-good { color: var(--success); background: var(--success-soft); }
.quality-good > span { background: var(--success); }
.quality-medium { color: var(--warning); background: var(--warning-soft); }
.quality-medium > span { background: var(--warning); }
.quality-low { color: var(--danger); background: var(--danger-soft); }
.quality-low > span { background: var(--danger); }
.rubric-list { margin: 0; padding: 0 18px; list-style: none; }
.rubric-list li { display: flex; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 9px; }
.rubric-list li:last-child { border-bottom: 0; }
.review-note { margin: 15px 18px 18px; padding: 11px; border-radius: 10px; color: var(--muted); background: var(--surface-soft); font-size: 8px; line-height: 1.55; }
.written-result { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin-top: 18px; overflow: hidden; }
.written-result > div { padding: 22px; }
.written-result > div + div { border-left: 1px solid var(--line); }
.written-result span { color: var(--primary); font-size: 8px; font-weight: 850; letter-spacing: 1px; }
.written-result p { margin: 10px 0 0; color: #455d68; font-size: 11px; line-height: 1.7; white-space: pre-line; }
.result-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
.alert-info { color: #185b70; background: #e9f6fb; border-color: #c7e7f2; }
.alert-info > span:first-child { background: #c8e8f2; }

@media (max-width: 1180px) {
    .experiment-layout, .result-layout { grid-template-columns: 1fr; }
    .measurement-data-panel { min-height: 0; }
    .measurement-records { grid-template-columns: repeat(2, 1fr); }
    .empty-measurements { grid-column: 1 / -1; }
}

@media (max-width: 900px) {
    .theory-grid, .result-metrics { grid-template-columns: repeat(2, 1fr); }
    .lab-start-grid { grid-template-columns: 1fr; }
    .written-result { grid-template-columns: 1fr; }
    .written-result > div + div { border-left: 0; border-top: 1px solid var(--line); }
}

@media (max-width: 680px) {
    .lab-intro-hero, .result-hero { grid-template-columns: 1fr; padding: 24px; }
    .measurement-icon, .result-score { display: none; }
    .theory-grid, .result-metrics { grid-template-columns: 1fr; }
    .instrument-options { grid-template-columns: 1fr; }
    .experiment-header { align-items: flex-start; flex-direction: column; }
    .experiment-header-actions { width: 100%; justify-content: space-between; }
    .simulator-toolbar { grid-template-columns: 1fr; }
    .simulator-toolbar > div { border-right: 0; border-bottom: 1px solid var(--line); }
    .simulator-toolbar > div:last-child { border-bottom: 0; }
    .measurement-simulator { padding: 14px; }
    .caliper-stage, .ruler-stage { height: 220px; }
    .reading-panel { grid-template-columns: 1fr 1fr; }
    .measurement-records { grid-template-columns: 1fr; }
    .module-ready-card { grid-template-columns: 1fr; padding: 24px; }
    .module-ready-action { min-width: 0; }
    .result-actions { flex-direction: column-reverse; }
    .result-actions .button { width: 100%; }
}

/* ================================================================
   V-Lab Versi 3 — Vektor dan Resultan Gaya
   ================================================================ */
.vector-intro-hero { background: linear-gradient(125deg, #173d61, #235f8e 62%, #357cb0); }
.vector-hero-symbol { position: relative; width: 180px; height: 180px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.22); border-radius: 42px; background: rgba(255,255,255,.10); }
.vector-hero-symbol::before, .vector-hero-symbol::after { content: ''; position: absolute; background: rgba(255,255,255,.18); }
.vector-hero-symbol::before { width: 130px; height: 1px; }
.vector-hero-symbol::after { width: 1px; height: 130px; }
.vector-arrow { position: absolute; font-size: 52px; line-height: 1; font-weight: 900; }
.vector-arrow.arrow-a { top: 24px; right: 28px; color: #f8cf64; }
.vector-arrow.arrow-b { top: 24px; left: 28px; color: #8fd8d1; }
.vector-node { z-index: 2; width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: rgba(5,25,45,.7); }
.scenario-options { display: grid; gap: 10px; }
.scenario-option { display: grid; grid-template-columns: 42px 1fr; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; cursor: pointer; background: #fff; transition: .2s ease; }
.scenario-option:hover { border-color: #92b7d4; transform: translateY(-1px); }
.scenario-option input { position: absolute; opacity: 0; pointer-events: none; }
.scenario-option:has(input:checked) { border-color: #357cb0; box-shadow: 0 0 0 3px rgba(53,124,176,.10); background: #f3f8fc; }
.scenario-icon { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; color: #fff; background: #235f8e; font-size: 20px; }
.scenario-option strong, .scenario-option small, .scenario-option em { display: block; }
.scenario-option strong { font-size: 11px; }
.scenario-option small { margin-top: 4px; color: var(--muted); font-size: 8px; line-height: 1.45; }
.scenario-option em { margin-top: 6px; color: #235f8e; font-size: 8px; font-style: normal; font-weight: 800; }
.vector-ready-card { background: linear-gradient(125deg, #173d61, #235f8e 62%, #357cb0); }
.vector-experiment-header { border-color: #d7e3ed; }
.vector-workspace { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(390px, .92fr); gap: 18px; margin-top: 18px; align-items: start; }
.vector-simulator-panel, .vector-input-panel { overflow: hidden; }
.vector-canvas-wrap { margin: 0 20px; padding: 10px; border: 1px solid #dce8ef; border-radius: 18px; background: linear-gradient(#fbfdff, #f4f8fb); }
#vectorCanvas { display: block; width: 100%; height: auto; max-height: 440px; }
.vector-grid-lines line { stroke: #e4edf3; stroke-width: 1; }
.axis-line { stroke: #7f95a5; stroke-width: 1.5; }
.axis-label { fill: #657b8b; font-size: 11px; font-weight: 800; }
.vector-origin { fill: #173d61; stroke: #fff; stroke-width: 4; }
.force-line { stroke-width: 4; stroke-linecap: round; }
.force-line-f1 { stroke: #dc6a3a; }
.force-line-f2 { stroke: #1a8a88; }
.force-line-f3 { stroke: #8055a8; }
.arrow-head-f1 { fill: #dc6a3a; }
.arrow-head-f2 { fill: #1a8a88; }
.arrow-head-f3 { fill: #8055a8; }
.force-label { font-size: 10px; font-weight: 850; paint-order: stroke; stroke: #fff; stroke-width: 4px; stroke-linejoin: round; }
.label-f1 { fill: #a74119; }
.label-f2 { fill: #126c6a; }
.label-f3 { fill: #644183; }
.is-hidden { display: none; }
.vector-convention-note { display: flex; align-items: center; gap: 12px; margin: 14px 20px 20px; padding: 13px 14px; border-radius: 13px; color: #496271; background: #f2f7fa; }
.vector-convention-note > span { width: 34px; height: 34px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 10px; color: #fff; background: #235f8e; font-size: 16px; font-weight: 850; }
.vector-convention-note p { margin: 0; font-size: 9px; line-height: 1.55; }
.vector-record-form { display: grid; gap: 16px; padding: 0 20px 20px; }
.force-input-grid { display: grid; gap: 10px; }
.force-fieldset { margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: 13px; }
.force-fieldset legend { padding: 0 7px; font-size: 9px; font-weight: 850; }
.force-set-1 { border-left: 4px solid #dc6a3a; }
.force-set-2 { border-left: 4px solid #1a8a88; }
.force-set-3 { border-left: 4px solid #8055a8; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.manual-answer-box { padding: 14px; border: 1px solid #cfdfea; border-radius: 15px; background: #f7fafc; }
.manual-answer-heading { display: flex; align-items: center; gap: 10px; margin-bottom: 13px; }
.manual-answer-heading > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; color: #fff; background: #173d61; font-size: 17px; }
.manual-answer-heading strong, .manual-answer-heading small { display: block; }
.manual-answer-heading strong { font-size: 10px; }
.manual-answer-heading small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.answer-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.vector-record-panel { margin-top: 18px; }
.vector-result-table td small { display: block; margin: 2px 0; white-space: nowrap; }
.vector-result-table td { vertical-align: top; }
.score-pill.score-good { color: #14734d; background: #dff5e9; }
.score-pill.score-medium { color: #8b6500; background: #fff1c9; }
.score-pill.score-low { color: #9d3027; background: #fde6e2; }
.vector-result-hero { background: linear-gradient(125deg, #173d61, #235f8e 62%, #357cb0); }
.result-vector-table { margin-top: 18px; }

@media (max-width: 1180px) {
    .vector-workspace { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
    .vector-hero-symbol { display: none; }
    .field-row, .answer-grid { grid-template-columns: 1fr; }
    .vector-canvas-wrap { margin: 0 12px; padding: 4px; }
    .vector-convention-note { margin: 12px; }
    .vector-record-form { padding: 0 14px 16px; }
}

/* ================================================================
   V-LAB VERSION 4 - COMPLETE VOCATIONAL PHYSICS MODULES
   ================================================================ */
.physics-module-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 28px;
    min-height: 245px;
    padding: clamp(28px, 4vw, 48px);
    border-radius: 24px;
    color: #fff;
    overflow: hidden;
    position: relative;
    background: linear-gradient(125deg, #0d4f52, #126e70 62%, #27938e);
}
.physics-module-hero::before,
.physics-module-hero::after {
    content: '';
    position: absolute;
    border-radius: 50%;
    border: 1px solid rgba(255,255,255,.16);
}
.physics-module-hero::before { width: 280px; height: 280px; right: -85px; top: -130px; }
.physics-module-hero::after { width: 170px; height: 170px; right: 120px; bottom: -120px; }
.physics-module-hero.theme-measurement,
.physics-ready-card.theme-measurement,
.physics-result-hero.theme-measurement { background: linear-gradient(125deg, #374151, #56667a 62%, #7b8da3); }
.physics-module-hero.theme-vector,
.physics-ready-card.theme-vector,
.physics-result-hero.theme-vector { background: linear-gradient(125deg, #4b3f72, #66568f 62%, #8b78b3); }
.physics-module-hero.theme-mechanics,
.physics-ready-card.theme-mechanics,
.physics-result-hero.theme-mechanics { background: linear-gradient(125deg, #273d68, #315c92 62%, #4e82b7); }
.physics-module-hero.theme-hydraulic,
.physics-ready-card.theme-hydraulic,
.physics-result-hero.theme-hydraulic { background: linear-gradient(125deg, #0a5363, #0c7182 62%, #2b95a3); }
.physics-module-hero.theme-buoyancy,
.physics-ready-card.theme-buoyancy,
.physics-result-hero.theme-buoyancy { background: linear-gradient(125deg, #185a6d, #237a8b 60%, #47a0aa); }
.physics-module-hero.theme-hydrostatic,
.physics-ready-card.theme-hydrostatic,
.physics-result-hero.theme-hydrostatic { background: linear-gradient(125deg, #173f68, #255e8a 60%, #3b84ae); }
.physics-module-hero.theme-flow,
.physics-ready-card.theme-flow,
.physics-result-hero.theme-flow { background: linear-gradient(125deg, #18524c, #24766c 60%, #42a18f); }
.physics-hero-copy { position: relative; z-index: 2; max-width: 850px; }
.physics-hero-copy h2 { margin: 12px 0 13px; font-size: clamp(30px, 4vw, 48px); line-height: 1.08; letter-spacing: -1.5px; }
.physics-hero-copy p { max-width: 780px; margin: 0; color: rgba(255,255,255,.84); font-size: 16px; line-height: 1.7; }
.physics-hero-tags { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 22px; }
.physics-hero-tags span { padding: 8px 11px; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; background: rgba(255,255,255,.10); font-size: 11px; font-weight: 750; }
.physics-hero-icon { position: relative; z-index: 2; width: 150px; height: 150px; display: grid; place-items: center; border-radius: 40px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.25); font-size: 76px; font-weight: 850; }

.legacy-inline-note { margin-top: 13px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.24); color: rgba(255,255,255,.86); font-size: 11px; }
.legacy-inline-note a { margin-left: 6px; color: #fff; font-weight: 800; text-decoration: underline; }

.legacy-lab-notice { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 16px; padding: 16px 18px; border: 1px solid var(--line); border-radius: 16px; background: #fff; }
.legacy-lab-notice strong { display: block; margin-bottom: 4px; }
.legacy-lab-notice p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.55; }

.physics-theory-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.competency-list { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.competency-list li { display: grid; grid-template-columns: 38px 1fr; gap: 12px; align-items: start; }
.competency-list li > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: var(--primary-soft); color: var(--primary); font-size: 12px; font-weight: 850; }
.competency-list p { margin: 5px 0 0; line-height: 1.55; }
.application-chip-list { display: flex; flex-wrap: wrap; gap: 10px; }
.application-chip-list span { padding: 10px 12px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface-soft); font-size: 12px; font-weight: 700; }
.theory-panel { margin-top: 18px; }
.theory-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.theory-card { position: relative; min-height: 205px; padding: 20px; border: 1px solid var(--line); border-radius: 16px; background: linear-gradient(145deg, #fff, #f8fbfb); }
.theory-index { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; color: #fff; background: var(--ink); font-size: 10px; font-weight: 850; }
.theory-card h4 { margin: 15px 0 9px; font-size: 16px; }
.theory-card p { margin: 10px 0 0; color: var(--muted); line-height: 1.55; font-size: 13px; }
.formula-box { padding: 11px 13px; border-radius: 11px; background: var(--primary-soft); color: var(--primary-dark); font-family: "Times New Roman", serif; font-size: 17px; font-weight: 700; }
.common-error-box { margin-top: 14px; border: 1px solid #f0dfaa; border-radius: 14px; background: #fffaf0; }
.common-error-box summary { padding: 14px 16px; cursor: pointer; color: #755300; font-weight: 800; }
.common-error-box ul { margin: 0; padding: 0 32px 16px 48px; color: #705e34; line-height: 1.65; }

.start-module-panel { display: grid; grid-template-columns: minmax(250px, .7fr) minmax(0, 1.3fr); gap: 28px; margin-top: 18px; padding: 28px; border: 1px solid var(--line); border-radius: 20px; background: #fff; }
.start-module-panel h3 { margin: 9px 0; font-size: 24px; }
.start-module-panel p { margin: 0; color: var(--muted); line-height: 1.6; }
.learning-mode-form { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.learning-mode-form > .button { grid-column: 1 / -1; margin-top: 4px; }
.learning-mode-card { position: relative; cursor: pointer; }
.learning-mode-card input { position: absolute; opacity: 0; pointer-events: none; }
.learning-mode-card > span { display: block; height: 100%; min-height: 112px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; transition: .18s ease; }
.learning-mode-card strong, .learning-mode-card small { display: block; }
.learning-mode-card strong { font-size: 14px; }
.learning-mode-card small { margin-top: 8px; color: var(--muted); line-height: 1.5; font-size: 11px; }
.learning-mode-card:has(input:checked) > span { border-color: var(--primary); background: var(--primary-soft); box-shadow: 0 0 0 3px rgba(17,100,102,.10); }

.attempt-progress-panel { margin-top: 18px; padding: 22px; border: 1px solid var(--line); border-radius: 18px; background: #fff; }
.attempt-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.attempt-heading h3 { margin: 7px 0 0; }
.attempt-score-mini { width: 90px; padding: 12px; border-radius: 13px; background: var(--primary-soft); text-align: center; }
.attempt-score-mini span, .attempt-score-mini strong { display: block; }
.attempt-score-mini span { color: var(--muted); font-size: 10px; }
.attempt-score-mini strong { margin-top: 3px; color: var(--primary); font-size: 24px; }
.module-stepper { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 20px; }
.module-stepper > div { position: relative; display: flex; align-items: center; gap: 9px; color: #93a1aa; }
.module-stepper > div::after { content: ''; position: absolute; left: 38px; right: 10px; top: 16px; height: 2px; background: #e3e9ec; }
.module-stepper > div:last-child::after { display: none; }
.module-stepper span { position: relative; z-index: 2; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: #edf1f3; font-size: 11px; font-weight: 850; }
.module-stepper strong { position: relative; z-index: 2; padding-right: 8px; background: #fff; font-size: 11px; }
.module-stepper .active { color: var(--primary); }
.module-stepper .active span { color: #fff; background: var(--primary); }
.module-stepper .done { color: var(--success); }
.module-stepper .done span { color: #fff; background: var(--success); }
.module-stepper .done::after { background: #9fd7c2; }

.quiz-panel { margin-top: 18px; }
.quiz-form { display: grid; gap: 15px; }
.quiz-question { margin: 0; padding: 16px; border: 1px solid var(--line); border-radius: 15px; }
.quiz-question legend { display: flex; align-items: center; gap: 10px; padding: 0 8px; font-weight: 750; }
.quiz-question legend > span { width: 28px; height: 28px; display: inline-grid; place-items: center; border-radius: 8px; color: #fff; background: var(--ink); font-size: 10px; }
.quiz-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; margin-top: 12px; }
.quiz-options label { cursor: pointer; }
.quiz-options input { position: absolute; opacity: 0; pointer-events: none; }
.quiz-options label > span { display: flex; align-items: center; gap: 10px; min-height: 50px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; transition: .16s ease; }
.quiz-options label b { width: 28px; height: 28px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 8px; background: #eef3f5; font-size: 10px; }
.quiz-options label:has(input:checked) > span { border-color: var(--primary); background: var(--primary-soft); }
.quiz-options label:has(input:checked) b { color: #fff; background: var(--primary); }
.quiz-complete-card { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 18px; padding: 17px 20px; border: 1px solid #bfe4d5; border-radius: 16px; background: var(--success-soft); }
.quiz-complete-card > div { display: flex; align-items: center; gap: 12px; }
.quiz-complete-card > div > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--success); font-weight: 850; }
.quiz-complete-card p { margin: 0; }
.quiz-complete-card strong, .quiz-complete-card small { display: block; }
.quiz-complete-card small { margin-top: 3px; color: #3d6b58; }
.quiz-complete-card > p { max-width: 580px; color: #3d6b58; font-size: 12px; line-height: 1.55; }

.simulation-intro { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 25px; }
.simulation-intro h3 { margin: 7px 0; font-size: 25px; }
.simulation-intro p { max-width: 790px; margin: 0; color: var(--muted); line-height: 1.6; }
.simulation-counter { min-width: 105px; padding: 14px; border-radius: 16px; background: var(--ink); color: #fff; text-align: center; }
.simulation-counter strong, .simulation-counter span { display: block; }
.simulation-counter strong { font-size: 26px; }
.simulation-counter span { margin-top: 2px; color: #c5d0d6; font-size: 10px; }
.physics-simulation-list { display: grid; gap: 18px; margin-top: 16px; }
.physics-simulation-card { overflow: hidden; border: 1px solid var(--line); border-radius: 20px; background: #fff; box-shadow: 0 8px 22px rgba(23,48,66,.04); }
.physics-simulation-card.completed { border-color: #a9d8c5; }
.simulation-card-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 19px 22px; border-bottom: 1px solid var(--line); background: #fbfcfc; }
.simulation-title-row { display: flex; align-items: center; gap: 14px; }
.simulation-title-row h3 { margin: 5px 0 4px; }
.simulation-title-row p { margin: 0; color: var(--muted); font-size: 12px; }
.simulation-number, .simulation-status-icon { display: grid; place-items: center; flex: 0 0 auto; border-radius: 13px; font-weight: 850; }
.simulation-number { width: 44px; height: 44px; background: var(--ink); color: #fff; }
.simulation-status-icon { width: 46px; height: 46px; background: var(--primary-soft); color: var(--primary); font-size: 20px; }
.completed .simulation-status-icon { background: var(--success-soft); color: var(--success); }
.simulation-context { padding: 12px 22px; border-bottom: 1px solid var(--line); color: #4f6470; background: #f7fafb; font-size: 12px; }
.simulation-workspace { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(390px, .92fr); align-items: stretch; }
.simulation-visual-wrap { padding: 20px; border-right: 1px solid var(--line); background: #f9fbfc; }
.physics-visual { overflow: hidden; border: 1px solid #d8e4e8; border-radius: 16px; background: #fff; }
.physics-visual svg { display: block; width: 100%; height: auto; }
.formula-ribbon { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: 11px; padding: 11px 13px; border-radius: 12px; color: var(--primary-dark); background: var(--primary-soft); }
.formula-ribbon span { font-size: 9px; font-weight: 850; text-transform: uppercase; letter-spacing: 1px; }
.formula-ribbon strong { font-family: "Times New Roman", serif; font-size: 15px; }
.simulation-hint { display: flex; gap: 10px; margin-top: 10px; padding: 11px 13px; border: 1px solid #f1dfac; border-radius: 12px; background: #fffaf0; }
.simulation-hint p { margin: 0; color: #6e5d32; font-size: 11px; line-height: 1.5; }
.physics-trial-form { display: grid; align-content: start; gap: 0; }
.control-section, .answer-section { padding: 19px 20px; }
.control-section { border-bottom: 1px solid var(--line); }
.control-section h4, .answer-section h4 { margin: 0 0 14px; font-size: 13px; }
.simulation-control-row { margin-bottom: 13px; }
.simulation-control-row:last-child { margin-bottom: 0; }
.simulation-control-row > label { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 6px; font-size: 11px; font-weight: 750; }
.simulation-control-row label small, .answer-grid label small { color: var(--muted); font-weight: 600; }
.control-pair { display: grid; grid-template-columns: minmax(0, 1fr) 95px; gap: 10px; align-items: center; }
.control-pair input[type="range"] { width: 100%; accent-color: var(--primary); }
.simulation-number-input { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.answer-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.answer-grid label { display: grid; gap: 6px; }
.answer-grid label > span { font-size: 10px; font-weight: 750; }
.answer-grid input, .answer-grid select { width: 100%; min-height: 40px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.answer-section > .button { width: 100%; margin-top: 13px; }

.svg-grid-line { stroke: #edf2f4; stroke-width: 1; }
.svg-ground { stroke: #7c8f99; stroke-width: 3; }
.svg-object { fill: #d8a05f; stroke: #87562d; stroke-width: 3; }
.svg-wheel { fill: #354955; stroke: #fff; stroke-width: 3; }
.svg-ramp { fill: #dce5e9; stroke: #718692; stroke-width: 3; }
.svg-force-arrow, .svg-flow-arrow { fill: none; stroke: #0f7f7b; stroke-width: 5; stroke-linecap: round; }
.svg-friction-arrow, .svg-weight-arrow { fill: none; stroke: #9a5d40; stroke-width: 4; stroke-linecap: round; }
.svg-arrow-head { fill: #0f7f7b; }
.svg-arrow-head-muted { fill: #9a5d40; }
.svg-object-label { fill: #203a49; font-size: 15px; font-weight: 850; }
.svg-force-label { fill: #0a6563; font-size: 13px; font-weight: 800; }
.svg-muted-label { fill: #607783; font-size: 12px; font-weight: 700; }
.svg-cylinder { fill: none; stroke: #526b77; stroke-width: 5; }
.svg-piston, .svg-rope { fill: none; stroke: #405762; stroke-width: 5; }
.svg-load { fill: #e4ae63; stroke: #8d612c; stroke-width: 3; }
.svg-fluid { fill: #8fd2d4; opacity: .78; }
.svg-fluid-line { stroke: #378b92; stroke-width: 12; }
.svg-tank { fill: none; stroke: #536f7c; stroke-width: 4; }
.svg-water { fill: #9ed8e6; opacity: .72; }
.svg-floating-object { fill: #d99c59; stroke: #805327; stroke-width: 3; }
.svg-pontoon { fill: #697e88; stroke: #344c58; stroke-width: 4; }
.svg-sensor { fill: #e29a3a; stroke: #fff; stroke-width: 3; }
.svg-depth-line, .svg-dimension-line { stroke: #607d8b; stroke-width: 2; stroke-dasharray: 6 5; }
.svg-pressure-triangle { fill: rgba(37,94,138,.20); stroke: #255e8a; stroke-width: 3; }
.svg-gate { fill: #d79c56; stroke: #805327; stroke-width: 4; }
.svg-pipe { fill: #dce7ea; stroke: #55727e; stroke-width: 4; }
.svg-particle { fill: #2c91a0; }
.svg-pipe-section { fill: #dbe5e8; stroke: #526b77; stroke-width: 4; }
.svg-water-section { fill: #8fd2df; }
.svg-pipe-line { fill: none; stroke: #708b96; stroke-width: 38; stroke-linecap: round; stroke-linejoin: round; }
.svg-junction { fill: #334e5a; stroke: #fff; stroke-width: 4; }

.trial-history-panel { margin-top: 18px; }
.trial-card-list { display: grid; gap: 10px; }
.trial-result-card { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.trial-result-main { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 13px 15px; }
.trial-number { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 11px; background: #eef3f5; font-size: 11px; font-weight: 850; }
.trial-result-main strong, .trial-result-main small { display: block; }
.trial-result-main small { margin-top: 3px; color: var(--muted); font-size: 10px; }
.trial-score { min-width: 65px; padding: 8px 10px; border-radius: 11px; background: var(--warning-soft); text-align: center; }
.trial-score.good { background: var(--success-soft); }
.trial-score span, .trial-score strong { display: block; }
.trial-score span { color: var(--muted); font-size: 8px; text-transform: uppercase; }
.trial-score strong { margin-top: 2px; font-size: 18px; }
.trial-result-card details { border-top: 1px solid var(--line); background: #fbfcfc; }
.trial-result-card summary { padding: 11px 15px; cursor: pointer; color: var(--primary); font-size: 11px; font-weight: 800; }
.feedback-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 0 15px 12px; }
.feedback-item { padding: 10px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.feedback-item.correct { border-color: #b8ddce; background: #f2fbf7; }
.feedback-item.needs-work { border-color: #f0d3a4; background: #fffaf2; }
.feedback-item span, .feedback-item strong, .feedback-item small { display: block; }
.feedback-item span { color: var(--muted); font-size: 9px; }
.feedback-item strong { margin-top: 4px; font-size: 12px; }
.feedback-item small { margin-top: 4px; color: var(--muted); font-size: 8px; }
.button-link-danger { padding: 0; border: 0; color: var(--danger); background: transparent; font-size: 11px; font-weight: 750; }
.trial-result-card form { padding: 0 15px 13px; }
.posttest-complete { border-color: #b9d8e7; background: #eff8fc; }
.analysis-prompt-box { padding: 14px 16px; border-radius: 13px; background: #f2f7f8; }
.analysis-prompt-box ol { margin: 8px 0 0; padding-left: 20px; color: var(--muted); line-height: 1.65; }
.report-form { display: grid; gap: 14px; margin-top: 15px; }
.report-form label { display: grid; gap: 7px; }
.report-form label > span { font-size: 12px; font-weight: 750; }
.report-form label small { color: var(--muted); font-weight: 600; }
.report-form textarea { width: 100%; resize: vertical; padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: #fff; line-height: 1.6; }
.report-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.report-submit-row p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.discard-attempt-form { display: flex; justify-content: flex-end; margin-top: 12px; }
.module-history-panel { margin-top: 18px; }
.history-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.history-card { padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.history-card span, .history-card strong, .history-card small { display: block; }
.history-card span { color: var(--muted); font-size: 9px; }
.history-card strong { margin: 6px 0; color: var(--primary); font-size: 25px; }
.history-card small { font-size: 9px; }

.physics-result-hero { color: #fff; }
.result-component-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-top: 18px; }
.result-component-grid article { padding: 15px; border: 1px solid var(--line); border-radius: 14px; background: #fff; text-align: center; }
.result-component-grid span, .result-component-grid strong, .result-component-grid small { display: block; }
.result-component-grid span { color: var(--muted); font-size: 10px; }
.result-component-grid strong { margin: 5px 0; font-size: 24px; }
.result-component-grid small { color: var(--muted); font-size: 8px; }
.result-identity-panel .identity-list { margin: 0; }
.report-result-panel { margin-top: 18px; }

.catalog-summary-bar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 0 0 16px; padding: 14px 17px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.catalog-summary-bar > div { display: flex; align-items: baseline; gap: 8px; }
.catalog-summary-bar strong { color: var(--primary); font-size: 24px; }
.catalog-summary-bar span, .catalog-summary-bar p { color: var(--muted); font-size: 11px; }
.catalog-summary-bar p { margin: 0; }
.practicum-capabilities { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.practicum-capabilities span { padding: 5px 8px; border-radius: 999px; background: #eef4f5; color: #55707d; font-size: 8px; font-weight: 800; text-transform: uppercase; }
.physics-ready-card { color: #fff; }
.student-progress-panel { margin-bottom: 18px; }
.student-progress-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }
.progress-module-card { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 11px; padding: 12px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.progress-order { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 10px; background: #eef3f5; font-size: 10px; font-weight: 850; }
.progress-module-card strong, .progress-module-card small { display: block; }
.progress-module-card strong { font-size: 12px; }
.progress-module-card small { margin-top: 3px; color: var(--muted); font-size: 9px; }
.progress-module-card.status-submitted { border-color: #b8ddce; background: #f5fbf8; }
.progress-module-card.status-submitted .progress-order { color: #fff; background: var(--success); }
.progress-module-card.status-in_progress { border-color: #efdaa7; background: #fffcf4; }
.progress-module-card.status-in_progress .progress-order { color: #fff; background: var(--warning); }
.progress-arrow { color: var(--primary); font-weight: 850; }

@media (max-width: 1180px) {
    .simulation-workspace { grid-template-columns: 1fr; }
    .simulation-visual-wrap { border-right: 0; border-bottom: 1px solid var(--line); }
    .history-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 900px) {
    .physics-theory-grid, .start-module-panel { grid-template-columns: 1fr; }
    .theory-card-grid { grid-template-columns: 1fr; }
    .learning-mode-form { grid-template-columns: 1fr; }
    .learning-mode-card > span { min-height: auto; }
    .result-component-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 680px) {
    .physics-module-hero { grid-template-columns: 1fr; }
    .physics-hero-icon { display: none; }
    .physics-hero-copy h2 { font-size: 30px; }
    .physics-theory-grid { grid-template-columns: 1fr; }
    .module-stepper { grid-template-columns: 1fr; gap: 8px; }
    .module-stepper > div::after { display: none; }
    .quiz-options, .answer-grid, .feedback-grid, .student-progress-grid { grid-template-columns: 1fr; }
    .quiz-complete-card, .simulation-intro, .report-submit-row, .catalog-summary-bar { align-items: flex-start; flex-direction: column; }
    .simulation-card-header { align-items: flex-start; }
    .simulation-status-icon { display: none; }
    .simulation-title-row { align-items: flex-start; }
    .control-pair { grid-template-columns: 1fr 86px; }
    .history-grid, .result-component-grid { grid-template-columns: repeat(2, 1fr); }
    .physics-visual svg { min-height: 220px; }
}
