@import url('https://fonts.googleapis.com/css2?family=DM+Mono&family=Manrope:wght@400;500;600;700;800&family=Playfair+Display:wght@600;700&display=swap');
.phase{border:0;border-left:3px solid var(--phase);text-align:left;width:100%;cursor:pointer;font-family:Manrope}.phase:hover,.phase-active{background:#edf6f2!important;outline:1px solid #c7ddd6}
.cell canvas{display:block;width:100%;height:100%}
.database-grid{grid-template-columns:minmax(235px,.5fr) minmax(620px,2.25fr)}.viz-grid{grid-template-columns:1fr}.viz-grid>div:first-child{width:100%}.chart-wrap{height:480px}.detail{min-height:780px}
.chart-controls{display:flex;justify-content:space-between;gap:8px;padding-top:7px;color:#71817e;font:9px 'DM Mono'}.chart-controls button{border:0;border-bottom:1px solid #73968e;background:none;padding:0;color:#2e7166;font:inherit;cursor:pointer}
:root{--ink:#192228;--muted:#708080;--paper:#f7f7f3;--line:#dfe3dc;--mint:#64d6c4;--deep:#203b3a;--lilac:#a78bfa}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:#203b3a;color:#edf8f5;padding:30px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{font-size:21px;font-weight:800;line-height:1.1;display:flex;gap:10px;align-items:center;color:inherit;text-decoration:none}.brand small{display:block;font-family:'DM Mono',monospace;font-size:8px;letter-spacing:.7px;color:#a9c7c1;margin-top:5px}.brand-mark{display:grid;place-items:center;border:1px solid #86e1d2;width:30px;height:30px;color:#86e1d2;font-family:'Playfair Display';font-size:21px}nav{margin-top:70px;display:grid;gap:7px}nav a{padding:11px 12px;border-radius:5px;color:#c5d7d2;text-decoration:none;font-size:13px;font-weight:600}nav a.active,nav a:hover{color:white;background:#31514e}nav span{float:right;font:10px 'DM Mono';padding-top:2px}.sidebar-note{margin-top:auto;border-top:1px solid #46625f;padding:18px 4px;font:11px/1.7 'DM Mono';color:#bad3ce}.sidebar-note small{color:#78958f}.pulse{display:inline-block;width:6px;height:6px;border-radius:50%;background:#74e1cf;margin-right:6px}.content{padding:44px 56px 25px;max-width:1480px;width:100%;margin:auto}header{display:flex;justify-content:space-between;align-items:start;margin-bottom:42px}.eyebrow{font:10px 'DM Mono';letter-spacing:1.35px;color:#63817c;margin:0 0 10px}h1,h2{font-family:'Playfair Display',serif;letter-spacing:-.8px;margin:0}h1{font-size:42px}h2{font-size:30px}.outline,.dark-button{border:1px solid #93aaa3;background:transparent;padding:12px 17px;border-radius:3px;color:var(--deep);font:600 12px Manrope;cursor:pointer}.outline:hover{background:#e8f1ed}.toolbar{display:flex;gap:18px;justify-content:space-between;margin-bottom:18px;align-items:center}.search{background:white;border:1px solid var(--line);padding:10px 12px;display:flex;align-items:center;gap:8px;width:330px;border-radius:3px}.search span{font-size:22px;line-height:12px;color:#789}.search input{border:0;outline:0;width:100%;font:12px Manrope}.filters{display:flex;gap:5px;flex-wrap:wrap}.filter{border:1px solid transparent;background:none;color:#6c7a79;font:11px Manrope;padding:7px 9px;cursor:pointer;border-radius:3px}.filter:hover,.filter.selected{background:#e2eeea;color:#21413d;border-color:#c6ddd7}.database-grid{display:grid;grid-template-columns:minmax(260px, .72fr) minmax(500px,1.65fr);gap:20px}.record-list{display:grid;gap:8px;align-content:start}.record{border:1px solid var(--line);background:#fff;padding:16px;cursor:pointer;border-radius:3px;transition:.15s}.record:hover,.record.active{border-color:#76b6ab;box-shadow:0 4px 12px #183c3310}.record-top{display:flex;justify-content:space-between;gap:8px}.record h3{font-size:13px;margin:0 0 5px}.record p{font:10px 'DM Mono';color:#72807e;margin:0}.record-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:15px}.type{font:10px 'DM Mono';text-transform:uppercase;letter-spacing:.3px}.status{font:9px 'DM Mono';padding:4px 6px;border-radius:10px}.checked{background:#dff4ef;color:#27675b}.unchecked{background:#edf0ef;color:#667271}.needs_review{background:#fff0d7;color:#9d6523}.detail{border:1px solid var(--line);background:#fff;min-height:520px;padding:28px}.detail-head{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);padding-bottom:20px}.detail h2{font-size:29px}.detail .formula{font:13px 'DM Mono';color:#607473;margin:7px 0 0}.meta{display:grid;grid-template-columns:1fr 1fr;gap:11px 25px;padding:18px 0;font-size:11px}.meta strong{display:block;font:9px 'DM Mono';letter-spacing:.5px;color:#778886;margin-bottom:3px}.viz-grid{display:grid;grid-template-columns:1.45fr .9fr;gap:18px;border-top:1px solid var(--line);padding-top:18px}.viz-title{font:10px 'DM Mono';color:#617775;margin-bottom:7px}.chart-wrap{height:210px;background:#f8faf8;border:1px solid #edf0ec;padding:9px;position:relative}.chart-wrap canvas{width:100%;height:100%}.axis{position:absolute;bottom:8px;right:10px;font:9px 'DM Mono';color:#778}.phase-list{display:grid;gap:7px;margin-bottom:12px}.phase{border-left:3px solid var(--phase);background:#fafbf9;padding:7px 9px;font-size:10px}.phase small{display:block;color:#72807e;font-family:'DM Mono';margin-top:2px}.cell{height:119px;border:1px solid #e8ece7;background:linear-gradient(135deg,#fbfdfb,#f1f7f3);position:relative;overflow:hidden}.cube{position:absolute;width:63px;height:63px;border:1.6px solid var(--phase);left:calc(50% - 31px);top:26px;transform:skewY(-24deg) rotate(23deg);opacity:.9}.cube:before,.cube:after{content:"";position:absolute;border:1.5px solid var(--phase);width:63px;height:63px;left:16px;top:-17px;opacity:.6}.cube:after{left:-17px;top:16px}.cell-label{position:absolute;bottom:7px;left:8px;font:9px 'DM Mono';color:#637674}.note{font-size:11px;background:#fff9ec;border-left:3px solid #f1bf6b;margin-top:17px;padding:9px 10px;line-height:1.55}.callout{margin:70px 0;background:#d6eee7;padding:35px 40px;display:flex;justify-content:space-between;gap:28px;align-items:center}.callout p:not(.eyebrow){max-width:650px;font-size:13px;line-height:1.7;color:#405a55}.dark-button{background:#203b3a;color:white;border-color:#203b3a;text-decoration:none;white-space:nowrap}.guide{padding-bottom:46px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:25px}.steps>div{border-top:1px solid #afc6be;padding-top:12px}.steps b{font:11px 'DM Mono';color:#4b8f83}.steps h3{font-size:13px;margin:12px 0 6px}.steps p{color:#6a7977;font-size:11px;line-height:1.65;margin:0}footer{border-top:1px solid var(--line);padding-top:18px;font:10px 'DM Mono';color:#788785}footer a{color:#355c54}@media(max-width:850px){.shell{display:block}.sidebar{height:auto;position:relative;padding:18px;display:block}.sidebar nav{margin:22px 0 0;display:flex}.sidebar-note{display:none}.content{padding:30px 20px}.database-grid,.viz-grid{grid-template-columns:1fr}header,.toolbar,.callout{display:block}.outline{margin-top:18px}.search{width:100%;margin-bottom:10px}.steps{grid-template-columns:1fr 1fr}}@media(max-width:480px){h1{font-size:31px}.steps{grid-template-columns:1fr}.meta{grid-template-columns:1fr}.detail{padding:18px}}
.file-button input{display:none}.file-button{display:inline-block}
.header-actions{display:flex;gap:8px;align-items:center}.header-actions a{display:inline-block;text-decoration:none}
.upload-section{margin:70px 0;border-top:1px solid var(--line);padding-top:46px}.upload-intro{max-width:700px}.upload-intro>p:last-child{font-size:13px;line-height:1.7;color:#536966}.upload-form{margin-top:25px;border:1px solid var(--line);background:#fff;padding:25px}.upload-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px}.upload-steps>div{background:#f3f8f5;padding:11px 12px;display:grid;grid-template-columns:25px 1fr;column-gap:7px}.upload-steps span{grid-row:span 2;color:#3d8d80;font:16px 'Playfair Display'}.upload-steps b{font-size:11px}.upload-steps small{font:9px 'DM Mono';color:#778886;margin-top:2px}.file-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.drop-field{min-height:105px;padding:17px;border:1px dashed #91afa7;background:#fbfdfb;cursor:pointer;display:flex;flex-direction:column;justify-content:center;gap:7px}.drop-field:hover{background:#f1f8f4;border-color:#4f9388}.drop-field input{display:none}.drop-field strong{font-size:12px}.drop-field span{font:10px 'DM Mono';color:#72807e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-preview{display:grid;grid-template-columns:.8fr 1.4fr;gap:18px;align-items:center;margin:18px 0;padding:15px;background:#f4f8f6;border:1px solid #e0ebe6}.upload-preview h3{font-size:13px;margin:0 0 6px}.upload-preview p:not(.eyebrow){font:10px 'DM Mono';color:#607672;margin:0}.upload-chart{height:145px}.upload-chart canvas{display:block;width:100%;height:100%}.empty-preview .upload-chart{opacity:.22}.metadata{border:0;border-top:1px solid var(--line);padding:18px 0 0;margin:0}.metadata legend{padding:0 8px 0 0;font:10px 'DM Mono';letter-spacing:.7px;color:#617775}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.form-grid label{display:grid;gap:5px;font:10px 'DM Mono';color:#5c716d}.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid #d9e3df;background:#fcfdfc;border-radius:2px;padding:9px;font:12px Manrope;color:var(--ink);outline:none}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#5aa395;box-shadow:0 0 0 2px #64d6c422}.form-grid textarea{resize:vertical}.form-wide{grid-column:1/-1}.upload-actions{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-top:18px}.upload-actions p{margin:0;font:10px 'DM Mono';color:#617775}.upload-actions button:disabled{opacity:.6;cursor:wait}.upload-success{color:#287a69!important}.upload-error{color:#aa533f!important}
@media(max-width:850px){.file-grid,.upload-preview{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){.header-actions{flex-wrap:wrap}.upload-form{padding:17px}.upload-steps,.form-grid{grid-template-columns:1fr}.upload-steps>div{min-height:54px}}
.upload-panel{position:relative;border:1px solid #dfe8e3;background:#fcfdfc;padding:18px;margin-top:12px;transition:.18s}.upload-panel.complete-panel{border-color:#6faf9f;background:#fbfefc}.panel-heading{display:flex;justify-content:space-between;gap:14px;align-items:start;margin-bottom:14px}.panel-heading>div{display:grid;grid-template-columns:30px 1fr;column-gap:8px}.panel-heading span,.metadata legend span:first-child{color:#438b7e;font:16px 'Playfair Display'}.panel-heading h3{font-size:14px;margin:0}.panel-heading p{grid-column:2;font-size:10px;color:#6d807d;margin:3px 0 0}.panel-state{flex:none;font:9px 'DM Mono';font-style:normal;color:#92724b;background:#fff1d9;padding:4px 6px}.complete-panel .panel-state{color:#277164;background:#dff4ed}.upload-panel .drop-field{min-height:78px}.upload-panel .upload-preview{margin-bottom:0}.metadata.upload-panel{padding:18px;margin-top:12px}.metadata.upload-panel legend{padding:0 8px 0 0}.metadata.upload-panel>.panel-state{position:absolute;right:18px;top:16px}.upload-confirm{border:0;box-shadow:0 18px 55px #173b3470;padding:27px;width:min(430px,calc(100% - 32px));background:#fff;color:var(--ink)}.upload-confirm::backdrop{background:#183b3566}.upload-confirm h3{font:22px 'Playfair Display';margin:0 0 8px}.upload-confirm p:not(.eyebrow){font-size:12px;line-height:1.6;color:#5e716e}.upload-confirm>div{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.upload-confirm .outline{padding:10px 13px}
.phase-mode{display:flex;gap:8px;margin-bottom:12px}.phase-mode label{cursor:pointer}.phase-mode input{position:absolute;opacity:0}.phase-mode span{display:block;border:1px solid #d6e2dd;padding:8px 10px;font:10px 'DM Mono';color:#607672}.phase-mode input:checked+span{border-color:#4f998b;background:#e4f2ed;color:#225a51}.assignment-title{display:block;font:10px 'DM Mono';letter-spacing:.5px;color:#617775;margin-bottom:9px}.phase-assignment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.phase-assignment-grid>div{background:#f4f8f6;border:1px solid #dfe8e3;padding:11px}.phase-assignment-grid small{display:block;font:9px 'DM Mono';color:#527a72;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px}.phase-assignment-grid label{display:grid;gap:5px;margin-top:7px;font:9px 'DM Mono';color:#5c716d}
