:root{--ink:#17221f;--ink-soft:#4d5c56;--paper:#f4f1e9;--paper-deep:#e9e4d8;--white:#fffef9;--night:#152a25;--night-soft:#25433b;--teal:#167c69;--teal-bright:#1fa889;--mint:#d8efe7;--amber:#d8892d;--amber-soft:#f6e6cb;--coral:#bd5e4d;--red-soft:#f7deda;--blue:#426f87;--line:#d8d2c4;--shadow:0 18px 45px #21302a17;--radius-lg:24px;--radius-md:15px;--radius-sm:9px;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--serif:Iowan Old Style, Charter, "Palatino Linotype", Palatino, Georgia, serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink)}body{background:radial-gradient(circle at 86% 5%, #1fa8891a, transparent 26rem), var(--paper);min-height:100vh;color:var(--ink);font-family:var(--sans);margin:0;font-size:15px;line-height:1.55}button,input,select,textarea{color:inherit;font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #1fa88947}button:disabled,fieldset:disabled,a[aria-disabled=true]{cursor:not-allowed;opacity:.62}a[aria-disabled=true]{pointer-events:none}.app-shell{max-width:1460px;min-height:100vh;margin:0 auto;padding:0 52px 80px}.topbar{border-bottom:1px solid #17221f21;justify-content:space-between;align-items:center;min-height:96px;display:flex}.brand-lockup,.identity,.workspace-title,.save-status,.assignment-card-top,.part-label{align-items:center;display:flex}.brand-lockup{gap:14px}.brand-mark{background:var(--night);color:var(--white);font-family:var(--serif);border-radius:13px;justify-content:center;align-items:center;width:52px;height:52px;font-size:28px;font-style:italic;display:flex}.brand-kicker{color:var(--teal);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:10px;font-weight:800}.brand-lockup h1{font-family:var(--serif);letter-spacing:-.02em;margin:3px 0 0;font-size:26px;line-height:1.05}.identity{gap:12px}.identity strong,.identity span{display:block}.identity strong{font-size:13px}.identity div>span{color:var(--ink-soft);font-size:11px}.role-chip,.module-tag,.workspace-title>span{background:var(--mint);color:var(--teal);letter-spacing:.08em;text-transform:uppercase;border:1px solid #167c6933;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800}.dashboard-hero{grid-template-columns:minmax(0,1fr) 370px;align-items:stretch;gap:60px;padding:78px 0 62px;display:grid}.dashboard-hero>div:first-child{max-width:770px}.eyebrow{color:var(--teal);letter-spacing:.15em;text-transform:uppercase;margin:0 0 13px;font-size:11px;font-weight:800}.dashboard-hero h2{font-family:var(--serif);letter-spacing:-.045em;margin:0;font-size:clamp(42px,5vw,68px);font-weight:500;line-height:.98}.dashboard-hero>div:first-child>p:last-child{color:var(--ink-soft);max-width:680px;margin:25px 0 0;font-size:17px}.durability-card{background:var(--night);border-radius:var(--radius-lg);box-shadow:var(--shadow);color:#dce9e4;padding:30px;position:relative}.durability-card:after{content:"";border:1px solid #ffffff14;border-radius:50%;width:150px;height:150px;position:absolute;top:-72px;right:-56px}.live-dot{background:#64d4b8;border:4px solid #64d4b82b;border-radius:50%;width:14px;height:14px;display:inline-block}.durability-card>p{color:#9db8ae;letter-spacing:.1em;text-transform:uppercase;margin:22px 0 3px;font-size:11px;font-weight:700}.durability-card>strong{color:var(--white);font-family:var(--serif);font-size:28px;font-weight:500}.durability-card dl{border-top:1px solid #ffffff1f;margin:24px 0 0;padding-top:19px}.durability-card dl div{grid-template-columns:70px 1fr;gap:14px;margin-top:8px;display:grid}.durability-card dt{color:#8da99f;font-size:11px}.durability-card dd{margin:0;font-size:12px}.dashboard-section{margin-top:32px}.section-heading{justify-content:space-between;align-items:flex-end;margin-bottom:22px;display:flex}.section-heading h2{font-family:var(--serif);letter-spacing:-.025em;margin:0;font-size:30px;font-weight:500}.section-heading .eyebrow{margin-bottom:3px}.section-note{color:var(--ink-soft);margin:6px 0 0}.primary-button,.secondary-button,.export-button,.submit-button,.reference-button,.file-button,.back-button{border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;min-height:42px;padding:0 17px;font-size:12px;font-weight:750;text-decoration:none;transition:transform .15s,background .15s,border-color .15s;display:inline-flex}.primary-button,.export-button,.submit-button{background:var(--teal);border:1px solid var(--teal);color:var(--white)}.primary-button:hover,.export-button:hover,.submit-button:hover:not(:disabled){background:#0f6a59;transform:translateY(-1px)}.secondary-button,.reference-button,.file-button,.back-button{border:1px solid var(--line);color:var(--ink);background:#fffef9b8}.secondary-button:hover,.reference-button:hover,.file-button:hover,.back-button:hover{background:var(--white);border-color:#bcb5a6}.assignment-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.assignment-card{border:1px solid var(--line);border-radius:var(--radius-md);background:#fffef9db;padding:24px;box-shadow:0 8px 24px #21302a0a}.assignment-card-top{justify-content:space-between}.status-text{color:var(--teal);text-transform:uppercase;font-size:10px;font-weight:750}.assignment-card h3{font-family:var(--serif);margin:25px 0 6px;font-size:25px;font-weight:500;line-height:1.08}.assignment-card>p{color:var(--ink-soft);overflow-wrap:anywhere;margin:0 0 23px;font-size:11px}.progress-track{background:var(--paper-deep);border-radius:999px;height:7px;overflow:hidden}.progress-track span{background:linear-gradient(90deg, var(--teal), var(--teal-bright));border-radius:inherit;height:100%;transition:width .28s;display:block}.progress-copy{align-items:baseline;gap:9px;margin-top:9px;display:flex}.progress-copy strong{font-family:var(--serif);font-size:25px;font-weight:500}.progress-copy span{color:var(--ink-soft);font-size:10px}.card-action{width:100%;margin-top:22px}.inline-form{background:var(--amber-soft);border-radius:var(--radius-md);border:1px solid #d8892d4d;grid-template-columns:1fr 1fr .8fr auto;align-items:end;gap:14px;margin-bottom:18px;padding:18px;display:grid}.inline-form label span{text-transform:uppercase;margin-bottom:6px;font-size:10px;font-weight:750;display:block}.inline-form input,.part-block input,.part-block textarea,.part-block select{background:var(--white);border:1px solid #cbc4b6;border-radius:8px;width:100%;min-height:42px;padding:9px 11px}.inline-form input:focus,.part-block input:focus,.part-block textarea:focus,.part-block select:focus{border-color:var(--teal)}.form-error{color:var(--coral);grid-column:1/-1;margin:0;font-size:12px}.recovery-section{border-top:1px solid var(--line);margin-top:64px;padding-top:42px}.file-button{position:relative}.file-button input{opacity:0;width:1px;height:1px;position:absolute}.inline-message{background:var(--mint);color:#235b50;border-radius:8px;margin:0 0 14px;padding:10px 12px}.recovery-list{border:1px solid var(--line);border-radius:var(--radius-md);background:#fffef9a6;overflow:hidden}.recovery-list article{border-bottom:1px solid var(--line);align-items:flex-start;gap:15px;padding:18px;display:flex}.recovery-list article:last-child{border-bottom:0}.hash-mark{background:var(--night);color:var(--white);font-family:var(--mono);border-radius:8px;flex:none;justify-content:center;align-items:center;width:35px;height:35px;display:flex}.recovery-list strong{font-size:13px}.recovery-list p,.empty-copy{color:var(--ink-soft);margin:3px 0;font-size:11px}.recovery-list code{color:var(--teal);font-family:var(--mono);overflow-wrap:anywhere;font-size:9px}.restore-button{background:var(--mint);color:#15594c;cursor:pointer;border:1px solid #a9cfc4;border-radius:7px;margin-top:10px;padding:7px 9px;font-size:9px;font-weight:750;display:block}.empty-copy{padding:22px}.center-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:40px;display:flex}.center-state h1{font-family:var(--serif);margin:18px 0 4px;font-size:38px;font-weight:500}.center-state p{color:var(--ink-soft)}.loader-mark{gap:5px;display:flex}.loader-mark span{background:var(--teal);border-radius:999px;width:10px;height:10px;animation:1.1s infinite alternate pulse}.loader-mark span:nth-child(2){animation-delay:.18s}.loader-mark span:nth-child(3){animation-delay:.36s}@keyframes pulse{to{opacity:.25;transform:translateY(-7px)}}.workspace-shell{background:var(--paper);min-height:100vh}.workspace-topbar{background:var(--night);color:var(--white);z-index:20;grid-template-columns:auto minmax(220px,1fr) auto auto auto;align-items:center;gap:18px;min-height:76px;padding:12px 24px;display:grid;position:sticky;top:0}.workspace-topbar .back-button{color:var(--white);background:#ffffff12;border-color:#ffffff2b}.workspace-title{gap:10px}.workspace-title strong{font-family:var(--serif);font-size:20px;font-weight:500}.save-status{color:#c9dbd4;border-radius:999px;gap:7px;padding:7px 10px;font-size:10px}.save-status>span{background:#70d5bc;border-radius:50%;width:7px;height:7px}.save-status.dirty,.save-status.saving{color:#f3cf9c;background:#d8892d21}.save-status.dirty>span,.save-status.saving>span{background:#e9a551}.save-status.conflict{color:#ffd0c8;background:#bd5e4d2e}.save-status.conflict>span{background:#ea8775}.export-button{background:var(--teal-bright);border-color:#0000}.export-actions{gap:6px;display:flex}.export-button.markdown{background:#ffffff14;border-color:#fff3}.export-button.markdown:hover{background:#ffffff26}.submit-button{color:#39270d;background:#f2c36e;border-color:#0000}.error-banner{background:var(--red-soft);color:#6d3026;z-index:19;border-bottom:1px solid #dba9a0;align-items:center;gap:8px;padding:10px 24px;display:flex;position:sticky;top:76px}.error-banner button{color:inherit;cursor:pointer;background:0 0;border:0;margin-left:auto;font-weight:700}.workspace-grid{grid-template-columns:245px minmax(0,1fr);max-width:1580px;margin:0 auto;display:grid}.item-rail{border-right:1px solid var(--line);align-self:start;height:calc(100vh - 76px);padding:24px 17px 60px;position:sticky;top:76px;overflow-y:auto}.rail-progress{background:var(--white);border:1px solid var(--line);border-radius:12px;margin-bottom:25px;padding:15px}.rail-progress p{color:var(--ink-soft);text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.rail-progress strong{font-family:var(--serif);margin:4px 0 9px;font-size:33px;font-weight:500;display:block}.rail-progress>span{color:var(--ink-soft);margin-top:7px;font-size:9px;display:block}.rail-module{margin-top:24px}.rail-module h2{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;margin:0 8px 8px;font-size:10px}.rail-item{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;width:100%;margin:2px 0;padding:8px 9px;display:flex}.rail-item:hover{background:#fffef9bf}.rail-item.active{background:var(--night);color:var(--white)}.rail-item span{font-family:var(--mono);font-size:11px}.rail-item b{color:var(--ink-soft);font-size:9px;font-weight:650}.rail-item.active b{color:#aac1b9}.rail-item.complete:not(.active) b{color:var(--teal)}.coding-canvas{width:100%;max-width:1060px;margin:0 auto;padding:48px 54px 100px}.record-context{justify-content:space-between;align-items:flex-end;gap:30px;display:flex}.record-context h1{font-family:var(--serif);letter-spacing:-.035em;margin:0;font-size:clamp(32px,4.2vw,49px);font-weight:500;line-height:1.04}.record-context h1>span{color:var(--teal);font-family:var(--mono);letter-spacing:0;margin-bottom:7px;font-size:14px;font-weight:700;display:block}.reference-button{flex:none}.blinding-note{background:var(--amber-soft);border:1px solid #d8892d45;border-radius:11px;align-items:flex-start;gap:10px;margin:30px 0 18px;padding:12px 14px;display:flex}.blinding-note span{color:var(--amber);font-size:20px;line-height:1}.blinding-note p{color:#705128;margin:0;font-size:11px}.restore-notice{border-radius:var(--radius-sm);color:#15594c;background:#eaf4f0;border:1px solid #a9cfc4;margin:0 0 17px;padding:12px 14px}.restore-notice strong{letter-spacing:.04em;text-transform:uppercase;font-size:10px}.restore-notice p{color:var(--ink-soft);margin:4px 0 0;font-size:10px}.evidence-panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;box-shadow:0 7px 22px #21302a09}.evidence-meta{grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.evidence-meta div{border-right:1px solid var(--line);padding:16px 18px}.evidence-meta div:last-child{border-right:0}.evidence-meta dt,.evidence-text>span{color:var(--teal);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:800}.evidence-meta dd{color:var(--ink-soft);margin:4px 0 0;font-size:11px}.evidence-meta code{font-family:var(--mono);overflow-wrap:anywhere;font-size:9px}.evidence-text{border-top:1px solid var(--line);background:#f8f6ef;padding:21px 22px}.evidence-text p{color:#374941;font-family:var(--serif);margin:7px 0 0;font-size:16px;line-height:1.65}.field-stack{gap:15px;margin-top:27px;display:grid}.field-card{border:1px solid var(--line);border-radius:var(--radius-md);background:#fffef9e0;margin:0;padding:0 21px 21px}.field-card.coded{border-left:4px solid var(--teal)}.field-card.non-core{border-style:dashed}.field-card legend{align-items:center;gap:8px;width:calc(100% + 14px);margin-left:-7px;padding:17px 7px 8px;display:flex}.field-card legend>span:nth-child(2){font-family:var(--serif);font-size:19px}.field-code{background:var(--night);color:var(--white);font-family:var(--mono);border-radius:6px;padding:4px 6px;font-size:9px}.field-card legend em{color:var(--amber);text-transform:uppercase;font-size:9px;font-style:normal;font-weight:700}.field-card legend b{color:var(--ink-soft);text-transform:uppercase;margin-left:auto;font-size:9px;font-weight:700}.field-card.coded legend b{color:var(--teal)}.field-definition{color:var(--ink-soft);max-width:850px;margin:0 0 17px;font-size:11px}.parts-grid{gap:16px;display:grid}.part-block{display:block}.part-label{justify-content:space-between;margin-bottom:7px}.part-label>span:first-child{font-size:11px;font-weight:720}.part-label sup{color:var(--coral);letter-spacing:.06em;text-transform:uppercase;margin-left:6px;font-size:7px}.part-status{color:var(--ink-soft);text-transform:uppercase;font-size:8px;font-style:normal;font-weight:700}.part-status.saving,.part-status.dirty{color:var(--amber)}.part-status.saved{color:var(--teal)}.part-status.error,.part-status.conflict{color:var(--coral)}.part-block textarea{resize:vertical;min-height:108px}.check-grid{flex-wrap:wrap;gap:7px;display:flex}.check-grid label{background:var(--white);cursor:pointer;border:1px solid #cbc4b6;border-radius:999px;align-items:center;gap:5px;padding:7px 10px;font-size:10px;display:flex}.check-grid label.selected{background:var(--mint);border-color:var(--teal);color:#115849}.check-grid input{accent-color:var(--teal);width:12px;height:12px;min-height:auto;margin:0;padding:0}.part-help{color:var(--ink-soft);margin:6px 0 0;font-size:9px}.derived-value{background:var(--mint);border:1px solid #a9cfc4;border-radius:9px;grid-template-columns:auto 1fr;align-items:baseline;gap:4px 12px;padding:12px 14px;display:grid}.derived-value span{color:var(--teal);letter-spacing:.07em;text-transform:uppercase;font-size:9px;font-weight:800}.derived-value strong{color:#15594c;font-family:var(--mono);font-size:11px}.derived-value p{color:var(--ink-soft);grid-column:1/-1;margin:0;font-size:9px}.consistency-warnings{background:var(--amber-soft);color:#6c4a17;border:1px solid #dfc188;border-radius:9px;margin-top:14px;padding:11px 13px;font-size:10px}.consistency-warnings strong{letter-spacing:.06em;text-transform:uppercase;font-size:9px}.consistency-warnings ul{margin:5px 0 0;padding-left:17px}.consistency-warnings li+li{margin-top:3px}.void-message{background:var(--paper-deep);color:var(--ink-soft);border-radius:8px;padding:13px;font-size:11px}.conflict-panel{background:var(--red-soft);border:1px solid #dfa99f;border-radius:10px;grid-template-columns:1fr auto auto;align-items:center;gap:10px;margin-top:16px;padding:12px;display:grid}.conflict-panel strong{color:#7a3428;font-size:11px}.conflict-panel p{color:#88584f;margin:2px 0 0;font-size:9px}.conflict-panel button{background:var(--white);cursor:pointer;border:1px solid #cf9a90;border-radius:7px;padding:8px 10px;font-size:9px;font-weight:700}.item-pagination{border-top:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:20px;margin-top:28px;padding-top:23px;display:grid}.item-pagination>span{color:var(--ink-soft);text-align:center;font-size:9px}@media (width<=1050px){.app-shell{padding:0 28px 60px}.dashboard-hero{grid-template-columns:1fr 320px;gap:30px}.assignment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-topbar{grid-template-columns:auto 1fr auto auto}.save-status{display:none}.coding-canvas{padding:38px 32px 80px}}@media (width<=760px){.app-shell{padding:0 18px 45px}.topbar{align-items:flex-start;gap:18px;padding:18px 0}.identity{text-align:right;flex-direction:column;align-items:flex-end}.role-chip{display:none}.dashboard-hero{grid-template-columns:1fr;gap:24px;padding:46px 0 42px}.dashboard-hero h2{font-size:43px}.assignment-grid{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:flex-start;gap:15px}.inline-form{grid-template-columns:1fr}.workspace-topbar{grid-template-columns:auto 1fr auto auto;padding:9px 12px}.workspace-title{display:none}.export-button{padding:0 12px;font-size:0}.export-button:after{content:"Export";font-size:11px}.export-button.markdown{display:none}.workspace-grid{display:block}.item-rail{border-bottom:1px solid var(--line);z-index:10;border-right:0;gap:5px;height:auto;padding:10px 12px;display:flex;position:sticky;top:60px;overflow-x:auto}.rail-progress,.rail-module h2{display:none}.rail-module{gap:5px;margin:0;display:flex}.rail-item{flex:none;gap:9px;width:auto;margin:0}.coding-canvas{padding:30px 16px 70px}.record-context{flex-direction:column;align-items:flex-start}.evidence-meta{grid-template-columns:1fr}.evidence-meta div{border-bottom:1px solid var(--line);border-right:0}.conflict-panel{grid-template-columns:1fr;align-items:stretch}.item-pagination{grid-template-columns:1fr 1fr}.item-pagination>span{display:none}}
