:root{font-family:Space Grotesk,IBM Plex Sans,Segoe UI,sans-serif;color:#172033;background:#edf0ea;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--text-main: #172033;--text-muted: rgba(23, 32, 51, .66);--accent-teal: #0f766e}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{min-width:1024px}button,input,select,textarea{font:inherit}button:hover,a:hover{transform:translateY(-1px)}a{color:inherit}.loading-state,.empty-state,.device-warning-shell{min-height:100vh;display:grid;place-items:center}.loading-state,.empty-state p{color:var(--text-muted)}.app-shell{min-height:100vh;display:grid;grid-template-columns:auto 1fr;background:linear-gradient(180deg,#eff3ef,#e3e7e2)}.nav-toggle{position:fixed;top:12px;left:12px;z-index:5;border:1px solid rgba(15,23,42,.12);background:#fafaf8e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:.62rem .76rem;border-radius:8px;font-size:.82rem;font-weight:600;box-shadow:0 18px 40px #0f172a14}.nav-panel{width:300px;padding:3.5rem .8rem .8rem;background:#f6f7f3eb;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-right:1px solid rgba(15,23,42,.08);overflow-y:auto;transition:transform .18s ease,opacity .18s ease,width .18s ease}.nav-panel.collapsed{width:0;transform:translate(-100%);opacity:0;padding-left:0;padding-right:0;border-right:none}.nav-brand{display:flex;gap:.6rem;align-items:center;margin-bottom:.75rem}.nav-logo{width:42px;height:42px;object-fit:contain;border-radius:8px;background:#ffffffc7;padding:.35rem}.eyebrow{margin:0 0 .1rem;font-size:.65rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-teal)}.nav-brand h1,.workspace-header h2,.auth-branding h1{margin:0;line-height:1.05}.panel-section,.workspace-card-panel{background:#ffffffc7;border:1px solid rgba(15,23,42,.08);border-radius:8px;padding:.7rem;box-shadow:0 16px 40px #0f172a0d}.panel-section+.panel-section{margin-top:.65rem}.panel-section h2,.workspace-card-panel h3{margin:0 0 .65rem;font-size:.95rem}.section-helper,.meta-line,.legend-block span,.workspace-load span{color:var(--text-muted)}.filter-select,.auth-form,.auth-help,.reset-panel,.profile-grid,.workspace-body,.workspace-list{display:grid;gap:.55rem}.filter-select span{font-size:.8rem;font-weight:600}.text-input{width:100%;border:1px solid rgba(15,23,42,.12);background:#fcfcfaf5;color:var(--text-main);padding:.55rem .65rem;border-radius:8px;font:inherit}.text-input.narrow{width:120px}.text-input.tiny{width:64px;padding:.3rem .4rem;font-size:.75rem}.custom-gradient-edit{display:flex;align-items:center;gap:.25rem}.primary-button,.secondary-button,.ghost-button,.chip-button,.upload-button,.oauth-button,.workspace-load{border:none;border-radius:8px;font:inherit;cursor:pointer;transition:transform .14s ease,box-shadow .14s ease,background .14s ease}.primary-button,.secondary-button,.ghost-button,.upload-button{padding:.55rem .7rem}.primary-button{background:linear-gradient(135deg,#0f766e,#155e75);color:#f7faf9;box-shadow:0 14px 28px #0f766e33}.secondary-button,.upload-button{background:#f1efe7;color:#172033;border:1px solid rgba(15,23,42,.08)}.ghost-button,.chip-button{background:transparent;color:var(--text-main);border:1px solid rgba(15,23,42,.12)}.chip-button.active{background:#0f766e1f;color:#0b4f49;border-color:#0f766e59}.status-banner.compact{margin-top:1rem}.well-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;max-height:250px;overflow-y:auto}.well-checkbox-container{display:flex;align-items:center;gap:.2rem;position:relative}.well-checkbox-item{flex:1;display:flex;align-items:center;gap:.35rem;font-size:.75rem;cursor:pointer;background:#f7f8f499;padding:.35rem .45rem;border-radius:6px;border:1px solid rgba(15,23,42,.05);transition:background .14s ease;min-width:0}.well-delete-btn{background:transparent;border:none;color:#ef4444;font-size:1.1rem;padding:0 .2rem;cursor:pointer;opacity:.3;transition:opacity .14s ease}.well-checkbox-container:hover .well-delete-btn{opacity:1}.well-checkbox-item:hover{background:#0f766e14}.well-checkbox-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-main);font-weight:500}.well-checkbox-item input[type=checkbox]{accent-color:var(--accent-teal);cursor:pointer}.workspace-shell{min-height:100vh;padding:.25rem .75rem .75rem;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:.45rem}.workspace-header,.card-header,.header-actions,.inline-actions{display:flex;gap:.55rem;align-items:center;justify-content:space-between;flex-wrap:wrap}.workspace-body{grid-template-columns:minmax(0,1.6fr) minmax(360px,.9fr);align-items:start}.workspace-body.single-panel{grid-template-columns:minmax(0,1fr)}.workspace-header h2{font-size:1.05rem}.plot-toolbar{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.45rem}.status-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem .85rem;border-radius:8px;border:1px solid rgba(15,23,42,.08)}.status-banner.success{background:#0f766e14}.status-banner.error{background:#b91c1c14}.workspace-card{background:#f7f8f4f2;border:1px solid rgba(15,23,42,.08);border-radius:8px;padding:.56rem;display:flex;gap:.7rem;align-items:center;justify-content:space-between}.workspace-load{text-align:left;background:transparent;padding:0;display:grid;gap:.2rem}.ghost-button.small{padding:.55rem .7rem}.full-width{width:100%}.upload-button{display:inline-flex;align-items:center;justify-content:center}.upload-button input{display:none}.plot-shell,.plot-legend{display:grid;gap:.45rem}.plot-shell{min-width:0}.plot-svg{width:100%;height:auto;max-height:calc(100vh - 205px)}.plotly-frame{width:100%;height:clamp(540px,calc(100vh - 180px),940px);min-height:0;overflow:hidden;border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fbfcf8}.plotly-plot{width:100%;height:100%;min-height:0}.plotly-plot .modebar{right:.45rem!important;top:.35rem!important}.plot-background{fill:#fbfcf8}.plot-grid-line{stroke:#0f172a14;stroke-width:1}.plot-grid-line.minor{stroke:#0f172a0b;stroke-width:.8}.plot-grid-line.major{stroke:#0f172a33}.pressure-point,.mobility-point{vector-effect:non-scaling-stroke;pointer-events:none}.pressure-pan-hitbox{fill:transparent;cursor:grab;pointer-events:all}.gradient-line{cursor:grab}.gradient-line-hit{stroke:transparent;stroke-width:18;cursor:grab;pointer-events:stroke}.gradient-anchor{cursor:move}.shapelayer .dot,.shapelayer .rot-handle,.shapelayer .rot-line{display:none!important}.shapelayer .line{cursor:move!important;pointer-events:all!important}.mobility-unavailable{display:grid;gap:.18rem;padding:.62rem .72rem;border:1px solid rgba(217,119,6,.22);border-radius:8px;background:#fffbebd6;color:#172033}.mobility-unavailable span{color:var(--text-muted)}.font-bold{font-weight:700}.plot-axis-label,.track-scale-label,.curve-label{font-size:12px;fill:#172033ad}.plot-title,.track-title{font-size:14px;font-weight:700;fill:#172033}.align-end{text-anchor:end}.align-middle{text-anchor:middle}.track-frame{fill:none;stroke:#0f172a1f}.formation-svg .plot-grid-line.major{stroke:#0f172a38;stroke-width:1.1}.formation-svg .plot-grid-line.minor{stroke:#0f172a14;stroke-width:.7}.formation-curve{vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.track-scale-label{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10px;font-weight:600;fill:#64748b}.curve-label{font-weight:600;font-size:11px}.track-title{text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:800}.track-header-scales{pointer-events:none}.legend-block{display:flex;gap:.65rem;align-items:center}.legend-block.highlight{background:#d977061a;border-radius:8px;padding:.42rem .55rem}.legend-swatch{width:12px;height:12px;border-radius:999px}.legend-swatch.line{width:22px;height:4px;border-radius:999px}.plot-legend{display:flex;flex-wrap:wrap;align-items:center;column-gap:1.25rem;row-gap:.65rem;font-size:.82rem;position:relative;z-index:1;padding-top:.4rem}.legend-group{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.35rem .65rem;background:#0f172a09;border-radius:8px;border:1px solid rgba(15,23,42,.05)}.clickable{cursor:pointer}.log-metadata-pill{font-size:.8rem;background:#0f172a0d;padding:.35rem .65rem;border-radius:6px;border:1px solid rgba(15,23,42,.08)}.logs-scroll-container{margin-top:1rem;border:1px solid rgba(15,23,42,.1)}.auth-shell{min-height:100vh;position:relative;display:grid;place-items:center;padding:2rem;overflow:hidden}.auth-top-nav{position:absolute;top:1.5rem;left:0;right:0;padding:0 2rem;display:flex;justify-content:space-between;z-index:10}.top-nav-link{color:#ffffffd9;text-decoration:none;font-size:.8rem;font-weight:600;transition:all .18s ease;background:#17203366;padding:.5rem 1rem;border-radius:999px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);letter-spacing:.02em}.top-nav-link:hover{color:#fff;background:#17203399;border-color:#ffffff4d;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}@media(max-width:768px){.auth-top-nav{flex-direction:column;align-items:center;gap:.75rem;top:1rem}}.auth-backdrop{position:absolute;inset:0;background:linear-gradient(135deg,#081018bf,#0b4f49b8),url(/background.png) center / cover no-repeat;transform:scale(1.03)}.auth-card{position:relative;z-index:1;width:min(1440px,100%);display:grid;grid-template-columns:1.15fr .95fr;border-radius:12px;overflow:hidden;background:#fbfcf8f0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 45px 100px #0810184d}.auth-branding,.auth-panel{padding:3rem}.auth-branding{background:linear-gradient(180deg,#e8efeaf2,#f2f4efe6);display:grid;align-content:center;gap:1.2rem}.auth-panel{background:#ffffffd1}.auth-logo{width:100px;height:100px;object-fit:contain;background:#ffffffe0;border-radius:8px;padding:1rem}.auth-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;padding:.35rem;background:#1720330d;border-radius:8px;margin-bottom:1rem}.auth-mode-switch button{border:none;background:transparent;border-radius:8px;padding:.85rem;font:inherit;font-weight:600}.auth-mode-switch button.active{background:#fffffff5;box-shadow:0 8px 22px #0f172a14}.oauth-button{display:flex;justify-content:center;text-decoration:none}.device-warning-card{max-width:420px;padding:2rem;text-align:center;border-radius:8px;background:#fbfcf8f2;box-shadow:0 30px 60px #0f172a1f}.device-warning-logo{width:96px;height:96px;object-fit:contain;margin-bottom:1rem}.account-menu{position:relative}.icon-button{width:38px;height:38px;display:inline-grid;place-items:center;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#ffffffd1;color:var(--text-main);cursor:pointer}.button-icon{width:21px;height:21px}.account-popover{position:absolute;right:0;top:calc(100% + .45rem);z-index:4;min-width:190px;display:grid;gap:.45rem;padding:.5rem;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fffffff5;box-shadow:0 22px 48px #0f172a24}.link-button{border:none;background:transparent;color:var(--accent-teal);font:inherit;font-weight:700;text-align:left;cursor:pointer;padding:0}.compact-help{margin-top:.8rem}.curve-menu,.gradient-menu{position:relative}.curve-menu summary,.gradient-menu summary{list-style:none;cursor:pointer;border:1px solid rgba(15,23,42,.12);border-radius:8px;padding:.62rem .76rem;background:#ffffffb8;font-weight:600}.curve-menu summary::-webkit-details-marker,.gradient-menu summary::-webkit-details-marker{display:none}.curve-menu-panel,.gradient-menu-panel{position:absolute;right:0;top:calc(100% + .4rem);z-index:3;width:260px;max-height:320px;overflow-y:auto;display:grid;gap:.35rem;padding:.55rem;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fffffffa;box-shadow:0 18px 40px #0f172a1f}.gradient-menu-panel{width:230px}.curve-toggle{display:flex;align-items:center;gap:.45rem;font-size:.84rem}.custom-toggle{border-top:1px solid rgba(15,23,42,.1);margin-top:.25rem;padding-top:.55rem}.compact-label{gap:.35rem}.ghost-button.active{border-color:#d977066b;background:#d977061f}.workspace-fab-container{position:fixed;right:1.5rem;bottom:1.5rem;z-index:100;display:flex;flex-direction:column;align-items:flex-end;gap:1rem}.fab-button{width:56px;height:56px;border-radius:28px;background:linear-gradient(135deg,#0f766e,#155e75);color:#fff;border:none;display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 32px #0f766e4d;transition:transform .18s ease,box-shadow .18s ease}.fab-button:hover{transform:scale(1.05);box-shadow:0 12px 40px #0f766e66}.fab-button.active{transform:rotate(90deg)}.workspace-fab-menu{width:320px;background:#fffffff5;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(15,23,42,.12);border-radius:12px;box-shadow:0 24px 64px #0f172a2e;overflow:hidden;display:flex;flex-direction:column}.fab-menu-header{padding:1rem;background:#0f172a08;border-bottom:1px solid rgba(15,23,42,.08);font-size:.9rem;display:flex;justify-content:space-between;align-items:center}.fab-menu-content{padding:1rem;display:grid;gap:1rem}.fab-save-form{display:flex;gap:.5rem}.fab-workspace-list{display:grid;gap:.65rem;max-height:300px;overflow-y:auto;padding-right:.25rem}.well-checkbox-item.active{background:#0f766e1a;border-color:#0f766e33}@media(max-width:1360px){.workspace-body,.auth-card{grid-template-columns:1fr}}
