/* 한젠 웹 CAD — 어두운 단일 테마 */
:root{
  --bg:#12151a; --panel:#1a1e25; --panel2:#222831; --line:#2e3540;
  --ink:#e2e6ec; --dim:#8a94a3; --accent:#4cc2ff; --accent-ink:#06131c;
  --sel:#ffb547; --err:#ff6b5e; --ok:#55d17a;
  --sans:'Malgun Gothic','맑은 고딕',system-ui,sans-serif;
  --mono:Consolas,'D2Coding',ui-monospace,monospace;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--panel);color:var(--ink);font:13px/1.4 var(--sans);overflow:hidden}
button,input,textarea,select{font:inherit;color:inherit}
.ic{width:18px;height:18px;flex:none;fill:currentColor}
.app{display:grid;grid-template-rows:auto auto 1fr auto auto;grid-template-columns:minmax(0,1fr);height:100%}
.app>*{min-width:0} /* 리본·상단바가 길어도 화면 틀이 창보다 넓어지지 않게 (넘치면 리본만 옆으로 밀림) */

/* 상단 막대 */
.top{display:flex;align-items:center;gap:4px;padding:5px 10px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.top::-webkit-scrollbar{display:none} /* v1.0.36 좁은 화면 = 옆으로 밀어 봄 (휠도) */
.top .tbtn.on{border-color:var(--accent);color:var(--accent);background:rgba(76,194,255,.12)} /* 켜진 단추 (기둥 3D) */
.brand{display:flex;align-items:center;gap:8px;font-weight:700;margin-right:10px;white-space:nowrap}
.brand small{color:var(--dim);font-weight:400}
.beta{display:inline-block;font-size:11px;font-weight:700;line-height:1;padding:3px 6px;border-radius:9px;background:#2f7a4f;color:#fff;letter-spacing:.2px;vertical-align:middle}
.tbtn.signup{background:#FEE500;color:#191919;border-color:#e6cf00;font-weight:700}.tbtn.signup:hover{background:#ffeb3b}
.kakao-btn{display:block;width:100%;padding:11px 12px;border:0;border-radius:8px;background:#FEE500;color:#191919;font-weight:700;font-size:15px;cursor:pointer;margin-top:10px}.kakao-btn:hover{filter:brightness(1.04)}
.helper-card{position:absolute;left:58px;bottom:14px;z-index:6;width:330px;background:var(--panel);border:1px solid #3a7bd5;border-radius:8px;box-shadow:0 6px 22px rgba(0,0,0,.4);font-size:13px}
.helper-card[hidden]{display:none}.helper-card .hc-head{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid var(--line)}
.helper-card .hc-ico{color:#7cc4ff}.helper-card .hc-prog{color:var(--dim);font-size:12px}
.helper-card .hc-head button{background:none;border:0;color:var(--dim);cursor:pointer;font-size:15px;line-height:1;padding:2px 5px}.helper-card .hc-head button:hover{color:var(--fg)}
.helper-card .hc-body{padding:8px 10px 10px}.helper-card .hc-msg{margin:0 0 8px;line-height:1.5}.helper-card .hc-btns{display:flex;flex-wrap:wrap;gap:6px}
.helper-card .hc-skip{opacity:.7}.helper-card .hc-say.off{opacity:.55}.helper-card .hc-msg{cursor:pointer}.helper-card .hc-greet{margin:0 0 6px;color:#9fe0b8;line-height:1.5;font-weight:600}.helper-card .hc-greet[hidden]{display:none}.helper-card.min .hc-body{display:none}.helper-card.min{width:auto}
.tu-layer{position:fixed;inset:0;z-index:90;background:transparent}.tu-layer[hidden],.tu-spot[hidden],.tu-card[hidden]{display:none}
.tu-spot{position:fixed;z-index:91;border-radius:8px;box-shadow:0 0 0 9999px rgba(0,0,0,.62);outline:2px solid #ffd166;pointer-events:none;transition:left .25s,top .25s,width .25s,height .25s}
.tu-spot.none{outline:0}
.tu-card{position:fixed;z-index:92;width:min(400px,92vw);background:var(--panel);border:1px solid #ffd166;border-radius:10px;padding:10px 12px 12px;box-shadow:0 10px 30px rgba(0,0,0,.5);font-size:14px}
.tu-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.tu-n{color:#ffd166;font-size:12px}.tu-title{font-size:16px}
.tu-head button{background:none;border:0;color:var(--dim);cursor:pointer;font-size:15px;padding:2px 5px}.tu-head button:hover,.tu-head .tu-auto.on{color:var(--fg)}
.tu-text{margin:0 0 10px;line-height:1.65;cursor:pointer}.tu-btns{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.helper-card .hc-today{display:flex;align-items:center;gap:5px;margin-top:6px;color:var(--dim);font-size:12px;cursor:pointer}
.helper-card .hc-tut{display:block;margin-top:8px;background:none;border:0;padding:0;color:#ffd166;cursor:pointer;font-size:13px;text-decoration:underline}
.su-list{margin:6px 0 4px 18px;padding:0;line-height:1.6}.signup-box p{line-height:1.6}
.mark{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:6px;background:linear-gradient(135deg,var(--accent),#2b6fd6);color:var(--accent-ink);font:800 11px var(--sans)}
.tbtn{display:inline-flex;align-items:center;gap:5px;border:1px solid transparent;background:none;padding:4px 9px;border-radius:5px;cursor:pointer;white-space:nowrap}
.tbtn:hover{background:var(--panel2);border-color:var(--line)}
.tbtn.primary{background:var(--accent);color:var(--accent-ink);font-weight:600}
.tbtn.primary:hover{filter:brightness(1.1)}
.tbtn:disabled{opacity:.4;cursor:default}
.sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.spacer{flex:1}

/* 리본 */
.ribbon{background:var(--panel);border-bottom:1px solid var(--line)}
.rtabs{display:flex;gap:2px;padding:0 10px;border-bottom:1px solid var(--line)}
.rtab{border:0;background:none;padding:5px 14px 6px;color:var(--dim);border-bottom:2px solid transparent;cursor:pointer}
.rtab:hover{color:var(--ink)}
.rtab.on{color:var(--ink);border-bottom-color:var(--accent)}
.rgroups{display:flex;gap:2px;padding:5px 8px;overflow-x:auto;min-height:88px}
.rgroups[hidden],[hidden]{display:none!important}
.group{display:flex;flex-direction:column;border-right:1px solid var(--line);padding:0 6px}
.group .tools{flex:1;display:flex;gap:2px;align-items:flex-start}
.group.sm .tools{display:grid;grid-auto-flow:column;grid-template-rows:repeat(3,auto);gap:1px 2px;align-content:start}
.gname{text-align:center;color:var(--dim);font-size:11px;padding-top:2px}
.tool{display:flex;flex-direction:column;align-items:center;gap:2px;width:58px;padding:4px 2px;border:1px solid transparent;border-radius:5px;background:none;cursor:pointer}
.tool .ic{width:24px;height:24px}
.tool .lb{font-size:11.5px;white-space:nowrap}
.tool .key{font:10px var(--mono);color:var(--dim)}
.tool.s{flex-direction:row;width:auto;gap:5px;padding:2px 8px 2px 4px;height:24px}
.tool.s .ic{width:16px;height:16px}
.tool.s .key{display:none}
.tool:hover{background:var(--panel2);border-color:var(--line)}
.tool.on{background:rgba(76,194,255,.16);border-color:rgba(76,194,255,.5)}
.tool.todo{opacity:.55}

/* 작업 영역 */
.work{display:grid;grid-template-columns:minmax(0,1fr) 290px;min-height:0}
.work.noside{grid-template-columns:1fr}
.work.noside .side{display:none}
.view{position:relative;background:var(--bg);overflow:hidden;min-height:0}
#cv{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}
.ucs{position:absolute;left:10px;bottom:8px;color:var(--dim);font:11px var(--mono);pointer-events:none}
.ucs b{color:var(--accent)}
.viewbtns{position:absolute;right:10px;top:40px;display:flex;flex-direction:column;gap:4px}
.stylebtns{position:absolute;right:48px;top:40px;display:flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:rgba(26,30,37,.92)}
.stylebtns button{border:0;background:none;color:var(--ink);font:12.5px var(--sans);padding:6px 11px;cursor:pointer}
.stylebtns button+button{border-left:1px solid var(--line)}
.stylebtns button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}
.selbar{position:absolute;transform:translateX(-50%);display:flex;gap:2px;padding:3px;background:#fff;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.35);z-index:5}
.selbar .sb{width:30px;height:28px;border:0;border-radius:6px;background:none;color:#26313d;font-size:16px;cursor:pointer;line-height:1}
.selbar .sb:hover{background:#e6f4fb}
.selbar .sb[data-k=del]{color:#d33}
.view.lightview .ucs{color:#555}
.vbtn{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--line);border-radius:6px;background:rgba(26,30,37,.9);cursor:pointer}
.vbtn:hover{border-color:var(--accent)}
.toast{position:absolute;left:50%;top:14px;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 14px;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.on{opacity:1}

/* 오른쪽 패널 */
.side{display:flex;flex-direction:column;border-left:1px solid var(--line);background:var(--panel);min-height:0;overflow:auto}
.sec{padding:10px 12px;border-bottom:1px solid var(--line)}
.sec.grow{flex:1}
.sec h3{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px;font-size:12.5px;color:var(--dim);font-weight:600}
.sec textarea{width:100%;height:76px;resize:vertical;background:var(--bg);border:1px solid var(--line);border-radius:5px;padding:7px}
.row{display:flex;align-items:center;gap:8px;margin-top:6px}
.dim{color:var(--dim);font-size:12px}
.mini{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--panel2);border-radius:4px;padding:2px 7px;font-size:11.5px;cursor:pointer}
.mini .ic{width:14px;height:14px}
.mini:hover{border-color:var(--accent)}
.lyr{display:grid;grid-template-columns:16px 1fr auto auto auto;align-items:center;gap:6px;padding:3px 4px;border-radius:4px;cursor:pointer}
.lyr:hover{background:var(--panel2)}
.lyr.cur{background:rgba(76,194,255,.12)}
.lyr .sw{width:14px;height:14px;border-radius:3px;border:1px solid #0006;padding:0}
.lyr input[type=color]{width:16px;height:16px;border:0;padding:0;background:none;cursor:pointer}
.lyr .ib{border:0;background:none;padding:1px;cursor:pointer;color:var(--dim)}
.lyr .ib:hover{color:var(--ink)}
.lyr .ib .ic{width:15px;height:15px}
.props{display:grid;grid-template-columns:72px 1fr;gap:4px 8px;align-items:center}
.props label{color:var(--dim)}
.props input,.props select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:2px 6px}

/* 명령창 */
.cmd{border-top:1px solid var(--line);background:var(--panel)}
.hist{height:70px;overflow:auto;padding:4px 10px;font:12px var(--mono);color:var(--dim);white-space:pre-wrap}
.hist .me{color:var(--ink)}
.hist .ok{color:var(--ok)}
.hist .err{color:var(--err)}
.cmdline{display:flex;align-items:center;gap:6px;padding:3px 10px 5px;border-top:1px solid var(--line)}
.prompt{font:12px var(--mono);color:var(--accent);white-space:nowrap}
#cmdIn{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:3px 8px;font:12.5px var(--mono);outline:none}
#cmdIn:focus{border-color:var(--accent)}
.cmd{position:relative}
.rp-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:6px 0 10px}
.rp-tabs button{border:0;background:none;color:var(--dim);padding:7px 12px;cursor:pointer;font:13px var(--sans);border-bottom:2px solid transparent}
.rp-tabs button.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.rp-body{max-height:64vh;overflow:auto}
.rp-score{display:flex;align-items:baseline;gap:10px;margin:4px 0 10px}
.rp-score b{font-size:34px}
.rp-cards,.rp-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.rp-card,.rp-chip{border:1px solid var(--line);border-radius:8px;padding:8px 12px;min-width:110px;display:flex;flex-direction:column;gap:2px}
.rp-card b,.rp-chip b{font-size:18px}
.rp-card span,.rp-chip span{color:var(--dim);font-size:11.5px}
.rp-b{display:inline-block;border-radius:4px;padding:1px 6px;font-size:11px}
.rp-law{background:#dbe7ff;color:#1e3a8a}.rp-ref{background:#fdecc8;color:#7a4a05}.rp-gd{background:#e5e7eb;color:#374151}
.rp-t td .dim{font-size:11px}
.rp-t td:first-child,.rp-t td:nth-child(2){white-space:nowrap}
.rp-price{width:110px}
.rp-notes{margin:4px 0 0 18px}
.v3walk{position:absolute;left:50%;top:10px;transform:translateX(-50%);background:rgba(20,24,30,.8);color:#e8eef5;padding:6px 12px;border-radius:6px;font-size:12.5px;pointer-events:none}
.ab-box{width:min(560px,94vw)}
.ab-head{display:flex;gap:12px;align-items:center;margin:4px 0 12px}
.ab-head b{font-size:16px}
.ab-mark{width:42px;height:42px;font-size:16px;border-radius:9px}
.ab-t{width:100%;border-collapse:collapse;font-size:13px}
.ab-t th{width:28%;text-align:left;color:var(--dim);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.ab-t td{padding:6px 8px;border-bottom:1px solid var(--line)}
.ab-t a{color:var(--accent)}
.cmdlist{position:absolute;left:58px;bottom:34px;z-index:40;width:min(560px,80vw);max-height:300px;overflow:auto;background:var(--panel);border:1px solid var(--accent);border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.45);font:12.5px var(--sans)}
.cmdlist .cl-h{position:sticky;top:0;background:var(--panel);color:var(--dim);font-size:11.5px;padding:4px 10px;border-bottom:1px solid var(--line)}
.cmdlist .cl-i{display:grid;grid-template-columns:76px 130px 1fr;gap:8px;padding:3px 10px;cursor:pointer;align-items:baseline}
.cmdlist .cl-i b{font:600 12.5px var(--mono);color:var(--accent)}
.cmdlist .cl-i em{font-style:normal;color:var(--dim);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdlist .cl-i.on,.cmdlist .cl-i:hover{background:var(--accent);color:var(--accent-ink)}
.cmdlist .cl-i.on b,.cmdlist .cl-i:hover b,.cmdlist .cl-i.on em,.cmdlist .cl-i:hover em{color:var(--accent-ink)}

/* 상태 표시줄 */
.status{display:flex;align-items:center;gap:6px;padding:2px 8px 2px 10px;background:var(--panel2);border-top:1px solid var(--line);font-size:12px;min-height:30px}
.coord{font:12px var(--mono);min-width:150px;color:var(--dim)}
/* 오른쪽 아이콘 묶음: 꺼지면 흐리게, 켜지면 파란 아이콘 + 옅은 바탕 */
.tgs{display:flex;align-items:center;gap:1px;padding:1px 3px;border:1px solid var(--line);border-radius:5px;background:var(--panel)}
.tg{display:inline-flex;align-items:center;gap:4px;height:24px;border:1px solid transparent;background:none;border-radius:4px;padding:0 7px 0 5px;color:#6c7684;cursor:pointer;white-space:nowrap}
.tg .lb{font-size:11.5px}
.tg .ic{width:16px;height:16px}
.tg:hover{background:var(--panel2);color:var(--ink)}
.tsep{width:1px;height:16px;background:var(--line);margin:0 3px}
.tg.on{color:var(--accent);background:rgba(76,194,255,.14);border-color:rgba(76,194,255,.45)}
#stInfo{color:var(--dim)}

/* 명령 목록 창 */
.modal{position:fixed;inset:0;background:#0009;display:grid;place-items:center;z-index:30}
.modal .box{width:min(720px,92vw);max-height:80vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 18px}
.modal h3{display:flex;justify-content:space-between;margin:0 0 10px}
.modal h4{margin:14px 0 8px;font-size:12.5px;color:var(--dim)}
.modal .props select,.modal .props input{padding:4px 6px}
#aiIn:disabled{opacity:.6}
.ai-ex{margin-top:8px;font-size:12px;line-height:1.45;user-select:text;-webkit-user-select:text;cursor:text}
.ai-ex-h{color:var(--dim);font-size:11.5px;margin-bottom:3px;user-select:none;-webkit-user-select:none}
.ai-ex p{margin:0 0 4px;padding:4px 7px;border:1px solid var(--line);border-radius:5px;color:var(--ink);background:var(--bg)}
.ai-ex p:hover{border-color:var(--accent)}
.ai-ex p::selection{background:var(--accent);color:var(--accent-ink)}
.ai-opt{gap:4px 12px;font-size:12px;color:var(--dim);margin-top:6px;flex-wrap:wrap}
.ai-opt label{white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.ai-opt select{background:var(--bg);border:1px solid var(--line);border-radius:4px;color:var(--ink)}
.ai-drafts{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;font-size:11.5px}
.ai-drafts>.dim{width:100%}
.ai-draft{width:calc(50% - 3px);border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);padding:4px;cursor:pointer;display:flex;flex-direction:column;gap:2px;text-align:left}
.ai-draft img{width:100%;border-radius:4px}
.ai-draft span{color:var(--dim);font-size:10.5px}
.ai-draft.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
#bAiMic.rec{background:var(--err);color:#fff;border-color:var(--err)}
.modal table{width:100%;border-collapse:collapse;font-size:12.5px}
.modal td,.modal th{border-bottom:1px solid var(--line);padding:4px 6px;text-align:left}
.modal td.k{font-family:var(--mono);color:var(--accent)}

@media (max-width:820px){.work{grid-template-columns:1fr}.side{display:none}.work.showside .side{display:flex;position:absolute;right:0;top:0;bottom:0;width:290px;z-index:5}}

.lyr .ltb{border:1px solid var(--line);background:none;border-radius:3px;padding:0 4px;font-size:10.5px;color:var(--dim);cursor:pointer;min-width:30px}
.lyr .ltb:hover{color:var(--ink);border-color:var(--accent)}

/* 심볼 라이브러리 */
.symcats{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:10px}
.symcats .tbtn.on{background:rgba(76,194,255,.16);border-color:rgba(76,194,255,.5)}
.symgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;max-height:52vh;overflow:auto}
.modal .box.libbox{width:min(1560px,98vw);max-height:98vh;display:flex;flex-direction:column;overflow:auto}
.lib-body{display:flex;gap:12px;flex:none;align-items:flex-start}
.lib-left{flex:1;min-width:0;display:flex;flex-direction:column}
.lib-body .symgrid{max-height:none;height:max(600px,calc(98vh - 300px));align-content:start;grid-auto-rows:max-content}
.lib-prev{width:360px;flex:none;display:flex;flex-direction:column;gap:6px;background:#f7f9fb;color:#1c2733;border:1px solid #c9d1db;border-radius:8px;padding:10px;align-self:flex-start;position:sticky;top:0}
.lib-prev .lp-3d{width:340px;height:300px;border-radius:6px;overflow:hidden;background:#eef1f5;cursor:grab}
.lib-prev .lp-3d canvas{display:block}
.lib-prev .lp-2d canvas{display:block;border-radius:6px;max-width:340px}
.lib-prev .lp-name{font-size:14px}
.lib-prev .lp-info small{display:block;color:#5c6876;font-size:11.5px}
.lib-prev .lp-tip{font-size:11px;color:#6b7684;margin:0}
.symcard.on{box-shadow:0 0 0 3px var(--accent) !important}
.symcard.fav{background:#fff7e6}
.symcard{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px;border:1px solid var(--line);border-radius:6px;background:var(--bg);cursor:pointer}
.symcard:hover{border-color:var(--accent)}
.symcard small{color:var(--dim);font-size:10.5px}
/* 층 선택 */
.floorbox{display:flex;flex-direction:column;gap:4px;padding:2px 4px}
.floorbox select{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:2px 6px;min-width:110px}
.floorbox .row2{display:flex;gap:3px}
.mini.on{background:rgba(76,194,255,.16);border-color:rgba(76,194,255,.55);color:var(--accent)}

/* 3D 보기 */
.v3{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;background:#1b2027}
.v3[hidden]{display:none!important}
.v3bar{display:flex;flex-wrap:wrap;row-gap:4px;align-items:center;gap:10px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--line)}
.v3bar input[type=number]{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:2px 6px;color:var(--ink)}
.v3bar>b,.v3bar>label,.v3bar>.tbtn{white-space:nowrap;flex:none}
.v3bar>span.dim{flex:1 1 160px;min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;line-height:1.35}
.v3view{flex:1;min-height:0;position:relative}
.v3view canvas{display:block;width:100%;height:100%}
a.tbtn{color:inherit;text-decoration:none}
.props input[type=checkbox]{width:auto;vertical-align:middle;margin-right:4px}
@media (max-width:1100px){.tg .lb{display:none}.tg{padding:0 5px}}
.symtop{gap:8px;margin-bottom:8px;align-items:center}
.symtop input{flex:1;max-width:320px}

/* 설계 검토 표 */
table.chk{width:100%;border-collapse:collapse;font-size:12px}
table.chk th{position:sticky;top:0;background:var(--panel2);text-align:left;padding:5px 8px;border-bottom:1px solid var(--line)}
table.chk td{padding:4px 8px;border-bottom:1px solid var(--line);vertical-align:top}
table.chk tr.chk-ok td:first-child{color:var(--ok,#55d17a)}
table.chk tr.chk-warn td:first-child{color:#ffd166}
table.chk tr.chk-ng td:first-child{color:var(--err,#ff6b5e);font-weight:600}
table.chk tr:hover td{background:rgba(76,194,255,.08)}

/* 3D BIM 패널 */
.v3bim{position:absolute;right:12px;top:52px;width:300px;max-height:calc(100% - 66px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;z-index:6;box-shadow:0 6px 24px rgba(0,0,0,.4)}
.v3fin{position:fixed;left:12px;right:auto;top:110px;width:400px;max-height:calc(100vh - 160px);z-index:60}.v3fin .fp-tabs{display:flex;gap:4px;margin-bottom:6px}.v3fin .fp-tgt{font-size:12px;margin-bottom:6px}.v3fin .fp-tip{margin:2px 0;font-size:11px}.v3fin .fp-rooms{display:flex;flex-direction:column;max-height:140px;overflow:auto;font-size:12px}.v3fin .fp-q{width:100%;margin:4px 0}.v3fin .fp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.v3fin .fp-grid>.tbtn,.v3fin .fp-cat{grid-column:1/-1}
.v3bim-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}.v3bim-h b{font-size:14px}.v3bim-h span{flex:1;font-size:12px}
.v3bim-img{display:block;width:100%;height:auto;border-radius:6px;margin-bottom:8px}
.v3bim-t{width:100%;border-collapse:collapse;font-size:12px}.v3bim-t th{text-align:left;color:var(--dim);font-weight:400;padding:3px 6px 3px 0;white-space:nowrap;vertical-align:top}.v3bim-t td{padding:3px 0}
.v3bim-sub{margin:10px 0 4px;font-weight:600;font-size:12px}.v3bim-g{color:var(--dim);font-size:11px;margin:6px 0 3px}
.v3bim-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.v3bim-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:5px;background:var(--bg);cursor:pointer;font-size:10.5px;color:var(--ink)}
.v3bim-card canvas{width:100%!important;height:auto!important;border-radius:3px}.v3bim-card span{line-height:1.2;text-align:center}
.v3bim-card:hover{border-color:var(--accent)}.v3bim-card.on{border-color:var(--accent);background:rgba(76,194,255,.14)}


.alib-g{grid-column:1/-1;color:var(--dim);font-size:12px;border-bottom:1px solid var(--line);padding:4px 0 2px;margin-top:4px}
.alib-mode{gap:6px;align-items:center;margin:0 0 6px}.alib-mode .tbtn.on,.seg .tbtn.on{border-color:var(--accent);color:var(--accent)}
.seg{display:inline-flex;gap:2px}
.alib-custom{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:6px 8px;margin:0 0 8px;border:1px dashed var(--line);border-radius:6px;font-size:12px}
.alib-custom input{width:68px}.alib-custom[hidden],.alib-custom label[hidden],.alib-mode[hidden]{display:none}.alib-custom canvas{vertical-align:middle;border-radius:4px}
.v3bim-edit{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;font-size:12px;margin:2px 0 6px}.v3bim-edit label{display:flex;flex-direction:column;color:var(--dim)}.v3bim-edit input{width:100%}

.floorbox .flh{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--dim)}.floorbox .flh input{width:58px;font-size:11px;padding:1px 3px}

#alibSub{flex-wrap:wrap;gap:4px}#alibSub .tbtn{font-size:11.5px;padding:2px 7px}

/* 라이브러리·심볼 카드: 밝은 그림 칸 + 분류 색 윗줄, 이름은 그림 아래 */
.symcard{--acc:#8fa3b8;background:#f2f4f7;border:1px solid #cfd6de;border-top:3px solid var(--acc);padding:0 0 6px;overflow:hidden;gap:2px;color:#1c2733}
.symcard canvas{display:block;width:100%;height:auto}
.symcard span{color:#1c2733;font-weight:600;font-size:12px;padding:3px 6px 0;text-align:center;line-height:1.3}
.symcard small{color:#5c6876;padding:0 6px;text-align:center}
.symcard:hover{border-color:var(--acc);box-shadow:0 0 0 2px var(--acc)}
.symcats .tbtn{--acc:#8fa3b8}.symcats .tbtn::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--acc);margin-right:6px;vertical-align:1px}
.symcats .tbtn.on{background:color-mix(in srgb,var(--acc) 24%,transparent);border-color:var(--acc);color:var(--ink)}
.alib-peek{--acc:#8fa3b8;position:fixed;z-index:80;width:300px;padding:8px;background:#f7f9fb;color:#1c2733;border:1px solid #c9d1db;border-top:4px solid var(--acc);border-radius:8px;box-shadow:0 12px 32px rgba(0,0,0,.5);pointer-events:none}
.alib-peek[hidden]{display:none}.alib-peek canvas{display:block;border-radius:5px;margin-bottom:5px}.alib-peek b{display:block;margin:4px 2px 2px;font-size:13px}.alib-peek small{display:block;color:#5c6876;margin:1px 2px}
.v3bim-card canvas{background:#f6f8fa;border-radius:3px}

.le-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:4px 6px;max-height:52vh;overflow:auto;align-items:center}.le-grid input{width:100%}

/* 도움말 창 */
.modal .hp-box{width:min(980px,95vw);max-height:88vh}
.hp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 18px}
.hp-grid section{break-inside:avoid}
.hp-grid h4{margin:10px 0 4px;color:var(--accent,#4ea1ff);font-size:12.5px}
.hp-k{display:flex;gap:8px;align-items:baseline;padding:2px 0;font-size:12.5px;border-bottom:1px dashed #ffffff12}
.hp-k code{min-width:72px;color:#ffd27a;font-size:12px}
.hp-stuck{background:#ffb5470d;border-radius:6px;padding:0 6px 4px}

/* 좁은 화면 (1280·1366 노트북): 상단바·상태 표시줄을 아이콘 위주로, 리본은 옆으로 밀어 보기 */
.rgroups{scrollbar-width:thin}
.rgroups.more-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
#stInfo{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:1600px){.top{gap:2px;padding:5px 8px}.top .tbtn{padding:4px 7px}.top .sep{margin:0 2px}}
@media (max-width:1500px){
  #bDemo,#bCmds,#bHelp,#bIntro,#bSettings,#bPanel,#bUndo,#bRedo{font-size:0;gap:0;padding:4px 6px}
  .tg .lb{display:none}.tg{padding:0 5px}
  .coord{min-width:120px}
}
@media (max-width:1300px){
  #bNew,#bSave,#bPlot,label.tbtn[data-ic="folder_open"]{font-size:0;gap:0;padding:4px 6px}
  .brand small{display:none}.brand{margin-right:4px}
  .work{grid-template-columns:minmax(0,1fr) 250px}
  .tool{width:52px}.group{padding:0 4px}
  #bDwg,#bDxf,#bPng{font-size:0;gap:0;padding:4px 6px}
  .brand .beta{font-size:0;padding:3px 6px}.brand .beta::before{content:'베타';font-size:11px}
  .helper-card{width:280px;font-size:12px;left:52px}.helper-card .hc-greet{font-size:12px}
}
@media (max-width:1150px){
  #bColBim,#bInstall,#bAiFocus{font-size:0;gap:0;padding:4px 6px}
  .top .tbtn{padding:4px 5px}.top .sep{display:none}
  .helper-card{width:250px;bottom:8px}.helper-card .hc-body{padding:6px 8px 8px}.helper-card .hc-tut,.helper-card .hc-today{margin-top:4px}
}
@media (max-height:760px){.helper-card .hc-body{max-height:46vh;overflow-y:auto}}
.auto-note{font-size:11.5px;color:#ffd27a;line-height:1.45}
.auto-note .mini{margin-left:4px}

.status .stscale{font-variant-numeric:tabular-nums;white-space:nowrap}
/* 설정 창 (OPTIONS, js/options.js) */
.opt-box{width:min(820px,96vw);max-height:92vh;display:flex;flex-direction:column}
.opt-tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:8px}
.opt-pane{overflow:auto;flex:1;min-height:360px;padding-right:4px}
.opt-g{border:1px solid var(--line);border-radius:6px;padding:6px 10px 8px;margin:0 0 10px}
.opt-g legend{padding:0 6px;color:var(--dim);font-size:12px}
.opt-r{display:flex;align-items:center;gap:8px;margin:4px 0;flex-wrap:wrap}
.opt-r>span:first-child{min-width:230px}
.opt-r input[type=number]{width:96px}
.opt-col input[type=color]{width:42px;height:24px;padding:0;border:1px solid var(--line);background:none}
.opt-col code{min-width:70px;font-size:11px}
.opt-snaps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px 10px;margin:6px 0}
.opt-tbl{max-height:210px;overflow:auto;border:1px solid var(--line);border-radius:5px;margin:4px 0}
.opt-tbl table{width:100%;border-collapse:collapse;font-size:12px}
.opt-tbl th{position:sticky;top:0;background:var(--panel2);text-align:left;padding:3px 6px}
.opt-tbl td{padding:2px 6px;border-top:1px solid var(--line);cursor:default}
.opt-tbl tr.on td{background:rgba(76,194,255,.18)}
.opt-foot{gap:6px;margin-top:10px;align-items:center}
.ctxmenu{position:fixed;z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:4px;display:flex;flex-direction:column;min-width:180px;box-shadow:0 6px 20px rgba(0,0,0,.4)}
.ctxmenu button{background:none;border:0;text-align:left;padding:5px 10px;border-radius:4px;color:inherit;cursor:pointer}
.ctxmenu button:hover{background:var(--panel2)}
.ctxmenu[hidden]{display:none}
.v3view canvas.v3axes{position:absolute;inset:0;pointer-events:none;width:100%;height:100%}
.fp-ang{display:flex;align-items:center;gap:5px;margin:4px 0;flex-wrap:wrap}
.inedit{position:absolute;z-index:30;background:rgba(18,21,26,.92);color:#fff;border:1px solid #4cc2ff;border-radius:3px;padding:1px 3px;resize:none;overflow:hidden;white-space:pre;line-height:1.25;font-family:'Malgun Gothic',sans-serif;transform-origin:0 100%}
/* 따라하기 (js/tour.js) */
.tour-card{position:fixed;right:24px;bottom:90px;z-index:28; /* v1.0.40: 창(.modal 30)보다 아래 — 그림 → 도면 등 창을 가리지 않게 */width:340px;background:var(--panel);border:1px solid #c98a2e;border-radius:8px;padding:10px 12px;box-shadow:0 8px 28px rgba(0,0,0,.45)}
.tour-card[hidden]{display:none}
.tour-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}.tour-top b{flex:1;font-size:14px}
.tour-b{line-height:1.6;font-size:12.5px}.tour-btns{display:flex;align-items:center;gap:6px;margin-top:10px}
.tool.tour-hi{outline:2px solid #ffb547;outline-offset:1px;border-radius:5px;animation:tourPulse 1.2s ease-in-out infinite}
@keyframes tourPulse{50%{outline-color:rgba(255,181,71,.25)}}
.opt-tbl tr.qty-g td{background:rgba(201,138,46,.12)}

/* 도면 탭 (v1.0.6): 화면 맨 위, 연 도면마다 탭 */
.doctabs{position:absolute;left:0;right:0;top:0;height:30px;display:flex;align-items:flex-end;gap:2px;padding:0 6px;background:rgba(26,30,37,.94);border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden;z-index:4;scrollbar-width:thin}
.doctab{display:flex;align-items:center;gap:6px;max-width:240px;height:25px;padding:0 6px 0 11px;border:1px solid var(--line);border-bottom:0;border-radius:6px 6px 0 0;background:var(--panel);color:var(--ink2,#aab3bf);font-size:12.5px;cursor:pointer;flex:0 0 auto;user-select:none}
.doctab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doctab.on{background:var(--bg);color:var(--ink);border-color:#4c96ff;box-shadow:inset 0 2px 0 #4c96ff}
.doctab:hover{color:var(--ink)}
.doctab .x{border:0;background:none;color:inherit;font-size:14px;line-height:1;padding:2px 4px;border-radius:4px;cursor:pointer;opacity:.6}
.doctab .x:hover{opacity:1;background:var(--panel2)}
.doctab-add{flex:0 0 auto;height:23px;width:26px;margin-bottom:1px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);cursor:pointer;font-size:15px;line-height:1}
.doctab-add:hover{background:var(--panel2)}

/* 3D 파일 저장 목록 (v1.0.9) */
.v3expw{position:relative;display:inline-block}
.v3expm{position:absolute;right:0;top:calc(100% + 4px);z-index:60;display:flex;flex-direction:column;gap:2px;min-width:420px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.v3expm[hidden]{display:none}
.v3expm .tbtn{justify-content:flex-start;text-align:left;width:100%;white-space:nowrap}
.v3expm .tbtn b{min-width:42px;display:inline-block}

/* v1.0.9 보기 방식 2D · 2D|3D · 3D */
.vmode{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex:none}
.vmode button{background:transparent;border:0;color:var(--ink);padding:4px 10px;font:inherit;font-size:12px;cursor:pointer;border-left:1px solid var(--line)}
.vmode button:first-child{border-left:0}
.vmode button:hover{background:rgba(127,127,127,.18)}
.vmode button.on{background:var(--accent,#3b82f6);color:#fff}
.work.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 290px}
.work.split.noside{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.v3.docked{position:relative;inset:auto;z-index:auto;min-width:0;min-height:0;border-left:2px solid var(--line)}
.v3.docked .v3bar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}
.v3.docked .v3bar>span.dim{display:none}
/* v1.0.9 바로 뜨는 풍선 도움말 (js/tips.js) */
.hgtip{position:fixed;z-index:1000;max-width:340px;padding:6px 9px;border-radius:6px;background:#0b0e12;color:#eef2f6;border:1px solid var(--accent);font:12px/1.45 var(--sans);white-space:pre-line;pointer-events:none;box-shadow:0 6px 18px rgba(0,0,0,.45)}
.hgtip[hidden]{display:none}
/* v1.0.9 3D 보기 단추 줄 */
.v3views{display:flex;flex-wrap:wrap;gap:4px;align-items:center;padding:4px 12px;background:var(--panel2);border-bottom:1px solid var(--line)}
.v3views .vv{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:5px;padding:3px 10px;font:inherit;font-size:12px;cursor:pointer;white-space:nowrap}
.v3views .vv:hover{border-color:var(--accent)}
.v3views .vv.on{background:rgba(76,194,255,.18);border-color:var(--accent);color:var(--accent)}
.v3views .sep{width:1px;height:18px;background:var(--line);margin:0 4px}
.v3.docked .v3views{flex-wrap:nowrap;overflow-x:auto}
.v3views .vvcol{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--dim);margin-left:6px;white-space:nowrap}
.v3views .vvcol input{width:26px;height:20px;padding:0;border:1px solid var(--line);border-radius:4px;background:none;cursor:pointer}
.v3views .vvcol input[type=checkbox]{width:auto;height:auto;border:0}
