@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--bg:#10110f;--panel:#171815;--panel2:#1c1d19;--line:#2a2b26;--muted:#898b82;--text:#eceee8;--lime:#c7f36b;--lime2:#ddff9e;--orange:#f2a46f;--red:#ed7777;--blue:#88adff;--sans:'DM Sans',sans-serif;--display:Manrope,sans-serif;--mono:'DM Mono',monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px var(--sans);min-height:100vh}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.app-shell{display:flex;min-height:100vh}.sidebar{width:252px;flex:0 0 252px;border-right:1px solid var(--line);padding:21px 13px 12px;display:flex;flex-direction:column;background:#131410}.brand{height:42px;display:flex;align-items:center;gap:10px;padding:0 9px;text-decoration:none;color:var(--text);font:800 21px var(--display);letter-spacing:-1px}.brand-mark{display:grid;place-items:center;width:29px;height:29px;background:var(--lime);color:#14160f;border-radius:9px;font:800 16px var(--display)}.brand-dot{color:var(--lime)}.preview-tag{font:500 9px var(--mono);letter-spacing:.6px;color:#bec0b8;border:1px solid #34362f;border-radius:5px;padding:3px 5px;margin-left:auto}.workspace-switch{margin:25px 2px 27px;background:var(--panel);border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;gap:10px;text-align:left;padding:10px}.workspace-icon{width:30px;height:30px;background:#25271f;border-radius:8px;display:grid;place-items:center;color:var(--lime)}.workspace-switch b,.workspace-switch small,.connection-card b,.connection-card small,.profile b,.profile small{display:block}.workspace-switch b,.connection-card b,.profile b{font-size:12px}.workspace-switch small,.connection-card small,.profile small{font-size:10px;color:var(--muted);margin-top:3px}.chevron{margin-left:auto;color:var(--muted)}.nav-label{font:500 9px var(--mono);letter-spacing:1px;color:#686a62;padding:0 10px 9px}.nav-label-row{display:flex;justify-content:space-between;margin-top:25px}.nav{display:grid;gap:3px}.nav-item{height:37px;border:0;background:transparent;text-align:left;padding:0 10px;border-radius:7px;display:flex;align-items:center;gap:11px;color:#a3a59d;font-size:12px}.nav-item>span:first-child{width:16px;text-align:center;font-size:15px;color:#85877f}.nav-item.active{background:#25271f;color:var(--lime2)}.nav-item.active>span:first-child{color:var(--lime)}.nav-item kbd{margin-left:auto;color:#66685f;font:10px var(--mono)}.nav-count{margin-left:auto;background:#2b2e23;border-radius:10px;color:var(--lime);padding:2px 6px;font-size:10px}.sidebar-bottom{margin-top:auto}.connection-card{margin:0 2px 12px;padding:10px 9px;border:1px solid #303128;border-radius:9px;display:flex;align-items:flex-start;gap:8px}.connection-card .status-dot{margin:4px 0 0}.status-dot{width:7px;height:7px;border-radius:50%;background:#6d7164;display:inline-block}.status-dot.good{background:var(--lime);box-shadow:0 0 10px #c7f36466}.status-dot.muted{background:#777970}.info-mark{margin-left:auto;color:#797b73;border:1px solid #484a42;border-radius:50%;width:14px;height:14px;text-align:center;font:10px var(--mono)}.profile{display:flex;align-items:center;gap:9px;padding:13px 7px 3px;border-top:1px solid var(--line);margin-top:10px}.avatar{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#51493a;color:#f2d9b8;font-weight:700}.profile button{margin-left:auto;background:transparent;border:0;color:var(--muted);font-size:20px}.main{min-width:0;flex:1}.topbar{height:57px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px}.breadcrumbs{display:flex;gap:10px;color:#93958d;font-size:12px}.breadcrumbs b{color:#e4e6df;font-weight:500}.slash{color:#51534c}.top-actions{display:flex;align-items:center;gap:14px}.backend-pill{font-size:10px;border:1px solid var(--line);border-radius:20px;padding:6px 9px;color:#b7b9b2}.backend-pill i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#85877f;margin-right:5px}.icon-button{border:0;background:none;color:#92948c}.small-avatar{width:26px;height:26px;font-size:11px}.mobile-menu{display:none;background:none;border:0}.view{padding:32px 4.2vw 48px;max-width:1500px;margin:auto}.eyebrow{font:10px var(--mono);letter-spacing:1.1px;text-transform:uppercase;color:var(--lime)}h1,h2,h3,p{margin-top:0}h1{font:600 clamp(25px,3vw,34px) var(--display);letter-spacing:-1.3px;margin:8px 0 8px}h2{font:600 18px var(--display);letter-spacing:-.4px;margin:0 0 5px}h3{font:600 13px var(--display);margin:0}.subhead{color:var(--muted);font-size:12px;margin-bottom:0;line-height:1.6}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:27px}.head-actions{display:flex;gap:8px}.btn{border:1px solid var(--line);border-radius:7px;background:#1b1c18;padding:8px 12px;color:#d9dbd4;font-size:11px}.btn:hover{border-color:#55584d}.btn.primary{background:var(--lime);border-color:var(--lime);color:#171a10;font-weight:700}.btn.ghost{background:transparent}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px}.chat-wrap{max-width:860px;margin:0 auto}.chat-heading{text-align:center;padding:37px 0 29px}.chat-heading .orb{width:47px;height:47px;border-radius:15px;background:linear-gradient(145deg,#d8ff9b,#94c44a);color:#19200c;display:grid;place-items:center;font-size:25px;margin:0 auto 19px;box-shadow:0 0 45px #c7f36b12}.chat-heading h1{font-size:30px}.chat-heading p{font-size:12px;color:var(--muted);margin:0}.chat-stream{min-height:130px;max-height:38vh;overflow:auto;padding:2px 3px}.welcome-note{text-align:center;color:#686a62;font-size:11px;padding:16px}.message{display:flex;gap:10px;margin:12px 0;align-items:flex-start}.message.user{justify-content:flex-end}.message .bubble{max-width:80%;padding:11px 14px;border-radius:11px;background:#20211d;color:#d8dad3;line-height:1.55;font-size:12px;white-space:pre-wrap}.message.user .bubble{background:#28301e;border:1px solid #424b32}.message .who{color:var(--lime);font:10px var(--mono);padding-top:4px}.chat-compose{border:1px solid #42443b;border-radius:12px;background:#191a16;padding:11px;box-shadow:0 12px 35px #0003}.chat-compose textarea{width:100%;min-height:64px;resize:vertical;background:transparent;border:0;outline:0;font-size:12px;line-height:1.5}.chat-compose textarea::placeholder{color:#6d6f67}.compose-bottom{display:flex;justify-content:space-between;align-items:center}.compose-tools{display:flex;gap:6px}.compose-tools button{border:1px solid #34362e;border-radius:6px;background:#20211d;color:#a7a99f;padding:6px 8px;font-size:10px}.send-btn{border:0;background:var(--lime);color:#181b12;border-radius:7px;padding:7px 12px;font-size:11px;font-weight:700}.suggestions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:18px 0}.suggestions button{border:1px solid var(--line);border-radius:20px;background:transparent;color:#a4a69f;padding:7px 11px;font-size:10px}.suggestions button:hover{color:var(--lime)}.model-note{text-align:center;color:#5e6059;font-size:10px;margin-top:11px}.attachment-list{display:flex;gap:6px;flex-wrap:wrap;padding-bottom:8px}.attachment-chip{font-size:10px;background:#292b24;padding:5px 8px;border-radius:5px;color:#cfd1ca}.grid{display:grid;gap:13px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:17px}.metric{padding:16px}.metric-label{font-size:10px;color:var(--muted)}.metric-value{font:600 23px var(--display);margin:7px 0 4px}.metric-foot{font-size:10px;color:#787a72}.green{color:var(--lime)}.section-row{display:flex;justify-content:space-between;align-items:center;margin:23px 0 11px}.section-row>span{font-size:10px;color:var(--muted)}.agent-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.agent-card{padding:16px}.agent-top{display:flex;align-items:center;gap:10px}.agent-icon{width:34px;height:34px;border-radius:9px;background:#282a21;color:var(--lime);display:grid;place-items:center;font-size:16px}.agent-top>div:nth-child(2){flex:1}.agent-card p{font-size:11px;color:var(--muted);line-height:1.5;margin:14px 0}.tag{font:9px var(--mono);color:#a9aca1;background:#252620;padding:4px 6px;border-radius:4px}.toggle{appearance:none;width:30px;height:17px;border-radius:12px;background:#3a3c34;position:relative;margin:0;cursor:pointer;transition:.2s}.toggle:before{content:'';position:absolute;width:11px;height:11px;border-radius:50%;left:3px;top:3px;background:#a1a399;transition:.2s}.toggle:checked{background:#576c32}.toggle:checked:before{left:16px;background:var(--lime)}.card-foot{border-top:1px solid var(--line);padding-top:11px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted)}.backend-label{font:9px var(--mono);color:#85877e}.empty-backend{border:1px dashed #3b3d35;border-radius:8px;padding:16px;color:#9b9d94;font-size:11px;line-height:1.6}.code-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:12px}.file-panel,.editor-panel,.terminal-panel{overflow:hidden}.panel-title{height:40px;border-bottom:1px solid var(--line);padding:0 12px;display:flex;align-items:center;justify-content:space-between;color:#aeb0a7;font-size:10px}.file-list{padding:8px}.file-row{display:block;width:100%;border:0;background:transparent;text-align:left;color:#a5a79e;padding:8px;border-radius:5px;font:10px var(--mono)}.file-row.active{background:#292b24;color:var(--lime2)}.file-row span{color:#7f8178;margin-right:7px}.editor-stack{display:grid;gap:12px}.editor-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 11px;border-bottom:1px solid var(--line);font:10px var(--mono);color:#9fa198}.editor-toolbar .unsaved{color:var(--orange)}.code-editor{width:100%;min-height:300px;padding:14px;background:#141511;border:0;outline:0;resize:vertical;color:#d6d9ce;font:11px/1.8 var(--mono);tab-size:2}.terminal-body{height:115px;padding:12px;font:10px/1.7 var(--mono);color:#9fa198}.terminal-line:before{content:'› ';color:var(--lime)}.terminal-entry{display:flex;padding:0 11px 10px;gap:7px}.terminal-entry input{flex:1;min-width:0;background:#11120f;border:1px solid var(--line);border-radius:5px;padding:7px;font:10px var(--mono);outline:none}.project-grid,.model-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.project-card,.model-card{padding:16px}.project-card p,.model-card p{color:var(--muted);font-size:11px;line-height:1.5;margin:9px 0 15px}.project-meta{display:flex;gap:6px;flex-wrap:wrap}.project-card .card-foot{margin-top:14px}.model-card .agent-top{align-items:flex-start}.model-card .card-foot{margin-top:15px}.model-kind{font:9px var(--mono);text-transform:uppercase;letter-spacing:.6px;color:var(--lime)}.settings-layout{display:grid;grid-template-columns:205px minmax(0,1fr);gap:16px}.settings-nav{padding:7px;height:max-content}.settings-nav button{display:block;width:100%;text-align:left;border:0;background:none;color:#a5a79f;border-radius:5px;padding:9px;font-size:11px}.settings-nav button.active{background:#292b24;color:var(--lime2)}.settings-content{padding:19px}.setting-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:14px 0;gap:15px}.setting-row:last-child{border:0}.setting-row b{font-size:11px;font-weight:500}.setting-row small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.setting-row input[type=text],.setting-row input[type=number],.setting-row select{background:#11120f;border:1px solid var(--line);border-radius:5px;padding:7px 8px;min-width:130px;font-size:10px}.notice{padding:12px;border:1px solid #444632;border-radius:7px;color:#c4c6ac;background:#25261e;font-size:10px;line-height:1.6;margin:13px 0}.task-table{width:100%;border-collapse:collapse}.task-table th,.task-table td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);font-size:10px}.task-table th{color:var(--muted);font-weight:500}.task-table td{color:#cbcdc5}.task-state{color:var(--orange)!important}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%,15px);opacity:0;transition:.2s;background:#303229;border:1px solid #4b4e40;border-radius:7px;padding:10px 14px;font-size:11px;z-index:10;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}.mobile-menu{color:var(--text)}
@media(max-width:1000px){.view{padding-left:25px;padding-right:25px}.agent-grid,.project-grid,.model-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.sidebar{position:fixed;z-index:5;top:0;bottom:0;left:-270px;transition:left .2s;box-shadow:10px 0 30px #0005}.sidebar.open{left:0}.main{width:100%}.topbar{height:52px;padding:0 14px}.mobile-menu{display:block}.breadcrumbs{margin-right:auto;margin-left:11px}.top-actions{gap:8px}.top-actions .icon-button{display:none}.backend-pill{font-size:9px;padding:5px 7px}.view{padding:23px 15px 35px}.page-head{align-items:flex-start;gap:10px}.page-head .head-actions{flex-direction:column}.page-head .btn{padding:7px 9px}.agent-grid,.project-grid,.model-grid{grid-template-columns:1fr}.metrics{gap:8px}.metric{padding:12px}.metric-value{font-size:20px}.code-layout{grid-template-columns:1fr}.file-panel .file-list{display:flex;overflow:auto}.file-row{min-width:max-content}.settings-layout{grid-template-columns:1fr}.settings-nav{display:flex;overflow:auto}.settings-nav button{width:auto;white-space:nowrap}.chat-heading{padding:24px 0}.chat-heading h1{font-size:25px}.chat-stream{max-height:35vh}.suggestions{justify-content:flex-start}.task-table{min-width:600px}.table-scroll{overflow:auto}.profile{margin-top:8px}}
.history-area{margin:22px auto 0}.history-entry{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;padding:10px 12px;margin:5px 0;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:#d4d6ce}.history-entry b{font-size:11px;font-weight:500}.history-entry small{font-size:9px;color:var(--muted)}.history-entry:hover{border-color:#535747;color:var(--lime2)}
/* Forge v2 : connexion, état du GPU, suivi en direct de l'agent, vidéo */
button.connection-card{width:calc(100% - 4px);text-align:left;background:transparent;color:inherit;font:inherit}
.status-dot.warn{background:var(--orange);box-shadow:0 0 10px #f2a46f55}
.pill{font-size:10px;border:1px solid var(--line);border-radius:20px;padding:6px 10px;color:#b7b9b2;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.pill i{width:7px;height:7px;border-radius:50%;background:#6d7164}
.pill.ready i,.pill.local i{background:var(--lime);box-shadow:0 0 8px #c7f36b88}.pill.ready,.pill.local{color:var(--lime2);border-color:#4a5a2e}
.pill.starting i,.pill.connecting i{background:var(--orange);animation:pulse 1.2s infinite}.pill.starting,.pill.connecting{color:#f6c9a8;border-color:#5e4632}
.pill.stopping i{background:var(--blue)}
@keyframes pulse{50%{opacity:.35}}
.logged-out .sidebar,.logged-out .topbar{display:none}
.login-wrap{min-height:calc(100vh - 80px);display:grid;place-items:center}
.login-card{width:min(380px,100%);padding:28px}.login-card .brand{padding:0;margin-bottom:18px}
.login-card form{display:grid;gap:10px;margin-top:18px}.login-card input{background:#11120f;border:1px solid var(--line);border-radius:7px;padding:11px 12px;outline:none}
.login-card input:focus,.form-grid input:focus,.agent-instructions:focus{border-color:#5d6b3f}
.gpu-offline{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.gpu-offline .btn{margin-left:auto}
.chat-stream{max-height:58vh}
.live-head{display:flex;align-items:center;gap:8px;color:#e3e5dd}
.spinner{width:11px;height:11px;border-radius:50%;border:2px solid #4a4d40;border-top-color:var(--lime);animation:spin .8s linear infinite;flex:0 0 auto}
@keyframes spin{to{transform:rotate(360deg)}}
.live-log{margin:9px 0 0;padding:0 0 0 2px;list-style:none;font:10px/1.7 var(--mono);color:#a5a89c;white-space:pre-wrap;word-break:break-word}
.bubble video{display:block;width:100%;max-width:640px;margin-top:10px;border-radius:8px;background:#000}
.bubble pre.code-block{background:#11120f;border:1px solid var(--line);border-radius:7px;padding:10px 12px;margin:8px 0;overflow:auto;white-space:pre;font:10.5px/1.6 var(--mono);color:#dfe3d4}
.bubble code,.answer-extra code{font:10.5px var(--mono);background:#2a2c25;padding:1px 4px;border-radius:4px}
.answer-extra{margin-top:10px;padding-top:9px;border-top:1px solid #34362e;font-size:11px;color:#b3b6aa;white-space:normal;line-height:1.7}
.send-btn.stop{background:#3a2a24;color:#f6c9a8;border:1px solid #6a4a3a}
.attachment-chip button{background:none;border:0;color:#9a9d92;padding:0 0 0 4px}
.compose-tools select{border:1px solid #34362e;border-radius:6px;background:#20211d;color:#a7a99f;padding:5px 6px;font-size:10px;max-width:150px}
.compose-tools button:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.form-grid label{display:grid;gap:5px;font-size:10px;color:var(--muted)}
.form-grid input,.agent-instructions{background:#11120f;border:1px solid var(--line);border-radius:6px;padding:8px;font-size:11px;outline:none;color:var(--text)}
.agent-instructions{width:100%;min-height:80px;margin-top:10px;resize:vertical;font-family:var(--sans)}
.agent-card details summary{cursor:pointer;font-size:11px;color:#c9ccbf;margin-bottom:6px}
.agent-card.featured{border-color:#4a5a2e;box-shadow:0 0 0 1px #c7f36b14 inset}
.tool-chips{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0}
.row-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.two-cols{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:6px}
.metric-value.state-ready{color:var(--lime)}.metric-value.state-starting,.metric-value.state-connecting{color:var(--orange)}.metric-value{font-size:20px}
.event-pre{margin:0;max-height:60vh;overflow:auto;font:10px/1.6 var(--mono);color:#b9bcb0;white-space:pre-wrap;word-break:break-word}
.table-empty{text-align:center;color:#77796f;padding:22px!important}
.history-entry small{margin-left:auto}
@media(max-width:1000px){.two-cols{grid-template-columns:1fr}}
@media(max-width:700px){.form-grid{grid-template-columns:1fr}.chat-stream{max-height:52vh}.message .bubble{max-width:92%}.pill{max-width:150px;overflow:hidden;text-overflow:ellipsis}}

/* double authentification Vast.ai */
.vast-code{display:grid;gap:10px}.vast-code-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.vast-code-row input{flex:1;min-width:150px;max-width:230px;background:#11120f;border:1px solid var(--line);border-radius:6px;padding:9px 11px;font:600 16px var(--mono);letter-spacing:3px;color:var(--text)}
.vast-code-row input:focus{outline:none;border-color:var(--orange)}
.pill.vast_2fa_required i{background:var(--orange)}.pill.vast_2fa_required{color:#f6c9a8;border-color:#5e4632}
.metric-value.state-vast_2fa_required{color:var(--orange)}
