@font-face{font-family:Kumbh Sans;font-weight:100 900;font-style:normal;src:url(/assets/KumbhSans-B6L8de7G.ttf)format("truetype")}body.galafeedback-comment-cursor *{cursor:url("data:image/svg+xml,%3c?xml%20version='1.0'%20?%3e%3csvg%20height='24'%20viewBox='0%200%20512%20512'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M422.88%2089.1257C389.875%2056.12%20347.825%2033.6425%20302.045%2024.5356C256.266%2015.4287%20208.814%2020.1014%20165.691%2037.9629C122.567%2055.8244%2085.7082%2086.0725%2059.7755%20124.882C33.8428%20163.691%2020.0009%20209.319%2020%20255.996V452.666C20%20463.097%2024.1437%20473.1%2031.5195%20480.476C38.8953%20487.852%2048.899%20491.996%2059.33%20491.996H256C302.675%20491.995%20348.302%20478.154%20387.111%20452.222C425.92%20426.291%20456.168%20389.434%20474.03%20346.312C491.892%20303.19%20496.567%20255.739%20487.462%20209.961C478.358%20164.182%20455.883%20122.131%20422.88%2089.1257V89.1257Z'%20fill='%230085FF'%20/%3e%3c/svg%3e") 0 24,auto!important}.btn{border-radius:var(--radius-sm);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:11px 18px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{color:var(--text-muted);border-color:var(--border-strong);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--text);background:var(--bg-card)}.btn-subtle{background:var(--bg-card);color:var(--text)}.btn-subtle:hover:not(:disabled){background:var(--bg-card-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#f05252}.pill{background:var(--purple);color:#fff;border-radius:999px;align-items:center;padding:5px 12px;font-size:13px;font-weight:600;display:inline-flex}.hint{color:var(--text-dim);align-items:center;gap:8px;padding:10px 0;font-size:13px;display:flex}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#03060cb3;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:16px;overflow:hidden;box-shadow:0 24px 80px #00000080}.modal-head{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-head h3{margin:0;font-size:18px}.modal-close{color:var(--text-muted);background:0 0;border:none}.modal-close:hover{color:var(--text)}.modal-actions{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}.confirm-modal{width:min(420px,92vw);padding:22px 24px}.confirm-modal-message{color:var(--text-muted);margin:0;font-size:13.5px;line-height:1.5}.chatbar-wrap{padding:8px 0 4px}.chatbar{background:var(--bg-card);border:1px solid var(--border);border-radius:26px;align-items:flex-end;gap:10px;padding:8px 8px 8px 16px;display:flex}.chatbar-input{color:var(--text);font:inherit;resize:none;background:0 0;border:none;outline:none;flex:1;align-self:center;max-height:8lh;padding:0;font-size:14px;line-height:1.45;overflow-y:auto}.chatbar-input::placeholder{color:var(--text-dim)}.chatbar-mic{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.chatbar-mic:disabled{opacity:.55;cursor:not-allowed}.chatbar-mic--recording{background:var(--danger,#e5484d);animation:1.2s ease-in-out infinite chatbar-pulse}@keyframes chatbar-pulse{0%,to{box-shadow:0 0 #e5484d80}50%{box-shadow:0 0 0 6px #e5484d00}}.chatbar-mic--busy{background:var(--text-muted)}.chatbar-error{color:var(--danger,#e5484d)}.chatbar-recording{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.rec-dot{background:var(--danger,#e5484d);border-radius:50%;flex:none;width:10px;height:10px;animation:1.2s ease-in-out infinite chatbar-pulse}.waveform{flex:1;justify-content:flex-end;align-items:center;gap:2px;min-width:0;height:34px;display:flex;overflow:hidden}.waveform-bar{background:var(--accent);border-radius:2px;flex:none;width:3px;min-height:3px;transition:height 90ms linear}.rec-time{text-align:right;font-variant-numeric:tabular-nums;min-width:34px;color:var(--text-muted);flex:none;font-size:13px}@media (prefers-reduced-motion:reduce){.chatbar-mic--recording,.rec-dot{animation:none}.waveform-bar{transition:none}}.chatbar-disclaimer{text-align:center;color:var(--text-dim);margin:8px 0 0;font-size:12px}.bubble-row{justify-content:flex-end;display:flex}.bubble{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;max-width:70%;padding:12px 18px;font-size:14px}.searchplan{grid-template-columns:260px 1fr;width:min(820px,92vw);height:min(560px,84vh);display:grid}.searchplan-side{border-right:1px solid var(--border);flex-direction:column;min-height:0;display:flex}.searchplan-search{background:var(--bg-card);border:1px solid var(--border);color:var(--text-dim);border-radius:9px;align-items:center;gap:8px;margin:14px 14px 10px;padding:9px 12px;display:flex}.searchplan-search input{min-width:0;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:13px}.searchplan-search input::placeholder{color:var(--text-dim)}.searchplan-list{flex-direction:column;flex:1;gap:1px;min-height:0;padding:0 8px 12px;display:flex;overflow-y:auto}.searchplan-row{color:var(--text-muted);text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:7px;padding:8px 10px;font-size:13px;overflow:hidden}.searchplan-row:hover,.searchplan-row.active{background:var(--bg-card);color:var(--text)}.searchplan-empty{color:var(--text-dim);margin:0;padding:8px 10px;font-size:13px}.searchplan-detail{flex-direction:column;min-height:0;padding:18px 22px 20px;display:flex}.searchplan-head{justify-content:space-between;align-items:flex-start;margin-bottom:14px;display:flex}.searchplan-head h3{margin:0 0 2px;font-size:16px}.searchplan-date{color:var(--text-dim);font-size:12px}.searchplan-sheet{flex:1;place-items:center;min-height:0;display:grid}.searchplan-sheet svg{border-radius:3px;max-width:100%;max-height:100%;box-shadow:0 6px 28px #00000073}.searchplan-sheet-real svg{background:#fff;width:100%;height:100%}.searchplan-loading{color:var(--text-dim);margin:0;font-size:13px}.searchplan-placeholder{flex-direction:column;align-items:center;gap:12px;max-width:340px;display:flex}.searchplan-placeholder svg{aspect-ratio:297/210;width:100%}.searchplan-placeholder p{color:var(--text-dim);text-align:center;margin:0;font-size:12.5px}.searchplan-pager{color:var(--text-muted);justify-content:center;align-items:center;gap:10px;margin-top:12px;font-size:13px;display:flex}.searchplan-pager button{color:var(--text-muted);background:0 0;border:none;border-radius:7px;place-items:center;width:28px;height:28px;display:grid}.searchplan-pager button:hover:not(:disabled){background:var(--bg-card);color:var(--text)}.searchplan-pager button:disabled{opacity:.35;cursor:default}.searchplan-actions{justify-content:flex-end;gap:10px;margin-top:10px;display:flex}.name-modal{text-align:left;width:min(420px,92vw);padding:22px 24px}.name-modal-label{color:var(--text-muted);margin-bottom:8px;font-size:13px;display:block}.name-modal-input{background:var(--bg-card);border:1px solid var(--border);width:100%;color:var(--text);border-radius:9px;outline:none;padding:11px 13px;font-size:14px}.name-modal-input:focus{border-color:var(--accent)}.auth{grid-template-columns:1fr 1fr;height:100vh;display:grid}@media (width<=860px){.auth{grid-template-columns:1fr}.auth-hero{display:none}}.auth-hero{border-right:1px solid var(--border);background:linear-gradient(160deg,#0f141c 0%,#0a0e14 60%,#0b1220 100%);flex-direction:column;justify-content:center;padding:56px 60px;display:flex}.auth-brand{align-items:center;gap:10px;margin-bottom:40px;font-size:18px;font-weight:700;display:flex}.auth-hero-title{margin:0 0 14px;font-size:40px;line-height:1.15}.auth-hero-title .accent{color:var(--accent)}.auth-hero-sub{color:var(--text-muted);max-width:380px;margin:0 0 40px;font-size:16px}.auth-features{flex-direction:column;gap:20px;margin:0;padding:0;list-style:none;display:flex}.auth-features li{align-items:flex-start;gap:14px;display:flex}.auth-feature-dot{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);border-radius:8px;flex:none;place-items:center;display:grid}.auth-features strong{font-size:15px;display:block}.auth-features span{color:var(--text-muted);font-size:13px}.auth-form-side{place-items:center;padding:40px;display:grid}.auth-card{width:100%;max-width:380px}.auth-card h2{margin:0 0 6px;font-size:26px}.auth-card .sub{color:var(--text-muted);margin:0 0 28px;font-size:14px}.field{margin-bottom:16px}.field label{color:var(--text-muted);margin-bottom:7px;font-size:13px;display:block}.field input{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);width:100%;color:var(--text);outline:none;padding:12px 14px;font-size:14px}.field input:focus{border-color:var(--accent)}.auth-switch{text-align:center;color:var(--text-muted);margin-top:22px;font-size:14px}.auth-switch a{color:var(--accent);font-weight:600}.auth-error{border-radius:var(--radius-sm);white-space:pre-line;background:#ef44441a;border:1px solid #ef444466;margin:0 0 16px;padding:10px 12px;font-size:13px}.auth-hint{color:var(--text-muted);margin:6px 0 0;font-size:12px}.auth-hint-bad{color:#f87171}.auth-note{text-align:center;color:var(--text-muted);margin-top:10px;font-size:13px}.auth-note a{color:var(--accent)}.auth-linkbtn{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.auth-wide{text-align:center;width:100%;display:block}.auth-check{cursor:pointer;align-items:flex-start;gap:10px;margin:0 0 18px;font-size:13px;display:flex}.auth-check input{accent-color:var(--accent);margin-top:2px}.auth-check small{color:var(--text-muted);margin-top:2px;font-size:12px;display:block}.auth-setup{flex-direction:column;align-items:center;gap:10px;margin:0 0 20px;display:flex}.auth-qr{border-radius:8px}.auth-setup summary{cursor:pointer;color:var(--text-muted);font-size:13px}.auth-secret{letter-spacing:.04em;word-break:break-all;-webkit-user-select:all;user-select:all;margin-top:8px;font-size:13px;display:block}.auth-code-input{letter-spacing:.4em;text-align:center;font-size:22px!important}.auth-codes{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);grid-template-columns:1fr 1fr;gap:8px 16px;margin:0 0 14px;padding:14px 18px 14px 36px;font-size:13px;display:grid}.auth-row{gap:10px;margin-bottom:16px;display:flex}.auth-wait{height:100vh;color:var(--text-muted);place-items:center;display:grid}.auth-wait button{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;margin-left:8px}.app-shell{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--bg-elevated);border-right:1px solid var(--border);flex-direction:column;flex:0 0 240px;gap:4px;width:240px;padding:12px 10px;transition:width .18s,flex-basis .18s;display:flex;overflow:hidden}.sidebar.collapsed{width:var(--sidebar-w);flex-basis:var(--sidebar-w);padding:12px 8px}.sidebar.collapsed .sb-label{display:none}.sb-head{justify-content:space-between;align-items:center;gap:6px;margin-bottom:10px;display:flex}.sidebar.collapsed .sb-head{flex-direction:column;gap:8px}.sb-brand{min-width:0;color:var(--text);text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;padding:7px 9px;display:flex}.sb-brand:hover{background:var(--bg-card)}.sb-name{letter-spacing:.01em;font-size:15px;font-weight:700}.sb-toggle{color:var(--text-dim);background:0 0;border:none;border-radius:8px;flex:none;place-items:center;width:30px;height:30px;display:grid}.sb-toggle:hover{background:var(--bg-card);color:var(--text)}.sb-nav{flex-direction:column;gap:2px;display:flex}.sb-item{color:var(--text-muted);text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-size:13.5px;font-weight:500;transition:background .15s,color .15s;display:flex}.sb-item:hover,.sb-item.active{background:var(--bg-card);color:var(--text)}.sidebar.collapsed .sb-item{justify-content:center;padding:10px 0}.sb-scroll{flex-direction:column;flex:1;gap:18px;min-height:0;margin-top:14px;display:flex;overflow-y:auto}.sidebar.collapsed .sb-scroll{visibility:hidden}.sb-group{flex-direction:column;gap:2px;display:flex}.sb-empty{color:var(--text-dim);padding:2px 10px;font-size:12px}.sb-group-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);padding:0 10px 6px;font-size:10.5px;font-weight:600}.sb-project{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;width:100%;min-width:0;padding:7px 10px;display:flex}.sb-project:hover{background:var(--bg-card)}.sb-project-delete{color:var(--text-dim);opacity:0;background:0 0;border:none;border-radius:6px;flex:0 0 24px;place-items:center;width:24px;height:24px;margin-left:auto;transition:opacity .12s,color .12s;display:grid}.sb-project:hover .sb-project-delete,.sb-project-delete:focus-visible{opacity:1}.sb-project-delete:hover{color:var(--danger);background:var(--bg-card-hover)}.sb-dot{border-radius:50%;flex:0 0 8px;width:8px;height:8px}.sb-dot.running{background:var(--danger)}.sb-dot.done{background:var(--cyan)}.sb-project-text{flex-direction:column;min-width:0;display:flex}.sb-project-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.sb-project-date{color:var(--text-dim);font-size:11px}.sb-user{text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;width:100%;margin-top:8px;padding:8px 10px;display:flex}.sb-user:hover{background:var(--bg-card)}.sidebar.collapsed .sb-user{justify-content:center;padding:8px 0}.sb-avatar{color:#fff;background:linear-gradient(135deg,#7c3aed,#2563eb);border-radius:50%;flex:0 0 32px;place-items:center;width:32px;height:32px;font-size:13px;font-weight:600;display:grid}.sb-user-text{flex-direction:column;min-width:0;display:flex}.sb-user-text strong{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.sb-user-text span{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.app-content{flex:1;min-width:0;overflow:auto}.sb-user-wrap{position:relative}.sb-menu{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);z-index:20;min-width:220px;padding:6px;position:absolute;bottom:calc(100% + 6px);left:8px;right:8px;box-shadow:0 8px 24px #00000059}.sb-menu-who{border-bottom:1px solid var(--border);flex-direction:column;margin-bottom:4px;padding:6px 8px 8px;font-size:13px;display:flex}.sb-menu-who span{color:var(--text-muted);font-size:12px}.sb-menu button{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:8px;font-size:13px;display:flex}.sb-menu button:hover{background:var(--accent-soft)}.wizard{flex-direction:column;height:100%;display:flex}.wizard-header{border-bottom:1px solid var(--border);padding:26px 40px 18px}.wizard-body{--wizard-pad-x:40px;padding:28px var(--wizard-pad-x) 20px;flex:1;overflow:auto}.steps{justify-content:center;gap:0;max-width:900px;margin:0 auto;display:flex}.step{flex-direction:column;flex:1;align-items:center;max-width:200px;display:flex;position:relative}.step-line{background:var(--border-strong);width:100%;height:2px;position:absolute;top:13px;right:50%}.step-line.on{background:var(--accent)}.step-dot{border:2px solid var(--border-strong);background:var(--bg);color:#fff;z-index:1;border-radius:50%;place-items:center;width:28px;height:28px;transition:all .15s;display:grid}.step-dot.done{background:var(--accent);border-color:var(--accent)}.step-dot.current{border-color:var(--accent);background:var(--bg)}.step-dot.current:after{content:"";background:var(--accent);border-radius:50%;width:10px;height:10px}.step-label{color:var(--text-dim);white-space:nowrap;margin-top:10px;font-size:13px}.step-label.current,.step-label.done{color:var(--text)}.step-page{flex-direction:column;max-width:1240px;height:100%;margin:0 auto;display:flex}.step-page.step-split{--step-col-w:540px;grid-template-columns:minmax(0, 1fr) var(--step-col-w);align-items:stretch;gap:24px;display:grid}.step-split>.assistant-dock{border-right:1px solid var(--border);grid-area:1/1;padding-right:24px}.step-split>.step-scroll{grid-area:1/2}@media (width<=980px){.step-page.step-split{flex-direction:column;gap:0;display:flex}.step-split>.assistant-dock{border-right:none;border-top:1px solid var(--border);margin-top:12px;padding-top:12px;padding-right:0}.step-split>.assistant-dock .assistant-log{flex:none;max-height:min(34vh,280px)}}.step-page.is-wide{max-width:none;margin-left:calc(-1 * var(--wizard-pad-x));margin-right:calc(-1 * var(--wizard-pad-x));height:auto;min-height:100%}.step-page:not(.step-split)>:last-child{margin-top:auto}.step-intro{color:var(--text-muted);max-width:640px;margin:0 0 16px;font-size:14px;line-height:1.5}.step-scroll{flex:1;min-height:0;padding-right:6px;overflow-y:auto}.crane-thumb{box-sizing:border-box;width:100%;height:100%;color:var(--text);place-items:center;padding:10px;display:grid}.crane-thumb svg{width:100%;height:100%;display:block}.crane-thumb-loading{border-radius:var(--radius-sm);background:var(--bg-card-hover);width:100%;height:100%;animation:1.3s ease-in-out infinite crane-thumb-pulse}@keyframes crane-thumb-pulse{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.crane-thumb-loading{animation:none}}.acc{flex-direction:column;gap:18px;max-width:1080px;margin:0 auto;padding:32px 28px 48px;display:flex}.acc h1{margin:0;font-size:22px;font-weight:600}.acc h2{align-items:center;gap:10px;margin:0 0 12px;font-size:15px;font-weight:600;display:flex}.acc-sub{color:var(--text-muted);margin:4px 0 0;font-size:13px;line-height:1.5}.acc-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}.acc-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.acc-between{justify-content:space-between;align-items:center}.acc label{color:var(--text-muted);flex-direction:column;flex:1;gap:5px;min-width:200px;font-size:12px;display:flex}.acc input{color:var(--text);font:inherit;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px}.acc-table{border-collapse:collapse;width:100%;font-size:13px}.acc-table th{text-align:left;color:var(--text-muted);padding:0 8px 8px;font-size:12px;font-weight:500}.acc-table td{border-top:1px solid var(--border);vertical-align:top;padding:9px 8px}.acc-table td.acc-actions{text-align:right;white-space:nowrap}.acc-actions .btn{margin-left:6px;padding:5px 10px;font-size:12px}.acc-muted{color:var(--text-muted);font-size:12px}.acc-tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.acc-tag.invited{color:#eab308;background:#eab3081f}.acc-tag.disabled,.acc-tag.suspended{color:#f87171;background:#ef44441f}.acc-error,.acc-ok{border-radius:var(--radius-sm);white-space:pre-line;padding:12px 14px;font-size:13px}.acc-error{background:#ef44441a;border:1px solid #ef444466}.acc-ok{background:#22c55e1a;border:1px solid #22c55e66}.acc-request{border-top:1px solid var(--border);justify-content:space-between;gap:16px;padding:14px 0;display:flex}.acc-request:first-of-type{border-top:none;padding-top:0}.acc-request p{white-space:pre-line;margin:6px 0 0;font-size:13px}.hero{text-align:center;flex-direction:column;align-items:center;max-width:720px;margin:0 auto;padding:132px 32px 60px;display:flex}.hero h1{margin:0 0 14px;font-size:34px;font-weight:700}.hero-sub{color:var(--text-muted);margin:0 0 30px;font-size:13.5px;line-height:1.55}.cmdbar{background:var(--bg-card);border:1px solid var(--border);border-radius:999px;align-items:center;gap:10px;width:100%;max-width:640px;padding:7px 7px 7px 14px;transition:border-color .15s;display:flex}.cmdbar:focus-within{border-color:var(--border-strong)}.cmdbar.listening{border-color:var(--accent)}.cmdbar-input{min-width:0;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:14px}.cmdbar-input::placeholder{color:var(--text-dim)}.cmdbar-action{background:var(--accent);color:#fff;border:none;border-radius:50%;flex:0 0 38px;place-items:center;width:38px;height:38px;transition:background .15s;display:grid}.cmdbar-action:hover:not(:disabled){background:var(--accent-hover)}.cmdbar-action:disabled{opacity:.45;cursor:not-allowed}.cmdbar.listening .cmdbar-action{animation:1.4s ease-out infinite mic-pulse}@keyframes mic-pulse{0%{box-shadow:0 0 #2563eb73}to{box-shadow:0 0 0 12px #2563eb00}}.cmdbar-error{color:var(--danger);margin:10px 0 0;font-size:12.5px}.hero-examples{width:100%;margin-top:88px}.hero-examples-label{color:var(--text-dim);margin-bottom:16px;font-size:12px;display:block}.cmd-example-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}@media (width<=900px){.cmd-example-grid{grid-template-columns:1fr}}.cmd-example{text-align:left;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:16px;transition:background .15s,border-color .15s;display:flex}.cmd-example:hover{background:var(--bg-card-hover);border-color:var(--border-strong)}.cmd-example strong{font-size:13px;font-weight:600}.cmd-example strong.tone-blue{color:#5b8def}.cmd-example strong.tone-cyan{color:var(--cyan)}.cmd-example span{color:var(--text-muted);font-size:12.5px;line-height:1.5}.dash{flex-direction:column;gap:18px;max-width:980px;margin:0 auto;padding:32px 28px 48px;display:flex}.dash-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.dash-head h1{margin:0;font-size:22px;font-weight:600}.dash-sub{color:var(--text-muted);margin:4px 0 0;font-size:13px}.dash-range{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);gap:2px;padding:3px;display:flex}.dash-range button{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:5px 12px;font-size:13px}.dash-range button:hover{color:var(--text)}.dash-range button.active{background:var(--accent-soft);color:var(--text)}.dash-tiles{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.dash-tile{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;padding:14px 16px;display:flex}.dash-tile-label{color:var(--text-muted);font-size:12px}.dash-tile-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:600}.dash-tile-value.danger{color:var(--danger)}.dash-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}.dash-card h2{margin:0 0 14px;font-size:14px;font-weight:600}.dash-empty{color:var(--text-dim);margin:0;font-size:13px}.dash-error{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);padding:18px 20px}.dash-chart{position:relative}.dash-chart svg{width:100%;height:auto;display:block}.dash-chart .bar{fill:var(--accent)}.dash-chart .bar.hover{fill:var(--accent-hover)}.dash-chart .grid{stroke:var(--border);stroke-dasharray:3 4}.dash-chart .axis{stroke:var(--border-strong)}.dash-chart .tick{fill:var(--text-dim);text-anchor:middle;font-size:10px}.dash-tooltip{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-muted);pointer-events:none;white-space:nowrap;z-index:2;flex-direction:column;gap:2px;padding:8px 10px;font-size:12px;display:flex;position:absolute;top:0;transform:translate(-50%)}.dash-tooltip strong{color:var(--text);font-weight:600}.dash-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}.dash-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border-strong);padding:6px 10px;font-size:12px;font-weight:500}.dash-table td{border-bottom:1px solid var(--border);padding:8px 10px}.dash-table tr:last-child td{border-bottom:none}.dash-table .num{text-align:right}.dash-action{color:var(--cyan);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.dash-muted{color:var(--text-dim)}.dash-danger{color:var(--danger)}.abq{flex-direction:column;gap:18px;max-width:980px;margin:0 auto;padding:32px 28px 48px;display:flex}.abq-wide{max-width:1680px}.abq-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.abq h1{margin:0;font-size:22px;font-weight:600}.abq h2{margin:0 0 10px;font-size:15px;font-weight:600}.abq h3{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:16px 0 8px;font-size:12px;font-weight:600}.abq-sub{color:var(--text-muted);margin:4px 0 0;font-size:13px;line-height:1.5}.abq-back{color:var(--text-muted);background:0 0;border:none;margin-bottom:6px;padding:0;font-size:13px}.abq-back:hover{color:var(--text)}.abq-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}.abq-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.abq-between{justify-content:space-between;align-items:center}.abq input,.abq select{color:var(--text);font:inherit;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px}.abq input:disabled{opacity:.5}.abq label{color:var(--text-muted);flex-direction:column;gap:5px;font-size:12px;display:flex}.abq label.grow{flex:1;min-width:220px}.abq-error,.abq-ok{border-radius:var(--radius-sm);white-space:pre-line;padding:12px 14px;font-size:13px}.abq-error{background:#ef44441a;border:1px solid #ef444466}.abq-ok{background:#22c55e1a;border:1px solid #22c55e66}.abq-drop{border-style:dashed;border-color:var(--border-strong);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:28px 20px;display:flex}.abq-drop.over{border-color:var(--accent);background:var(--accent-soft)}.abq-drop-title{margin:0;font-size:15px;font-weight:600}.abq-new{text-align:left;flex-direction:column;align-items:flex-start;gap:8px;width:100%;max-width:620px;display:flex}.abq-new input{min-width:240px}.abq-table{border-collapse:collapse;width:100%;font-size:13px}.abq-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:6px 8px;font-weight:500}.abq-table td{border-bottom:1px solid var(--border);padding:9px 8px}.abq-table .num{text-align:right;font-variant-numeric:tabular-nums}.abq-link{cursor:pointer}.abq-link:hover td{background:var(--bg-card-hover)}.abq-badge{background:var(--bg-elevated);color:var(--text-muted);vertical-align:middle;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-block}.abq-badge.reading{color:var(--cyan)}.abq-badge.ready,.abq-badge.todo{color:#fbbf24}.abq-badge.published,.abq-badge.valid{color:#4ade80}.abq-badge.failed,.abq-badge.flagged{color:#f87171}.abq-stats{color:var(--text-muted);gap:18px;font-size:13px;display:flex}.abq-stats b{color:var(--text);margin-right:4px;font-size:16px}.abq-progress{background:var(--bg-card);border-radius:2px;height:4px;overflow:hidden}.abq-progress div{background:var(--accent);height:100%;transition:width .4s}.abq-review{grid-template-columns:190px minmax(0,1fr);align-items:start;gap:16px;display:grid}.abq-nav{flex-direction:column;gap:4px;max-height:calc(100vh - 40px);display:flex;position:sticky;top:12px;overflow-y:auto}.abq-nav button{border-radius:var(--radius-sm);color:var(--text);text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.abq-nav button:hover{background:var(--bg-card)}.abq-nav button.sel{background:var(--bg-card);border-color:var(--border-strong)}.abq-nav small{color:var(--text-muted);margin-left:auto}.abq-dot{background:var(--text-dim);border-radius:50%;flex:none;width:9px;height:9px}.abq-dot.valid{background:#22c55e}.abq-dot.excluded{background:var(--text-dim);outline:2px solid var(--border-strong)}.abq-dot.flagged,.abq-dot.blocked{background:#ef4444}.abq-dot.warned{background:#f59e0b}.abq-detail{flex-direction:column;gap:16px;min-width:0;display:flex}.abq-check{border-radius:var(--radius-sm);margin:4px 0;padding:7px 10px;font-size:13px}.abq-check.bloquant{color:#fca5a5;background:#ef44441a}.abq-check.attention,.abq-check.manque{color:#fcd34d;background:#f59e0b1a}.abq-chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.abq-chips button{border:1px solid var(--border-strong);color:var(--text);background:0 0;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600}.abq-chips button.sel{background:var(--accent);border-color:var(--accent);color:#fff}.abq-variant{border:1px solid var(--border-strong);border-radius:var(--radius-sm);margin-top:12px;padding:10px 12px;color:var(--text)!important;font-size:13px!important}.abq-variant select{max-width:260px}.abq-params{border-collapse:collapse;font-size:13px}.abq-params th{text-align:left;padding:3px 14px 3px 0;font-weight:500}.abq-params th:first-letter{text-transform:uppercase}.abq-params td{padding:3px 14px 3px 0}.abq-params input{width:150px;padding:5px 8px}.abq-params .unit{color:var(--text-muted);margin-left:6px}.abq-note{margin:14px 0 10px}.abq-compare{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=1250px){.abq-compare{grid-template-columns:minmax(0,1fr)}}.abq-compare h3{margin-top:0}.abq-page img{background:#fff;border-radius:6px;max-width:none;display:block}.abq-page-scroll{max-height:78vh}.abq-tools{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.abq-tools h3{margin:0 auto 0 0}.abq-seg{border:1px solid var(--border-strong);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.abq-seg button,.abq-focus{color:var(--text-muted);font-variant-numeric:tabular-nums;background:0 0;border:none;padding:5px 10px;font-size:12px;font-weight:600}.abq-seg button+button{border-left:1px solid var(--border-strong)}.abq-seg button:hover:not(:disabled),.abq-focus:hover{color:var(--text);background:var(--bg-card-hover)}.abq-seg button:disabled{opacity:.4;cursor:default}.abq-seg button.sel{background:var(--accent);color:#fff}.abq-focus{border:1px solid var(--border-strong);border-radius:var(--radius-sm)}.abq-compare.focus{z-index:50;background:var(--bg);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;padding:14px;position:fixed;inset:0}.abq-compare.focus .abq-card{flex-direction:column;min-height:0;display:flex}.abq-compare.focus .abq-scroll{flex:1;min-height:0;max-height:none}.abq-scroll{max-height:78vh;overflow:auto}.abq-grid table{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:12px}.abq-grid th,.abq-grid td{border:1px solid var(--border);text-align:right;white-space:nowrap;padding:3px 6px}.abq-grid thead th{background:var(--bg-elevated);color:var(--text-muted);vertical-align:bottom;font-weight:500;position:sticky;top:0}.abq-grid tbody th{background:var(--bg-elevated);color:var(--text-muted);font-weight:500;position:sticky;left:0}.abq-grid td{cursor:text;min-width:38px}.abq-grid td:hover{background:var(--bg-card-hover)}.abq-grid td.edited{color:var(--cyan);background:#38bdf82e;font-weight:600}.abq-grid td input{text-align:right;width:52px;padding:1px 3px;font-size:12px}.abq-publish{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.abq-publish h2{margin-bottom:2px}.library{grid-template-columns:260px 1fr;width:min(880px,92vw);height:min(560px,84vh);display:grid}.library-side{border-right:1px solid var(--border);flex-direction:column;min-height:0;display:flex}.library-search{border-bottom:1px solid var(--border);color:var(--text-muted);align-items:center;gap:8px;padding:14px 16px;display:flex}.library-search input{color:var(--text);background:0 0;border:none;outline:none;width:100%;font-size:14px}.library-list{flex-direction:column;gap:2px;padding:8px;display:flex;overflow:auto}.library-item{border-radius:var(--radius-sm);color:var(--text-muted);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;padding:10px 12px;font-size:14px;display:flex}.library-item:hover{background:var(--bg-card);color:var(--text)}.library-item.active{background:var(--accent-soft);color:var(--text)}.badge-wip{color:var(--text-dim);border:1px solid var(--border-strong);border-radius:999px;padding:1px 8px;font-size:11px}.library-detail{flex-direction:column;padding:22px 26px;display:flex}.library-spec{align-items:center;gap:24px;display:flex}.spec-illus{background:var(--bg-card);border:1px solid var(--border);width:150px;height:150px;color:var(--text-muted);border-radius:12px;flex:none;place-items:center;display:grid}.library-spec dl{flex-direction:column;flex:1;gap:14px;margin:0;display:flex}.library-spec dl div{border-bottom:1px solid var(--border);justify-content:space-between;padding-bottom:10px;display:flex}.library-spec dt{color:var(--text-muted);font-size:14px}.library-spec dd{color:var(--cyan);margin:0;font-size:14px;font-weight:600}.library-warn{border-radius:var(--radius-sm);color:#fca5a5;background:#ef444414;border:1px solid #ef444440;align-items:center;gap:8px;margin-top:20px;padding:12px 14px;font-size:13px;display:flex}.spv{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;height:100%;min-height:420px;display:flex;overflow:hidden}.spv-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;display:flex}.spv-modes{gap:6px;display:flex}.spv-mode{border-radius:var(--radius-sm);color:var(--text-muted);background:0 0;border:1px solid #0000;align-items:center;gap:7px;padding:7px 12px;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.spv-mode:hover:not(:disabled){background:var(--bg-elevated);color:var(--text)}.spv-mode.on{background:var(--accent-soft);color:var(--text);border-color:#2563eb73}.spv-mode:disabled{opacity:.4;cursor:not-allowed}.spv-status{align-items:center;gap:14px;font-size:12px;display:flex}.spv-scale{color:var(--cyan);font-variant-numeric:tabular-nums}.spv-placed{color:var(--accent);font-variant-numeric:tabular-nums}.spv-warn{color:#fbbf24;align-items:center;gap:6px;display:inline-flex}.spv-blocker{text-align:left;margin-right:auto;font-size:13px}.spv-canvas-wrap{background:#06090f;flex:1;min-height:320px;position:relative;overflow:hidden}.spv-canvas-wrap.mode-pan{cursor:grab}.spv-canvas-wrap.mode-pan:active{cursor:grabbing}.spv-canvas-wrap.mode-calibrate,.spv-canvas-wrap.mode-place,.spv-canvas-wrap.mode-attach,.spv-canvas-wrap.mode-crop{cursor:crosshair}.spv-page{color:var(--text-muted);align-items:center;gap:7px;font-size:12px;display:inline-flex}.spv-page select{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text);outline:none;padding:5px 8px;font-size:12px}.spv-page select:focus{border-color:var(--accent)}.spv-canvas-wrap canvas{pointer-events:none;display:block;position:relative}.spv-vector{pointer-events:none;contain:strict;background:#fff;position:absolute;inset:0}.spv-vector svg{width:100%;height:100%;display:block}.spv-loading,.spv-error{color:var(--text-muted);text-align:center;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:14px;display:flex;position:absolute;inset:0}.spv-error{color:#fca5a5}.spv-calibrate{border-top:1px solid var(--border);background:var(--bg-elevated);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.spv-dist{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border-strong);width:100px;color:var(--text);text-align:right;outline:none;padding:7px 10px;font-size:14px}.spv-dist:focus{border-color:var(--accent)}.spv-calibrate .btn{padding:7px 14px;font-size:13px}.siteplan-modal{flex-direction:column;width:min(1100px,94vw);height:min(760px,90vh);padding:22px 26px;display:flex}.siteplan-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.siteplan-body .spv{flex:1;min-height:0}.siteplan-body .spv-canvas-wrap{min-height:160px}.spv-drop{border:1.5px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;transition:border-color .15s,background .15s;display:flex}.spv-drop:hover,.spv-drop.dragging{border-color:var(--accent);background:var(--accent-soft)}.spv-drop.dragging{border-style:dashed;border-width:2px}.spv-drop-busy{cursor:default;border-style:solid}.spv-drop-busy:hover{border-color:var(--border-strong);background:0 0}.spv-spinner{border:2px solid var(--accent);border-top-color:#0000;border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spv-spin}@keyframes spv-spin{to{transform:rotate(360deg)}}.spv-drop strong{color:var(--text);font-size:15px}.spv-drop span{font-size:13px}.loadplan-roles{gap:10px;margin-bottom:12px;display:flex}.loadplan-role{border-radius:var(--radius-sm);border:1px dashed var(--border-strong);color:var(--text-muted);align-items:center;gap:7px;padding:7px 12px;font-size:13px;transition:border-color .15s,background .15s;display:inline-flex}.loadplan-role.declared{color:var(--text);border-style:solid;border-color:#22c55e73}.loadplan-role.droppable:hover,.loadplan-role.dragging{border-color:var(--accent);background:var(--accent-soft)}.loadplan-role-drop{cursor:pointer;align-items:center;gap:7px;display:inline-flex}.loadplan-role strong{font-weight:600}.loadplan-role-remove{border-radius:var(--radius-sm);color:var(--text-muted);background:0 0;border:none;padding:3px;display:inline-flex}.loadplan-role-remove:hover{color:#fca5a5}.loadplan-plans{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.loadplan-plan{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-muted);background:0 0;padding:5px 10px;font-size:12px}.loadplan-plan.on{background:var(--accent-soft);color:var(--text);border-color:#2563eb73}.loadplan-pending{border-top:1px solid var(--border);background:var(--bg-elevated);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.loadplan-pending label{align-items:center;gap:7px;display:inline-flex}.loadplan-pending select{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text);outline:none;padding:6px 9px;font-size:13px}.loadplan-pending select:focus{border-color:var(--accent)}.loadplan-pending-what{color:var(--text);font-weight:600}.loadplan-dims{color:var(--cyan);font-variant-numeric:tabular-nums}.loadplan-scale{color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;display:flex}.loadplan-scale.ok{color:var(--text-muted);font-size:12px}.loadplan-scale-input{width:70px}.linklike{color:var(--accent,#2563eb);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.loadplan-hint{color:var(--text-muted);align-items:center;gap:7px;padding:8px 14px;font-size:12px;display:flex}.frame-picker{flex-direction:column;gap:16px;padding:24px;display:flex}.frame-picker-head{flex-direction:column;gap:4px;display:flex}.frame-picker-head strong{font-size:15px}.frame-picker-head span{color:var(--text-muted);font-size:13px}.frame-picker-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.frame-picker-card{text-align:left;cursor:pointer;border:1px solid var(--border);color:inherit;font:inherit;background:0 0;border-radius:10px;flex-direction:column;gap:8px;padding:12px;transition:border-color .12s,background .12s;display:flex}.frame-picker-card:hover:not(:disabled){border-color:var(--accent);background:#ffffff08}.frame-picker-card:disabled{opacity:.5;cursor:default}.frame-picker-thumb{aspect-ratio:4/3;background:#fff;border-radius:6px;justify-content:center;align-items:center;display:flex;overflow:hidden}.frame-picker-thumb svg{width:100%;height:100%}.frame-picker-name{font-size:14px;font-weight:600}.frame-picker-weight{color:var(--text-muted);font-size:12px}.siteplan-refining{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:320px;display:flex}.siteplan-refining span:last-child{color:var(--text-muted);max-width:420px;font-size:13px}.spv-step-no{background:var(--accent-soft);width:17px;height:17px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.spv-step-done .spv-step-no{color:#22c55e;background:#22c55e26}.spv-step-todo:not(:disabled){color:var(--text)}.spv-skip-plan{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-self:center;margin-top:10px;padding:6px 10px;font-size:13px;text-decoration:underline}.spv-skip-plan:hover:not(:disabled){color:var(--text)}.spv-skip-plan:disabled{opacity:.5;cursor:default}.gabarit-modal{width:min(460px,100vw - 32px);max-height:calc(100vh - 32px);padding:22px 24px;overflow-y:auto}.gabarit-intro{color:var(--text-muted);margin:0 0 14px;font-size:13px;line-height:1.5}.gabarit-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.gabarit-field{color:var(--text-muted);flex-direction:column;gap:4px;min-width:0;font-size:12px;display:flex}.gabarit-field input{border:1px solid var(--border);background:var(--bg-elevated);width:100%;color:var(--text);border-radius:8px;padding:8px 10px;font-size:14px}.gabarit-field input:focus{border-color:var(--accent);outline:none}.gabarit-error{color:var(--danger,#c0392b);align-items:center;gap:6px;margin:10px 0 0;font-size:13px;display:flex}.crane-orientation{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);flex-direction:column;flex:none;gap:4px;margin-top:10px;padding:10px 14px;display:flex}.crane-orientation.disabled{opacity:.6}.crane-orientation-head{flex-wrap:wrap;align-items:baseline;gap:10px;font-size:13px;display:flex}.crane-orientation-hint{color:var(--text-muted);font-size:12px}.crane-orientation-body{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.crane-orientation-field{align-items:center;gap:8px;font-size:13px;display:flex}.crane-orientation-input{font-variant-numeric:tabular-nums;width:72px}.rose{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.rose:active{cursor:grabbing}.crane-orientation.disabled .rose{cursor:not-allowed}.rose-ring{fill:var(--bg-elevated,transparent);stroke:var(--border);stroke-width:1.5px}.rose-tick{stroke:var(--text-muted);stroke-width:1px}.rose-tick.major{stroke:var(--text);stroke-width:1.5px}.rose-label{fill:var(--text-muted);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-size:9px}.rose-hub{fill:var(--text)}.picto:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:50%}.picto-grab{cursor:grab}.picto.live .picto-grab{cursor:grabbing}.crane-orientation.disabled .picto-grab{cursor:not-allowed}.picto-grab:hover rect,.picto-grab:hover path{filter:brightness(1.18)}.picto-outrigger line{stroke:#56657a;stroke-width:3.5px;stroke-linecap:round}.picto-pad rect{fill:#56657a}.picto-carrier{fill:#34404f;stroke:#56657a;stroke-width:1.2px}.picto-driver-cab{fill:#2a3442;stroke:#56657a;stroke-width:1.2px}.picto-counterweight{fill:#1b2532;stroke:#6d9bff;stroke-width:1px}.picto-turret-body{fill:#3f4d60;stroke:#6d9bff;stroke-width:1px}.picto-operator-cab{fill:#8fb5ff}.picto-boom{fill:var(--accent);stroke:#6d9bff;stroke-width:1px}.picto.live .picto-boom{fill:var(--accent-hover)}.picto-word-boom{color:#8fb5ff}.picto-word-chassis{color:#a7b3c4}.crane-orientation-fields{gap:8px;min-width:0;display:grid}.crane-orientation-sub{color:var(--text-dim);font-size:11px}.picto-quarters{gap:4px;display:flex}.picto-quarters button{font:inherit;cursor:pointer;border:1px solid var(--border-strong);color:var(--text-muted);font-variant-numeric:tabular-nums;background:0 0;border-radius:6px;padding:3px 9px;font-size:12px}.picto-quarters button:hover:not(:disabled){background:var(--bg-card-hover);color:var(--text)}.picto-quarters button.on{background:var(--accent-soft);color:var(--text);border-color:#2563eb8c}.picto-quarters button:disabled{cursor:not-allowed}.assistant-dock{flex-direction:column;justify-content:flex-end;min-height:0;display:flex}.assistant-log{overscroll-behavior:contain;flex-direction:column;flex:1;gap:8px;min-height:0;padding-right:6px;display:flex;overflow-y:auto}.assistant-msg{background:var(--bg-card-hover);border:1px solid var(--border);max-width:70%;color:var(--text);white-space:pre-wrap;border-radius:14px;align-self:flex-start;padding:12px 18px;font-size:14px}.assistant-msg.thinking{align-items:center;gap:5px;display:inline-flex}.typing-dot{background:var(--text-muted);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite typing-bounce}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.typing-dot{opacity:.6;animation:none}}.assistant-msg.streaming:after{content:"▍";color:var(--accent,#e0a458);margin-left:2px;animation:1s steps(2,end) infinite streaming-caret}@keyframes streaming-caret{to{visibility:hidden}}@media (prefers-reduced-motion:reduce){.assistant-msg.streaming:after{animation:none}}.request-grid{flex-direction:column;gap:10px;max-width:720px;display:flex}.request-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:12px;padding:10px 14px;display:flex}.request-card.done{border-color:#2563eb66}.request-card.droppable{border-style:dashed}.request-card.dragging{border-color:var(--accent);background:var(--accent-soft);border-style:dashed}.request-card.dragging *{pointer-events:none}.request-error{border-radius:var(--radius-sm);color:#fca5a5;background:#ef444414;border:1px solid #ef444440;align-items:center;gap:8px;max-width:720px;margin-top:14px;padding:12px 14px;font-size:13px;display:flex}.request-text .request-hint{color:var(--text-dim);margin-top:2px;font-size:12px;display:block}.request-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.request-text .request-roles{gap:6px;margin-top:4px;display:flex}.request-roles .role-badge{border:1px solid var(--border);color:var(--text-dim);border-radius:999px;padding:2px 8px;font-size:11px}.request-roles .role-badge.on{color:var(--text);border-color:#22c55e73}.request-icon{background:var(--bg-elevated);border:1px solid var(--border-strong);width:28px;height:28px;color:var(--text-muted);border-radius:8px;flex:none;place-items:center;display:grid}.request-card.done .request-icon{background:var(--accent);border-color:var(--accent);color:#fff}.request-text{flex:1;min-width:0}.request-text strong{font-size:14px;display:block}.request-text span{color:var(--text-muted);font-size:13px}.step-footer{align-items:center;gap:16px;margin-top:20px;display:flex}.footer-note{color:var(--text-dim);font-size:13px}.request-thumb{background:var(--bg-elevated);border:1px solid var(--border-strong);width:62px;height:46px;color:var(--text-muted);border-radius:8px;flex:none;place-items:center;display:grid;overflow:hidden}.request-thumb .crane-thumb{padding:5px}.request-text .shackle-warning{color:#fbbf24;align-items:center;gap:6px;margin-top:6px;font-size:12px;display:flex}.step2{grid-template-columns:1fr;align-content:start;gap:20px;padding-bottom:24px;display:grid}.step2-form-col{min-width:0}.cascade{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);max-width:640px;padding:2px 16px}.cascade-section{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border);margin-bottom:4px;padding:14px 0 6px;font-size:12px}.cascade-row{border-bottom:1px solid #1f293780;justify-content:space-between;align-items:center;gap:16px;padding:8px 0;display:flex}.cascade-row:last-child{border-bottom:none}.cascade-row.locked{opacity:.4}.cascade-row.readonly .cascade-label{color:var(--text-muted)}.cascade-label{color:var(--text);flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;display:flex}.cascade-hint{color:var(--text-dim);flex-basis:100%;font-size:12px}.cascade-hint.cyan{color:var(--cyan)}.cascade-hint.danger{color:var(--danger)}.cascade-label svg{color:var(--text-dim)}.cascade-input{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border-strong);width:150px;color:var(--text);text-align:right;outline:none;padding:6px 10px;font-size:14px}.cascade-input:focus{border-color:var(--accent)}.cascade-input:disabled{cursor:not-allowed}.cascade-input-unit{color:var(--text-muted);align-items:center;gap:8px;font-size:13px;display:flex}.cascade-input-unit .cascade-input{width:110px}.cascade-select{align-items:center;display:flex;position:relative}.cascade-select select{appearance:none;border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border-strong);width:190px;color:var(--text);outline:none;padding:6px 32px 6px 10px;font-size:14px}.cascade-select select:focus{border-color:var(--accent)}.cascade-select svg{color:var(--text-muted);pointer-events:none;position:absolute;right:10px}.cascade-value{font-size:14px;font-weight:600}.cascade-value.cyan{color:var(--cyan)}.cascade-value.danger{color:var(--danger)}.step2-actions{margin-top:20px}.preview-title{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-bottom:12px;font-size:12px}.cascade-pending{color:#fbbf24;border:1px dashed #fbbf2473;border-radius:999px;padding:4px 12px;font-size:12px}.cartouche-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);max-width:640px;padding:16px}.cartouche-grid{grid-template-columns:1fr 1fr;gap:12px 14px;display:grid}@media (width<=620px){.cartouche-grid{grid-template-columns:1fr}}.cartouche-field label{color:var(--text-muted);margin-bottom:4px;font-size:12px;display:block}.cartouche-field input{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border-strong);width:100%;color:var(--text);outline:none;padding:7px 10px;font-size:14px}.cartouche-field input:focus{border-color:var(--accent)}.lifting-title{margin:0 0 10px;font-size:14px;font-weight:600}.lifting-sling{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.lifting-sling select{min-width:220px}.lifting-hint{color:var(--text-muted,#64748b);font-size:12px}.siteplan-modal.sling-modal{width:min(1280px,96vw);height:min(960px,94vh)}.sling-modal-body{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.sling-pane{flex-direction:column;flex:1;min-height:0;display:flex}.sling-pane h4{margin:0 0 6px;font-size:13px;font-weight:600}.sling-pane-note{color:var(--text-muted,#64748b);font-weight:400}.sling-surface{border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sling-surface>*{flex:1;min-height:0}.modal-actions .lifting-hint{margin-right:auto}.rigging-sling{align-items:center;gap:8px;display:flex}.rigging-swatch{border:1px solid var(--border);border-radius:4px;flex:none;width:14px;height:14px}.gen-center{flex-direction:column;justify-content:center;align-items:center;max-width:560px;margin:0 auto;padding-top:40px;display:flex}.gen-title{text-align:center;margin:0 0 4px;font-size:24px}.gen-stages{flex-direction:column;gap:8px;width:100%;display:flex}.gen-stage{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:12px;padding:10px 14px;transition:border-color .2s,opacity .2s;display:flex}.gen-stage.pending{opacity:.5}.gen-stage.running{border-color:var(--accent)}.gen-stage-dot{border:2px solid var(--border-strong);color:#fff;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;display:grid}.gen-stage.done .gen-stage-dot{background:var(--accent);border-color:var(--accent)}.gen-stage.running .gen-stage-dot{border-color:var(--accent)}.gen-stage.error{border-color:var(--danger,#dc2626)}.gen-stage.error .gen-stage-dot{border-color:var(--danger,#dc2626);color:var(--danger,#dc2626)}.gen-stage.absent .gen-stage-dot{color:var(--text-dim)}.gen-stage-note{color:var(--text-dim);margin-top:2px;font-size:12px;display:block}.gen-missing{text-align:center;color:var(--text-dim);max-width:420px;font-size:14px}.gen-stage-label{flex:1;font-size:14px}.gen-stage-time{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:12px}.gen-actions{margin-top:28px}.spinner{border:2px solid var(--accent);border-top-color:#0000;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.export{grid-template-columns:var(--export-col-summary,300px) 6px minmax(0, 1fr) 6px var(--export-col-chat,340px);flex:1;gap:12px;width:100%;min-height:0;padding-left:18px;display:grid}@media (width<=1400px){.export{grid-template-columns:var(--export-col-summary,300px) minmax(0, 1fr)}.export-chat{grid-area:2/1;max-height:60vh}.export-split{display:none}}@media (width<=900px){.export{grid-template-columns:1fr}.export-chat{grid-area:auto}.export-split{display:none}}.export-split{cursor:col-resize;touch-action:none;background:0 0;border-radius:3px;align-self:stretch;transition:background .15s}.export-split:hover,.export-split:focus-visible{background:var(--accent,#e0a458);outline:none}.export-split-summary{order:2}.export-split-chat{order:4}.export-preview{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;order:3;min-width:0;padding:10px 12px 12px;display:flex}.export-composite{border-radius:calc(var(--radius) - 4px);cursor:grab;background:#f4f6f9;flex:1;width:100%;height:100%;min-height:480px;position:relative;overflow:hidden}.export-composite:active{cursor:grabbing}.export-composite svg{width:100%;height:100%;display:block}.export-composite-tools{gap:6px;display:flex;position:absolute;bottom:12px;right:12px}.export-composite-tools button{border:1px solid var(--border);background:var(--bg-card);width:32px;height:32px;color:var(--text);cursor:pointer;border-radius:6px;font-size:18px;line-height:1}.export-composite-hint{color:#64748b;background:#ffffffb3;border-radius:4px;padding:2px 8px;font-size:11px;position:absolute;bottom:12px;left:12px}.export-preview-loading,.export-preview-error{min-height:340px;color:var(--text-muted);text-align:center;justify-content:center;align-items:center;gap:8px;font-size:14px;display:flex}.export-preview-error{color:#f4a48c}.export-note{color:var(--text-muted);text-align:center;margin:12px 0 0;font-size:12px}.export-side{flex-direction:column;order:1;align-self:start;max-height:calc(100vh - 130px);display:flex;position:sticky;top:0;overflow-y:auto}.export-side h2{margin:0 0 6px;font-size:20px}.export-verif{color:var(--text-muted);margin:0 0 20px;font-size:13px}.export-summary{flex-direction:column;gap:10px;margin:0 0 20px;display:flex}.export-summary div{border-bottom:1px solid var(--border);justify-content:space-between;padding-bottom:9px;display:flex}.export-summary dt{color:var(--text-muted);font-size:13px}.export-summary dd{color:var(--cyan);margin:0;font-size:13px;font-weight:600}.export-progress{margin-bottom:12px}.export-progress-track{background:var(--border);border-radius:2px;height:4px;overflow:hidden}.export-progress-bar{background:var(--accent,#e0a458);border-radius:2px;width:35%;height:100%;animation:1.4s ease-in-out infinite export-progress-slide}@keyframes export-progress-slide{0%{transform:translate(-100%)}to{transform:translate(320%)}}@media (prefers-reduced-motion:reduce){.export-progress-bar{opacity:.4;width:100%;animation:none}}.export-progress-label{color:var(--text-muted);justify-content:space-between;gap:12px;margin:6px 0 0;font-size:12px;display:flex}.export-progress-label .export-progress-elapsed{font-variant-numeric:tabular-nums}.export-actions{gap:12px;display:flex}.export-actions .btn{flex:1}.export-back{color:var(--text-dim);text-align:center;background:0 0;border:none;margin-top:18px;font-size:13px}.export-back:hover{color:var(--text)}.export-preview .preview-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.export-sheets{flex-direction:column;flex:1;gap:24px;min-height:0;padding-right:4px;display:flex;overflow-y:auto}.export-sheet-label{color:var(--text-muted,#64748b);letter-spacing:.02em;margin:0 0 8px;font-size:13px;font-weight:600}.export-sheet-paper{aspect-ratio:420/297;border:1px solid var(--border);border-radius:calc(var(--radius) - 4px);background:#fff;width:100%;overflow:hidden}.export-sheet-paper .export-composite{border-radius:inherit;background:#fff;height:100%;min-height:0}.export-sheet-paper svg{width:100%;height:100%;display:block}.export-sheet-absent{color:var(--text-muted);background:var(--bg-elevated);border:1px dashed var(--border);border-radius:calc(var(--radius) - 4px);align-items:center;gap:8px;padding:20px;font-size:13px;line-height:1.5;display:flex}.export-filename{color:var(--text-muted,#64748b);align-items:center;gap:6px;font-size:13px;display:inline-flex}.export-chat{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;order:5;align-self:start;min-height:0;max-height:calc(100vh - 130px);padding:14px 14px 12px;display:flex;position:sticky;top:0}.export-chat h2{margin:0 0 4px;font-size:16px}.export-assistant-intro{color:var(--text-muted,#64748b);margin:0 0 10px;font-size:13px;line-height:1.5}.export-chat .assistant-dock{flex:1;min-height:0}.export-chat .assistant-log{margin-bottom:10px}.export-proposal{background:var(--bg-card-hover);border:1px solid var(--border-strong);border-radius:10px;margin:0 0 12px;padding:12px}.export-proposal-list{color:var(--text);margin:0 0 10px;padding-left:18px;font-size:13px;line-height:1.5}.export-proposal-actions{gap:8px;display:flex}.export-sheet-scale{font-variant-numeric:tabular-nums;background:var(--bg-card-hover);border-radius:999px;margin-left:8px;padding:1px 7px;font-weight:500}:root{--bg:#0a0e14;--bg-elevated:#0f141c;--bg-card:#131a24;--bg-card-hover:#182130;--border:#1f2937;--border-strong:#2a3646;--text:#e6edf5;--text-muted:#8b97a8;--text-dim:#5c6675;--accent:#2563eb;--accent-hover:#3b74f0;--accent-soft:#2563eb26;--cyan:#38bdf8;--purple:#7c3aed;--danger:#ef4444;--radius:12px;--radius-sm:8px;--sidebar-w:62px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}::-webkit-scrollbar-track{background:0 0}
