:root { --ps-lavender:#c9c6ff; --ps-blue:#aac4f7; --ps-input:#c4f69a; --ps-output:#aac4f7; --ps-terminal:#101722; --ps-terminal-line:#283346; }
.ps-student-preview .course-access-bar,
.ps-student-preview .ps-review-profile-nav,
.ps-student-preview .ps-owner-review,
.ps-student-preview .ps-review-note { display:none !important; }
.ps-shell { width:min(1420px,calc(100% - 48px)); margin:0 auto; padding:30px 0 70px; }
#lab-start[hidden], #lab-question-picker[hidden], #lab-editor-view[hidden] { display:none !important; }
.ps-entry { max-width:1050px; margin:20px auto 50px; }
.ps-entry h1 { font-size:clamp(32px,5vw,56px); line-height:1.12; margin:10px 0 16px; }
.ps-entry h1 em { font-style:normal; background:var(--mint, #c4f69a); padding:0 .12em; border-radius:6px; }
.ps-entry > p, .ps-entry-choice p, .ps-entry-empty p { font-size:16px; line-height:1.65; }
.ps-entry-options { display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:30px; }
.ps-entry-choice { display:flex; flex-direction:column; padding:clamp(24px,4vw,38px); background:#fff; color:#040608; border:1px solid #cbd3c5; border-radius:24px; }
.ps-entry-choice h2 { font-size:28px; line-height:1.15; margin:20px 0 4px; }
.ps-entry-choice p { flex:1; margin-bottom:26px; }
.ps-entry-tag { font-size:13px; font-weight:800; letter-spacing:.08em; }
.ps-entry-free { background:#040608; color:#fff; border-color:#040608; }
.ps-entry-free .ps-entry-tag { color:#c4f69a; }
.ps-entry button:not(.ps-entry-back) { background:#040608; color:#c4f69a; border:0; border-radius:999px; padding:15px 23px; font:800 16px 'DM Sans',sans-serif; cursor:pointer; }
.ps-entry .ps-entry-free button { background:#c4f69a; color:#040608; }
.ps-entry button:hover { filter:brightness(.92); }
.ps-entry-back { padding:10px 0; margin-bottom:16px; background:transparent; border:0; color:var(--ink,#040608); font:700 14px 'DM Sans',sans-serif; cursor:pointer; }
.ps-entry-empty { margin-top:26px; padding:30px; background:#fff; border:1px solid #cbd3c5; border-radius:22px; }
.ps-entry-empty h2 { font-size:24px; }
.ps-free-mode { padding:12px 16px; background:#e9fbdc; color:#284a18; border-radius:10px; font-size:14px; }
#lab-entry-status:empty { display:none; }
.ps-entry :focus-visible, .ps-entry-back:focus-visible { outline:3px solid #729e4d; outline-offset:4px; }
@media(max-width:700px) { .ps-entry-options { grid-template-columns:1fr; } }
.ps-back { display:inline-block; margin-bottom:23px; color:#636978; text-decoration:none; font-size:13px; font-weight:750; }
.ps-back:hover { color:var(--violet); }
.ps-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:24px; }
.ps-heading .eyebrow { display:flex; align-items:center; gap:8px; }
.ps-heading .eyebrow span { width:18px; height:5px; border-radius:5px; background:var(--violet); }
.ps-heading h1 { font-size:clamp(36px,4.8vw,66px); line-height:1; max-width:820px; margin:0 0 13px; }
.ps-heading h1 em { position:relative; display:inline-block; isolation:isolate; font-style:normal; padding:0 .08em .05em; }
.ps-heading h1 em::before { content:''; position:absolute; z-index:-1; inset:12% -.02em 1%; background:var(--mint); border-radius:5px 9px 6px 4px; transform:rotate(-1deg) skewX(-4deg); }
.ps-heading > div:first-child > p:last-child { color:var(--muted); font-size:15px; margin:0; }
.ps-course-card { min-width:310px; display:grid; grid-template-columns:auto 1fr; gap:3px 12px; align-items:center; padding:15px 17px; background:#fff; border:1px solid #cad5e2; border-radius:14px; box-shadow:0 12px 30px rgba(50,66,87,.08); }
.ps-course-review { display:grid; gap:8px; }
.ps-review-profile-nav { display:flex; justify-content:flex-end; align-items:center; gap:6px; color:var(--muted); font-size:10px; font-weight:750; }
.ps-review-profile-nav a { min-width:44px; padding:6px 9px; border:1px solid #d8dce5; border-radius:999px; color:#5a56b9; background:#fff; text-align:center; text-decoration:none; }
.ps-review-profile-nav a[aria-current] { border-color:var(--violet); background:var(--violet-soft); color:var(--violet); }
.ps-review-profile-nav a:focus-visible { outline:3px solid rgba(65,57,195,.25); outline-offset:2px; }
.ps-course-code { grid-row:1/3; position:relative; isolation:isolate; min-width:58px; text-align:center; color:var(--ink); font:800 19px/1 'Manrope',sans-serif; padding:7px 8px; transform:rotate(-1.5deg); }
.ps-course-code::before { content:''; position:absolute; z-index:-1; inset:1px -2px; background:var(--mint); border-radius:5px 9px 5px 7px; transform:skewX(-5deg); }
.ps-course-card > span:nth-child(2) { display:grid; }
.ps-course-card strong { font-size:12px; }
.ps-course-card small { color:var(--muted); font-size:10px; }
.ps-course-card i { grid-column:2; color:var(--violet); font-size:10px; font-style:normal; font-weight:800; }
.ps-workspace { display:grid; grid-template-columns:minmax(0,1fr); gap:17px; align-items:stretch; }
.ps-paper-code-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:24px; padding-top:20px; border-top:1px solid #d5dce6; }
.ps-paper-code-collapsed .ps-editor-card,.ps-paper-code-collapsed .ps-runtime-grid,.ps-paper-code-collapsed .ps-debug-side { display:none !important; }
.ps-paper-code-collapsed .ps-workspace.scheme-layout { grid-template-columns:minmax(0,1fr); }
.ps-workspace.debug-layout { grid-template-columns:minmax(0,1.45fr) minmax(350px,.75fr); align-items:stretch; }
.ps-workspace.debug-layout .ps-question { grid-column:1/-1; }
.ps-workspace.debug-layout .ps-editor-card { grid-column:1; min-height:680px; }
.ps-workspace.scheme-layout { grid-template-columns:minmax(0,1.35fr) minmax(360px,.85fr); align-items:start; }
.ps-workspace.scheme-layout .ps-question { grid-column:1/-1; }
.ps-workspace.scheme-layout .ps-editor-card { grid-column:1; min-height:680px; }
.ps-free-workspace .ps-workspace { grid-template-columns:minmax(0,1fr); }
.ps-free-workspace .ps-question { display:contents; }
.ps-free-workspace .ps-question::after, .ps-free-workspace #core-task-content { display:none !important; }
.ps-free-workspace .ps-unavailable { grid-column:1/-1; min-height:0; }
.ps-syntax-help { margin:0 0 17px; padding:14px 18px; background:#fff; border:1px solid #cad5e2; border-radius:12px; }
.ps-syntax-help summary { cursor:pointer; color:var(--ink,#040608); font-size:14px; font-weight:800; }
.ps-syntax-help summary:focus-visible { outline:3px solid #729e4d; outline-offset:4px; }
.ps-syntax-help ul { margin:14px 0 0; padding-left:22px; font-size:16px; line-height:1.65; }
.ps-syntax-help li + li { margin-top:8px; }
.ps-syntax-help code { overflow-wrap:anywhere; }
.ps-question { padding:clamp(23px,3vw,38px); position:relative; overflow:hidden; }
.ps-question::after { content:'{ }'; position:absolute; right:18px; bottom:8px; color:#e4e8ee; font:800 45px 'Manrope',sans-serif; transform:rotate(-7deg); }
.ps-card-top { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin:0 0 17px; }
.ps-card-top .section-label { margin:0; }
.ps-task-number { display:inline-grid; place-items:center; min-width:48px; margin:0; padding:5px 8px; border-radius:5px 9px 5px 7px; background:var(--ps-lavender); color:#343087; font:800 17px 'Manrope',sans-serif; transform:rotate(-1deg); }
.is-question .ps-task-number { display:inline; min-width:0; padding:0; border-radius:0; background:transparent; color:#777c89; font:800 10px 'DM Sans',system-ui,sans-serif; transform:none; }
.is-question .ps-task-number[hidden]{display:none}
.is-question #task-kicker{margin:0;padding:6px 12px;border:1px solid #bfd6ab;border-radius:999px;background:#eef8e6;color:#284a18;font:600 14px/1.5 'DM Sans',system-ui,sans-serif;letter-spacing:normal;text-transform:none;overflow-wrap:anywhere}
.ps-question h2 { font-size:25px; line-height:1.12; letter-spacing:-.035em; margin:0 0 12px; }
#task-prompt { color:#5f6570; max-width:1100px; font-size:16px; line-height:1.65; margin:0; }
#task-prompt p,#task-prompt li { max-width:90ch; }
#task-prompt p { margin:0 0 12px; }
#task-prompt p:last-child { margin-bottom:0; }
#task-prompt ul { display:grid; gap:9px; margin:15px 0 18px; padding-left:24px; }
#task-prompt ul ul { margin:8px 0 2px; }
#task-prompt li { padding-left:4px; }
#task-prompt .scroll { max-width:100%; margin:17px 0; }
#task-prompt table { width:100%; border-collapse:collapse; background:#fff; color:var(--ink); }
#task-prompt th,#task-prompt td { padding:11px 13px; border:1px solid #dfe4eb; text-align:left; vertical-align:top; }
#task-prompt th { background:#eef8e6; color:#284a18; }
#task-prompt pre,#task-prompt .review-code { margin:17px 0; border:1px solid #dfe4eb; border-radius:12px; background:#f7f8fb; color:#171b22; }
#task-prompt pre { overflow:auto; padding:17px; font-size:14px; line-height:1.65; }
.ps-question-marks { position:relative; z-index:1; margin:14px 0 0; color:var(--ink); font-size:16px; font-weight:800; line-height:1; text-align:right; }
.ps-question-marks[hidden] { display:none; }
.ps-requirements { display:grid; gap:8px; margin:24px 0; }
.ps-requirements span { display:grid; grid-template-columns:auto 1fr; gap:9px; align-items:center; padding:9px 10px; border:1px solid #e1e5eb; border-radius:9px; background:#f8fafc; color:#555b66; font-size:12px; }
.ps-requirements b { width:24px; height:24px; border-radius:7px; display:grid; place-items:center; background:var(--violet-soft); color:var(--violet); font-size:10px; }
.ps-safety-note { display:grid; gap:2px; padding:12px; background:#eafbdd; border:1px solid #cceab7; border-radius:10px; }
.ps-safety-note strong { color:#49792f; font-size:11px; }
.ps-safety-note span { color:#4f6f3c; font-size:10px; line-height:1.4; }
.ps-core-scope { position:relative; z-index:1; margin-top:17px; border-top:1px solid #eaedf1; padding-top:14px; }
.ps-core-scope summary { cursor:pointer; color:#5a56b9; font-size:11px; font-weight:800; }
.ps-core-scope p { color:#6e7480; font-size:11px; line-height:1.5; margin:9px 0 0; }
.ps-unavailable { min-height:100%; display:grid; place-content:center; justify-items:start; gap:9px; padding:26px 8px; }
.ps-unavailable[hidden] { display:none; }
.ps-unavailable > span { width:52px; height:52px; display:grid; place-items:center; border-radius:14px; background:var(--violet-soft); color:var(--violet); font-size:22px; }
.ps-unavailable h2 { margin:0; }
.ps-unavailable > p:last-child { color:var(--muted); font-size:13px; line-height:1.55; margin:0; }
.ps-editor-card { min-width:0; overflow:hidden; display:grid; grid-template-rows:auto 1fr auto; }
.ps-editor-head { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:18px 20px 15px; border-bottom:1px solid #e2e6ec; }
.ps-editor-head h2 { font-size:18px; margin:0; }
.ps-editor-meta { display:flex; gap:7px; }
.ps-editor-meta span { padding:6px 8px; border-radius:7px; background:#f0f2f6; color:#666c78; font-size:10px; font-weight:750; }
.ps-reading-toggle { display:flex; align-items:center; gap:6px; padding:5px 8px; border:1px solid #dfe3e9; border-radius:7px; color:#5d6470; background:#fff; font-size:10px; font-weight:750; cursor:pointer; }
.ps-reading-toggle input { width:16px; height:16px; margin:0; accent-color:var(--violet); }
#draft-status[data-state="saved"] { background:#eafbdd; color:#4f7e35; }
#draft-status[data-state="saving"] { background:#fff7dc; color:#8a681d; }
#draft-status[data-state="error"] { background:#fff0ee; color:#a44a41; }
.ps-find-bar { display:grid; grid-template-columns:auto minmax(140px,1fr) auto auto auto auto; align-items:center; gap:7px; padding:9px 14px; border-bottom:1px solid #e2e6ec; background:#f7f8fb; }
.ps-find-bar[hidden] { display:none; }
.ps-find-bar label { color:#4f5662; font-size:11px; font-weight:800; }
.ps-find-bar input { min-width:0; height:36px; border:1px solid #cbd2dc; border-radius:8px; padding:0 10px; background:#fff; color:#161b24; font:500 13px/1.2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.ps-find-bar span { min-width:70px; color:#626975; text-align:center; font-size:10px; }
.ps-find-bar button { width:36px; height:36px; border:1px solid #d4d9e1; border-radius:8px; background:#fff; color:#4d479d; cursor:pointer; font-size:16px; font-weight:800; }
.ps-find-bar button:disabled { opacity:.4; cursor:not-allowed; }
.ps-find-bar :focus-visible { outline:3px solid rgba(65,57,195,.25); outline-offset:1px; }
.ps-editor-body { min-width:0; min-height:450px; display:grid; grid-template-columns:auto minmax(0,1fr); background:#fbfcfe; }
#source-line-gutter { width:52px; max-height:100%; overflow:hidden; margin:0; padding:24px 12px 24px 0; border-right:1px solid #e3e7ed; color:#737b88; background:#f4f6f9; text-align:right; user-select:none; font:500 15px/1.72 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.ps-gutter-line { position:relative; display:block; height:1.72em; padding-right:2px; }
.ps-gutter-line.error { color:#9e3d35; background:linear-gradient(90deg,transparent 0,#ffe8e4 44%); font-weight:800; }
.ps-gutter-line.warning { color:#8a5c16; background:linear-gradient(90deg,transparent 0,#fff2ca 44%); font-weight:800; }
.ps-gutter-line.debug-active { color:#272172; background:linear-gradient(90deg,transparent 0,#c4f69a 44%); font-weight:900; }
.ps-gutter-line.error::after,.ps-gutter-line.warning::after { content:''; position:absolute; right:-9px; top:50%; width:5px; height:5px; border-radius:50%; background:currentColor; transform:translateY(-50%); }
.ps-editor-surface { position:relative; min-width:0; min-height:450px; overflow:hidden; background:#fbfcfe; }
.ps-code-legend { display:flex; flex-wrap:wrap; gap:10px 22px; padding:12px 20px; border-bottom:1px solid #dfe3e9; background:#fff; color:#374151; font-size:12px; font-weight:700; }
.ps-code-legend > span:not(.ps-visually-hidden) { padding-left:10px; border-left:4px solid; }
.ps-code-key-student { border-color:#83b94e !important; }
.ps-code-key-given { border-color:#aaa3dc !important; }
.ps-code-key-lab { border-color:#969da7 !important; }
#paper-code-shading { position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; box-sizing:border-box; margin:0; padding:24px 0; font:500 15px/1.72 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
#paper-code-shading[hidden],.ps-code-legend[hidden] { display:none; }
#paper-code-shading > span { display:block; height:1.72em; }
.ps-code-origin-student { background:#fbfcfe; box-shadow:inset 4px 0 #83b94e; }
.ps-code-origin-given { background:#f0eef9; }
.ps-code-origin-lab { background:#e8ebef; }
.ps-code-origins #debug-line-highlight { z-index:1; }
.ps-code-origins #source-highlight { z-index:2; }
.ps-code-origins #source-editor { z-index:3; }
.ps-code-origins #source-line-gutter { width:132px; padding-right:9px; }
.ps-code-row-label { position:absolute; left:8px; top:0; font:700 10px/2.58 'DM Sans',system-ui,sans-serif; color:#4b5563; }
.ps-editor-card.reading-friendly #paper-code-shading { font-family:Verdana,Arial,system-ui,sans-serif; line-height:1.9; }
.ps-editor-card.reading-friendly #paper-code-shading > span { height:1.9em; }
.ps-editor-card.reading-friendly .ps-code-row-label { line-height:2.85; }
@media(max-width:600px) { .ps-code-origins #source-line-gutter { width:109px; } .ps-code-row-label { left:5px; font-size:9px; } .ps-code-legend { gap:8px 14px; font-size:11px; } }
#debug-line-highlight { position:absolute; z-index:0; left:0; right:0; height:1.72em; background:linear-gradient(90deg,rgba(196,246,154,.72),rgba(201,198,255,.48)); border-left:5px solid #4d842e; pointer-events:none; }
#debug-line-highlight[hidden] { display:none; }
#source-highlight,#source-editor { box-sizing:border-box; width:100%; min-height:450px; margin:0; border:0; padding:24px 25px; font:500 15px/1.72 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; tab-size:2; white-space:pre; }
#source-highlight { position:absolute; inset:0; z-index:1; overflow:hidden; color:#161b24; pointer-events:none; }
#source-highlight code { display:block; min-width:max-content; color:inherit; font:inherit; white-space:pre; }
#source-editor { position:absolute; inset:0; z-index:2; height:100%; resize:none; outline:0; overflow:auto; background:transparent; color:transparent; -webkit-text-fill-color:transparent; caret-color:#332ab7; }
.ps-editor-suggestions { position:absolute; z-index:6; width:min(330px,calc(100% - 20px)); overflow:hidden; border:1px solid #273143; border-radius:11px; background:#101722; color:#fff; box-shadow:0 15px 32px rgba(16,23,34,.24); }
.ps-editor-suggestions[hidden] { display:none; }
.ps-editor-suggestions-head { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:8px 10px; border-bottom:1px solid #2c384b; color:#c4f69a; font:800 10px/1.2 'DM Sans',system-ui,sans-serif; letter-spacing:.04em; text-transform:uppercase; }
.ps-editor-suggestions-head span { color:#aab3c3; font-size:8px; letter-spacing:0; text-transform:none; }
.ps-editor-suggestions ul { max-height:242px; overflow:auto; margin:0; padding:5px; list-style:none; }
.ps-editor-suggestions li { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 10px; align-items:center; border-radius:7px; padding:7px 8px; cursor:pointer; }
.ps-editor-suggestions li[aria-selected="true"] { background:#c4f69a; color:#172016; }
.ps-editor-suggestions code { overflow:hidden; color:inherit; font-size:13px; font-weight:800; text-overflow:ellipsis; white-space:nowrap; }
.ps-editor-suggestions small { grid-column:1/-1; overflow:hidden; color:#aeb8c8; font:600 9px/1.2 'DM Sans',system-ui,sans-serif; text-overflow:ellipsis; white-space:nowrap; }
.ps-editor-suggestions li[aria-selected="true"] small { color:#41632c; }
.ps-completion-kind { border:1px solid #46536a; border-radius:999px; padding:2px 6px; color:#c9c6ff; font:800 8px/1.1 'DM Sans',system-ui,sans-serif; text-transform:uppercase; }
.ps-editor-suggestions li[aria-selected="true"] .ps-completion-kind { border-color:#6d9d4c; color:#274518; }
.ps-editor-surface:focus-within { background:#fff; box-shadow:inset 0 0 0 3px rgba(65,57,195,.2); }
#source-editor::selection { background:#dcd9ff; }
.ps-token-keyword { color:#4b3bb2; font-weight:800; }
.ps-token-builtin { color:#845600; font-weight:750; }
.ps-token-string,.ps-token-char { color:#176641; }
.ps-token-number { color:#a03c24; }
.ps-token-comment { color:#626b78; font-style:italic; }
.ps-token-operator,.ps-token-bracket { color:#475467; font-weight:700; }
.ps-token-find { border-radius:3px; background:#ffe48d; box-shadow:0 0 0 1px #d0a822; }
.ps-token-bracket-match { border-radius:3px; background:#d8f4c8; box-shadow:0 0 0 1px #7faf5e; }
.ps-token-diagnostic { text-decoration:underline wavy #c24d42 1.5px; text-underline-offset:3px; }
.ps-editor-card.reading-friendly #source-highlight,.ps-editor-card.reading-friendly #source-editor,.ps-editor-card.reading-friendly #source-line-gutter { font-family:Verdana,Arial,system-ui,sans-serif; font-weight:500; line-height:1.9; letter-spacing:.025em; word-spacing:.08em; }
.ps-editor-card.reading-friendly .ps-gutter-line { height:1.9em; }
.ps-editor-footer { display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px 18px; align-items:flex-start; padding:13px 16px 14px 20px; border-top:1px solid #e2e6ec; background:#fff; }
.ps-editor-footer > p:not(.ps-visually-hidden) { flex:1 1 310px; color:#626975; font-size:11px; line-height:1.4; margin:0; }
kbd,code { font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
kbd { padding:2px 4px; border:1px solid #d5dae2; border-bottom-width:2px; border-radius:4px; background:#f5f7fa; color:#515762; font-size:10px; }
.ps-actions { display:flex; flex:1 1 580px; flex-wrap:wrap; justify-content:flex-end; gap:7px; min-width:0; max-width:100%; }
.ps-button { min-width:78px; min-height:44px; border-radius:9px; padding:0 14px; cursor:pointer; font:800 12px 'DM Sans',system-ui,sans-serif; }
.ps-button:disabled { opacity:.42; cursor:not-allowed; }
.ps-reset { order:1; border:1px solid var(--line); background:#fff; color:#636a76; }
.ps-debug-toggle { order:3; border:1px solid #171b22; background:#fff; color:#171b22; }
.ps-debug-toggle[aria-pressed="true"] { border-color:#4f7e35; background:#eafbdd; color:#284a18; }
.ps-debug-toggle span { margin-right:5px; color:#5a56b9; }
.ps-stop { order:4; border:1px solid #edc3bd; background:#fff5f3; color:#a94a40; }
.ps-check { order:5; border:1px solid #bfc8f8; background:#eef0ff; color:#3f3a9f; }
.ps-run { order:6; margin-left:auto; border:0; background:var(--ink); color:#fff; }
.ps-run span { color:var(--mint); margin-right:5px; }
.ps-submit-check { order:7; border:1px solid #7eae5c; background:var(--mint); color:#172016; }
.ps-submit-check span { margin-right:5px; color:#343087; }
.ps-mark-scheme { grid-column:2; min-width:0; overflow:hidden; border:1px solid #252b35; border-radius:15px; background:#fff; box-shadow:0 14px 32px rgba(20,29,43,.12); }
.ps-mark-scheme[hidden] { display:none; }
.ps-mark-scheme-head { display:flex; justify-content:space-between; align-items:center; gap:14px; padding:17px 18px; background:#101722; color:#fff; }
.ps-mark-scheme-head h2 { margin:2px 0 0; font-size:18px; }
.ps-mark-scheme-head .section-label { color:var(--mint); }
.ps-mark-scheme-head > strong { flex:none; padding:7px 10px; border-radius:999px; background:var(--mint); color:#172016; font-size:11px; }
.ps-mark-scheme-note { margin:0; padding:14px 18px; border-bottom:1px solid #e3e7ed; background:#f2f0ff; color:#4f4a78; font-size:12px; line-height:1.55; }
.ps-mark-scheme-content { max-height:650px; overflow:auto; padding:18px; }
.ps-mark-scheme-section + .ps-mark-scheme-section { margin-top:22px; padding-top:20px; border-top:2px solid #c4f69a; }
.ps-mark-scheme-section > h3,.ps-mark-scheme-guidance h3 { margin:0 0 11px; color:#343087; font-size:14px; }
.ps-mark-scheme-source p,.ps-mark-scheme-source li { color:#343a45; font-size:13px; line-height:1.55; }
.ps-mark-scheme-source p { margin:0 0 10px; }
.ps-mark-scheme-source ul { margin:0 0 12px; padding-left:21px; }
.ps-mark-scheme-source pre,.ps-mark-scheme-source .review-code { max-width:100%; overflow:auto; padding:13px; border:1px solid #dfe4eb; border-radius:10px; background:#f7f8fb; color:#171b22; font-size:12px; line-height:1.55; }
.ps-mark-scheme-source .scroll { max-width:100%; overflow:auto; }
.ps-mark-scheme-source table { width:100%; border-collapse:collapse; }
.ps-mark-scheme-source th,.ps-mark-scheme-source td { padding:8px; border:1px solid #dde2e9; text-align:left; vertical-align:top; }
.ps-mark-scheme-source img { display:block; max-width:100%; height:auto; }
.ps-mark-scheme-guidance { margin-top:16px; padding:14px; border:1px solid #efda8c; border-radius:11px; background:#fff8df; }
.ps-question-completion { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; margin:0 18px 14px; padding:14px; border:1px solid #cfe8b9; border-radius:12px; background:#f2ffe8; }
.ps-question-completion h3 { margin:0 0 4px; color:#172016; font-size:14px; }
.ps-question-completion p { margin:0; color:#52604a; font-size:12px; line-height:1.45; }
.ps-complete-question { min-width:130px; border-color:#79a958; background:var(--mint); color:#172016; }
.ps-complete-question.is-complete { border-color:#343087; background:#343087; color:#fff; }
.ps-completion-sign-in { display:inline-flex; align-items:center; min-height:40px; padding:8px 12px; border:1px solid #343087; border-radius:9px; color:#343087; font-weight:800; text-decoration:none; }
.ps-edit-answer { display:block; width:calc(100% - 36px); margin:0 18px 18px; border:1px solid #bfc8f8; background:#eef0ff; color:#3f3a9f; }
.ps-debug-side { grid-column:2; min-width:0; display:grid; grid-template-rows:minmax(300px,1fr) minmax(250px,.82fr); gap:12px; }
.ps-debug-side[hidden] { display:none; }
.ps-debug-inline { order:10; box-sizing:border-box; display:flex; flex:1 0 100%; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 14px; padding:8px 10px; border:1px solid #c9c6ff; border-radius:11px; background:#f4f2ff; }
.ps-debug-inline[hidden] { display:none; }
.ps-debug-inline > strong { flex:1 1 210px; color:#343087; font-size:12px; }
.ps-debug-inline button { min-height:40px; border:1px solid #c9c6ff; border-radius:8px; padding:0 12px; background:#fff; color:#3f3a9f; cursor:pointer; font:800 11px 'DM Sans',system-ui,sans-serif; }
.ps-debug-inline button[aria-pressed="true"] { border-color:#101722; background:#101722; color:#c4f69a; }
.ps-debug-inline button:disabled { opacity:.45; cursor:not-allowed; }
.ps-debug-playback { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.ps-debug-playback button:first-child { background:#c4f69a; color:#172016; border-color:#93c96d; }
.ps-debug-playback button kbd { margin-left:5px; border-color:#77a755; background:#eaffd9; color:#284a18; }
.ps-debug-side .ps-terminal { min-height:275px; display:flex; flex-direction:column; border-radius:15px; }
.ps-debug-side .ps-console { min-height:155px; flex:1; max-height:290px; }
.ps-watch { min-height:250px; overflow:hidden; border:1px solid #cbd3c5; border-radius:15px; background:#fff; box-shadow:0 14px 32px rgba(20,29,43,.08); }
.ps-watch-head { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:15px 17px; border-bottom:1px solid #e2e6ec; background:#efffe0; }
.ps-watch-head h2 { margin:1px 0 0; font-size:16px; }
.ps-watch-head > span { min-width:30px; height:30px; display:grid; place-items:center; border-radius:9px; background:#101722; color:#c4f69a; font-size:11px; font-weight:900; }
.ps-watch-empty { margin:0; padding:24px 18px; color:#68717f; font-size:12px; line-height:1.55; }
.ps-watch-scroll { max-height:330px; overflow:auto; }
.ps-watch table { width:100%; border-collapse:collapse; table-layout:fixed; font:500 11px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.ps-watch th { position:sticky; top:0; z-index:1; padding:9px 10px; background:#101722; color:#c4f69a; text-align:left; font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.ps-watch th:nth-child(1) { width:26%; }.ps-watch th:nth-child(2) { width:25%; }
.ps-watch td { padding:9px 10px; border-bottom:1px solid #e7e9ed; overflow-wrap:anywhere; vertical-align:top; }
.ps-watch td:nth-child(2) { color:#5a56b9; }.ps-watch td:nth-child(3) { color:#172016; font-weight:750; }
.ps-watch tr.changed td { animation:ps-watch-change 1.3s ease-out; }
.ps-watch tr.uninitialised td:nth-child(3) { color:#87909c; font-style:italic; font-weight:500; }
.ps-watch-name { display:grid; gap:2px; }.ps-watch-name small { color:#7b818d; font:700 8px 'DM Sans',system-ui,sans-serif; text-transform:uppercase; }
@keyframes ps-watch-change { from { background:#dfffc5; } to { background:transparent; } }
.ps-runtime-grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr); gap:17px; margin-top:17px; }
.ps-terminal { min-height:330px; overflow:hidden; background:var(--ps-terminal); color:#fff; border:1px solid #1f2b3c; border-radius:15px; box-shadow:0 14px 32px rgba(20,29,43,.13); }
.ps-terminal-head { display:flex; justify-content:space-between; align-items:center; min-height:56px; padding:0 18px; border-bottom:1px solid var(--ps-terminal-line); }
.ps-terminal-head > div { display:flex; align-items:center; gap:12px; }
.ps-terminal-head h2 { font-size:14px; margin:0; }
.ps-terminal-dots { display:flex; gap:5px; }
.ps-terminal-dots i { width:8px; height:8px; border-radius:50%; background:#ee786d; }
.ps-terminal-dots i:nth-child(2) { background:#f2c763; }.ps-terminal-dots i:nth-child(3) { background:#83ce63; }
.ps-status { display:inline-flex; align-items:center; gap:6px; padding:6px 9px; border-radius:20px; background:#202b3b; color:#9da8b8; font-size:10px; font-weight:800; }
.ps-status::before { content:''; width:7px; height:7px; border-radius:50%; background:#657187; }
.ps-status.running::before,.ps-status.waiting::before { background:var(--ps-lavender); box-shadow:0 0 0 3px rgba(201,198,255,.12); }
.ps-status.completed::before { background:var(--mint); }.ps-status.error::before,.ps-status.stopped::before { background:#ee786d; }
.ps-console { min-height:205px; max-height:390px; overflow:auto; padding:18px 20px; white-space:pre-wrap; word-break:break-word; font:500 14px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.ps-console-placeholder { color:#8794a8; margin:0; }
.ps-console-line { min-height:1.65em; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:10px; margin:0; }
.ps-console-kind { min-width:48px; margin-top:.25em; padding:3px 6px; border-radius:5px; color:#101722; text-align:center; font:850 8px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; letter-spacing:.07em; }
.ps-console-value { min-width:0; overflow-wrap:anywhere; }
.ps-console-output { color:var(--ps-output); }
.ps-console-output .ps-console-kind { background:var(--ps-output); }
.ps-console-input { color:var(--ps-input); }
.ps-console-input .ps-console-kind { background:var(--ps-input); }
.ps-console-value.empty { color:#8794a8; font-style:italic; }
.ps-console:focus-visible { outline:3px solid var(--mint); outline-offset:-4px; }
.ps-console-system { margin:0 0 8px; color:#8c9ab0; font-size:12px; }
.ps-input-row { padding:14px 18px 17px; border-top:1px solid var(--ps-terminal-line); background:#151f2c; }
.ps-input-row label { display:block; color:#9aa6b7; font-size:11px; margin-bottom:7px; }
.ps-input-row label strong { color:var(--mint); }
.ps-input-row > div { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:9px; }
.ps-input-row > div > span { color:var(--mint); font:700 18px ui-monospace,monospace; }
.ps-input-row input { min-width:0; height:42px; border:1px solid #3b485d; border-radius:8px; background:#0f1722; color:#fff; padding:0 11px; font:500 14px ui-monospace,monospace; }
.ps-input-row button { min-height:44px; border:0; border-radius:8px; background:var(--mint); color:#1c2816; padding:0 14px; font:800 11px 'DM Sans',sans-serif; cursor:pointer; }
.ps-file-viewer { margin:0 16px 16px; padding:14px; border:1px solid #34435a; border-radius:11px; background:#0b111a; }
.ps-file-viewer[hidden] { display:none; }
.ps-file-viewer-head { display:flex; justify-content:space-between; gap:12px; margin-bottom:10px; color:var(--mint); font-size:11px; }
.ps-file-viewer-head span { color:#8794a8; font-size:9px; text-transform:uppercase; letter-spacing:.08em; }
#virtual-file-list { display:grid; gap:9px; }
.ps-file { overflow:hidden; border:1px solid #2d394c; border-radius:8px; }
.ps-file summary { cursor:pointer; padding:9px 11px; color:var(--ps-output); font:750 12px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.ps-file pre { max-height:210px; overflow:auto; margin:0; padding:11px; border-top:1px solid #2d394c; background:#101722; color:#e7edf6; white-space:pre-wrap; font:500 12px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.ps-feedback { min-height:330px; padding:20px; }
.ps-feedback-head { display:flex; justify-content:space-between; align-items:flex-start; gap:15px; }
.ps-feedback-head h2 { font-size:18px; margin:0; }
.ps-feedback-count { min-width:29px; height:29px; border-radius:9px; display:grid; place-items:center; background:var(--violet-soft); color:var(--violet); font-size:11px; font-weight:800; }
.ps-diagnostic-empty { display:grid; justify-items:center; text-align:center; padding:45px 20px 30px; }
.ps-diagnostic-empty > span { width:46px; height:46px; display:grid; place-items:center; border-radius:13px; background:#eafbdd; color:#4e8f28; font-size:18px; }
.ps-diagnostic-empty p { max-width:340px; color:#626975; font-size:12px; line-height:1.5; margin:12px 0 0; }
.ps-diagnostic-list { display:grid; gap:9px; margin:18px 0 0; padding:0; list-style:none; }
.ps-diagnostic-item { border:1px solid #e0e4ea; border-left:4px solid var(--coral); border-radius:10px; padding:11px 12px; background:#fffafa; }
.ps-diagnostic-item.warning { border-left-color:#e2aa37; background:#fffaf0; }
.ps-diagnostic-item > div { display:flex; justify-content:space-between; gap:9px; align-items:start; }
.ps-diagnostic-item strong { font-size:13px; }
.ps-diagnostic-item button { min-height:44px; border:0; padding:8px 4px; background:transparent; color:var(--violet); cursor:pointer; font:800 10px 'DM Sans',sans-serif; }
.ps-diagnostic-item p { color:#676d78; font-size:13px; line-height:1.55; margin:6px 0 0; }
.ps-diagnostic-item code { display:block; margin-top:6px; color:#8a5c16; font-size:12px; white-space:pre-wrap; overflow-wrap:anywhere; }
.ps-run-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-top:18px; padding-top:15px; border-top:1px solid #e7e9ed; }
.ps-run-summary span { display:grid; gap:2px; padding:9px; border-radius:9px; background:#f3f5f8; }
.ps-run-summary small { color:#7b818d; font-size:9px; }.ps-run-summary strong { font-size:12px; }
.ps-review-note { text-align:center; color:#626975; font-size:11px; margin:23px 0 0; }
.ps-owner-review { margin-top:17px; padding:clamp(20px,3vw,30px); border:2px solid #181b20; background:#fff; }
.ps-owner-review[hidden] { display:none; }
.ps-owner-review-head { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; }
.ps-owner-review-head h2 { margin:2px 0 0; font-size:clamp(22px,3vw,30px); }
.ps-owner-review-head > strong { padding:9px 13px; border-radius:999px; background:var(--mint,#c4f69a); color:#172016; white-space:nowrap; }
.ps-owner-review > p { color:#626975; }
.ps-owner-review form { display:grid; gap:12px; }
.ps-owner-fine { display:flex!important; align-items:center; gap:10px; padding:14px 16px; border:1px solid #bddb9e; border-radius:12px; background:#efffe0; font-weight:800; cursor:pointer; }
.ps-owner-fine input { width:22px; height:22px; margin:0; accent-color:#4d842e; }
.ps-owner-review label[for="owner-review-feedback"] { font-weight:800; }
.ps-owner-review textarea { box-sizing:border-box; width:100%; resize:vertical; padding:14px; border:1px solid #acb4c1; border-radius:12px; background:#fbfcfe; color:#14181f; font:500 15px/1.55 'DM Sans',system-ui,sans-serif; }
.ps-owner-review textarea:disabled { opacity:.55; background:#f0f3ed; }
.ps-owner-review :focus-visible { outline:3px solid #5c54d8; outline-offset:3px; }
.ps-owner-review-actions { display:flex; justify-content:space-between; align-items:center; gap:18px; }
.ps-owner-review-actions span { color:#626975; font-size:13px; }
.ps-owner-review-actions button { min-height:48px; padding:0 20px; border:0; border-radius:999px; background:#050708; color:var(--mint,#c4f69a); cursor:pointer; font:800 14px 'DM Sans',system-ui,sans-serif; }
.ps-owner-review-actions button:disabled { opacity:.55; cursor:wait; }
.ps-visually-hidden { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
@media(max-width:1080px){.ps-workspace,.ps-workspace.debug-layout,.ps-workspace.scheme-layout{grid-template-columns:1fr}.ps-workspace.debug-layout .ps-question,.ps-workspace.debug-layout .ps-editor-card,.ps-workspace.scheme-layout .ps-question,.ps-workspace.scheme-layout .ps-editor-card,.ps-debug-side,.ps-mark-scheme{grid-column:1}.ps-workspace.scheme-layout .ps-editor-card{min-height:560px}.ps-mark-scheme-content{max-height:none}.ps-runtime-grid{grid-template-columns:1fr .8fr}.ps-debug-side{grid-template-columns:1fr 1fr;grid-template-rows:minmax(280px,auto)}}
@media(max-width:860px){.ps-shell{width:min(100% - 28px,760px);padding-bottom:100px}.ps-heading{align-items:flex-start}.ps-course-card{min-width:280px}.ps-question{display:block}.ps-requirements,.ps-safety-note,.ps-core-scope{display:grid}.ps-requirements{margin:24px 0}.ps-runtime-grid{grid-template-columns:1fr}.ps-debug-side{grid-template-columns:1fr;grid-template-rows:minmax(300px,auto) minmax(250px,auto)}.ps-editor-footer{align-items:flex-start;flex-direction:column}.ps-actions{width:100%;flex:0 0 auto}.ps-button{flex:1}.ps-debug-inline{width:100%;justify-content:flex-end}}
@media(max-width:620px){.ps-shell{width:min(100% - 20px,540px);padding-top:18px}.ps-heading{display:grid}.ps-heading h1{font-size:39px}.ps-course-card{min-width:0;width:100%}.ps-review-profile-nav{justify-content:flex-start}.ps-question,.ps-feedback{padding:17px}.ps-editor-head{align-items:flex-start}.ps-editor-meta{display:grid;text-align:right}.ps-find-bar{grid-template-columns:auto minmax(0,1fr) repeat(3,36px)}.ps-find-bar span{grid-column:2}.ps-editor-body,.ps-editor-surface{min-height:390px}#source-line-gutter{width:42px;padding:18px 9px 18px 0;font-size:14px}#source-highlight,#source-editor{min-height:390px;padding:18px 16px;font-size:14px}.ps-editor-footer{padding:12px}.ps-actions{position:sticky;bottom:10px;z-index:5;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:7px;background:rgba(255,255,255,.94);border:1px solid #d9dee6;border-radius:12px;box-shadow:0 12px 30px rgba(30,42,58,.18)}.ps-button{min-width:0}.ps-run,.ps-submit-check{grid-column:1/-1}.ps-terminal{min-height:300px}.ps-input-row>div{grid-template-columns:auto 1fr}.ps-input-row button{grid-column:2}.ps-run-summary{grid-template-columns:1fr}.ps-heading>div:first-child>p:last-child{font-size:14px}}
@media(max-width:620px){.ps-question-completion{grid-template-columns:1fr}.ps-complete-question,.ps-completion-sign-in{width:100%;justify-content:center}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.ps-watch tr.changed td{animation:none!important}}
@media(forced-colors:active){#source-highlight{visibility:hidden}#source-editor{color:CanvasText;-webkit-text-fill-color:CanvasText}.ps-editor-surface:focus-within{outline:2px solid Highlight;box-shadow:none}.ps-token-find,.ps-token-bracket-match{forced-color-adjust:none}.ps-editor-suggestions{border:2px solid CanvasText;background:Canvas;color:CanvasText}.ps-editor-suggestions li[aria-selected="true"]{outline:2px solid Highlight;background:Highlight;color:HighlightText}}
.ps-declaration-preview { padding:16px 22px; background:#edffd8; color:#172016; border-block:1px solid #c6e5aa; font-size:14px; }
.ps-declaration-preview p { margin:8px 0; }
.ps-declaration-preview ul { padding-left:20px; margin:8px 0 0; }
.ps-declaration-preview li { margin:6px 0; overflow-wrap:anywhere; }
.ps-declaration-preview code { color:#080b09; font-weight:700; }
/* Local practice catalogue and Test Maker embedded workspace. */
.ps-practice-controls{display:flex;flex-wrap:wrap;gap:1rem;margin:1.5rem 0}
.ps-practice-controls label{display:grid;gap:.5rem;font-weight:700;flex:1;min-width:12rem}
.ps-practice-controls select{font:inherit;padding:.8rem;border:1px solid #6c7380;border-radius:12px;background:#fff;color:#101317}
.ps-practice-catalog{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1rem}
.ps-practice-card{padding:1.5rem;border:1px solid #cbd1da;border-radius:20px;background:#fff;color:#101317}
.ps-practice-card.is-complete{border-color:#79a958;box-shadow:inset 0 0 0 1px #79a958}
.ps-practice-card h2{font-size:1.15rem;margin:1rem 0}.ps-practice-card a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.ps-practice-tags{color:#49426f}.ps-difficulty{display:inline-block;padding:.3rem .8rem;border-radius:999px;font-weight:800}
.ps-practice-completion{margin:.85rem 0 0;color:#59616d;font-weight:800}.ps-practice-card.is-complete .ps-practice-completion{color:#35651c}
.ps-difficulty-easy{background:#c9f6a0;color:#234a10}.ps-difficulty-medium{background:#fff0a8;color:#594500}.ps-difficulty-hard{background:#ffd6d0;color:#72251b}
.ps-difficulty-unclassified{background:#e9e9ee;color:#474751}
.ps-embedded .topbar,.ps-embedded .course-access-bar,.ps-embedded .ps-back,.ps-embedded .ps-heading,.ps-embedded [data-lab-home],.ps-embedded .ps-question,.ps-embedded .ps-owner-review{display:none}
.ps-embedded .ps-workspace{grid-template-columns:minmax(0,1fr)}
.ps-embedded .ps-workspace.scheme-layout{grid-template-columns:minmax(0,1.35fr) minmax(360px,.85fr)}
.ps-embedded .ps-shell{width:100%;max-width:none;margin:0;padding:1rem}.ps-embedded #lab-editor-view{margin:0}
@media(max-width:1080px){.ps-embedded .ps-workspace.scheme-layout{grid-template-columns:1fr}}
.paper2-formulas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: 1rem;
  margin: 1rem 0 1.5rem;
}

.paper2-formula {
  margin: 0;
  padding: 1rem;
  border: 1px solid var(--line, #d9dce5);
  border-radius: 1rem;
  background: var(--surface, #fff);
  color: var(--ink, #11131a);
}

.paper2-formula svg {
  display: block;
  width: 100%;
  height: auto;
  color: var(--violet, #5142d6);
}

.paper2-formula svg path,
.paper2-formula svg circle,
.paper2-formula svg ellipse {
  fill: none;
  stroke: currentColor;
  stroke-width: 2.5;
  vector-effect: non-scaling-stroke;
}

.paper2-formula svg text {
  fill: var(--ink, #11131a);
  stroke: none;
  font: 600 14px system-ui, sans-serif;
}

.paper2-formula figcaption {
  margin-top: .5rem;
  color: var(--muted, #626875);
  line-height: 1.45;
}
