:root{--primary:#36f;--primary-hover:#2f5ce5;--primary-light:#eef3ff;--bg:#fff;--bg-section:#f7f8fa;--border:#e1e2e4;--border-strong:#d4d6d9;--text:#171717;--text-sub:#555b63;--text-dim:#8f959d;--green:#00b26b;--green-light:#e6f7f0;--yellow:#b8860b;--yellow-light:#fdf6e3;--gray-badge:#f2f3f5;--red:#e5484d;--shadow:0 2px 8px hsla(0,0%,9%,.06);--shadow-hover:0 6px 16px hsla(0,0%,9%,.1)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-section);color:var(--text);font-family:Pretendard Variable,Pretendard,-apple-system,Segoe UI,Malgun Gothic,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.header{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;padding:14px 28px;background:var(--bg);border-bottom:1px solid var(--border)}.header h1{font-size:18px;font-weight:800;white-space:nowrap;letter-spacing:-.02em}.header h1 .dot{color:var(--primary)}.header .count{color:var(--text-dim);font-size:13px}.spacer{flex:1 1}.search{background:var(--bg-section);border:1px solid var(--border);border-radius:10px;padding:9px 14px;color:var(--text);width:280px;outline:none;font-size:13px}.search::placeholder{color:var(--text-dim)}.search:focus{border-color:var(--primary);background:var(--bg)}.filters{display:flex;gap:8px;flex-wrap:wrap;padding:16px 28px 0}.chip{background:var(--bg);border:1px solid var(--border);color:var(--text-sub);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500}.chip:hover{border-color:var(--border-strong)}.chip.on{background:var(--primary);border-color:var(--primary);color:#fff}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));grid-gap:20px;gap:20px;padding:20px 28px 56px}.card{background:var(--bg);border:1px solid var(--border);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow);transition:box-shadow .15s,transform .15s;cursor:pointer}.card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.card.pinned{border-color:var(--primary)}.thumb{position:relative;width:100%;aspect-ratio:16/9;background:var(--bg-section);overflow:hidden;border-bottom:1px solid var(--border)}.thumb img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.fav-btn{position:absolute;top:10px;right:10px;z-index:2;width:32px;height:32px;border-radius:50%;background:hsla(0,0%,100%,.92);border:1px solid var(--border);font-size:16px;line-height:1;color:var(--text-dim);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow)}.fav-btn:hover{color:#f5a623;border-color:var(--border-strong)}.fav-btn.on{color:#f5a623}.mute-btn{position:absolute;top:10px;right:48px;z-index:2;width:32px;height:32px;border-radius:50%;background:hsla(0,0%,100%,.92);border:1px solid var(--border);font-size:14px;line-height:1;color:var(--text-dim);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);visibility:hidden}.card:hover .mute-btn,.mute-btn.on{visibility:visible}.mute-btn:hover{color:var(--red);border-color:var(--border-strong)}.mute-btn.on{color:var(--primary)}.thumb .placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:12px;letter-spacing:.08em}.card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:10px;flex:1 1}.card-title{display:flex;align-items:center;gap:8px}.card-title .name{font-size:16px;font-weight:700;word-break:break-all;letter-spacing:-.01em}.repo{color:var(--text-dim);font-size:11.5px;word-break:break-all}.card-desc{color:var(--text-sub);font-size:13px;line-height:1.55;min-height:18px}.badges{display:flex;gap:6px;flex-wrap:wrap}.badge{font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--gray-badge);color:var(--text-sub)}.badge.active{background:var(--green-light);color:var(--green)}.badge.maintenance{background:var(--yellow-light);color:var(--yellow)}.badge.dormant{background:var(--gray-badge);color:var(--text-dim)}.badge.deployed{background:var(--primary-light);color:var(--primary)}.info-rows{display:flex;flex-direction:column;gap:6px;margin-top:auto}.info-row{display:flex;align-items:center;gap:8px;background:var(--bg-section);border-radius:10px;padding:8px 12px;font-size:12.5px}.info-row .label{color:var(--text-dim);font-size:11px;font-weight:600;width:34px;flex-shrink:0}.info-row .value{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Consolas,monospace;color:var(--text)}.info-row a.value{color:var(--primary)}.info-row a.value:hover{text-decoration:underline}.copy-btn{background:none;border:none;color:var(--text-dim);font-size:12px;padding:2px 5px;border-radius:6px;flex-shrink:0}.copy-btn:hover{color:var(--text);background:var(--border)}.card-actions{display:flex;gap:8px}.btn{flex:1 1;text-align:center;font-size:13px;font-weight:600;padding:9px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);transition:background .1s,border-color .1s}.btn:hover{background:var(--bg-section);border-color:var(--border-strong)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-hover)}.btn.danger{color:var(--red)}.btn:disabled{opacity:.5;cursor:default}.btn.slim{flex:0 0 auto;padding:7px 12px;font-size:12.5px}.overlay{position:fixed;inset:0;background:hsla(0,0%,9%,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--bg);border-radius:16px;width:100%;max-width:540px;max-height:90vh;overflow-y:auto;padding:26px;box-shadow:0 16px 40px hsla(0,0%,9%,.18)}.modal h2{font-size:17px;font-weight:700;margin-bottom:18px}.field{margin-bottom:13px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--text-sub);margin-bottom:6px}.field input,.field textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px 12px;color:var(--text);font-size:13.5px;outline:none}.field input:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.field textarea{resize:vertical;min-height:64px;font-family:inherit}.field-row{display:flex;gap:12px}.field-row .field{flex:1 1}.modal-actions{display:flex;gap:10px;margin-top:20px}.check-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-sub);margin-bottom:13px}.check-row input{width:auto;accent-color:var(--primary)}.error-msg{color:var(--red);font-size:12.5px;margin-top:8px}.muted{font-size:12.5px}.empty,.muted{color:var(--text-dim)}.empty{padding:72px;text-align:center}.detail-page{background:var(--bg);min-height:100vh}.detail-wrap{padding:20px 40px 72px}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:12.5px;font-weight:500;margin-bottom:14px}.back-link:hover{color:var(--primary)}.detail-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px}.detail-title-row h1{font-size:26px;font-weight:800;letter-spacing:-.02em}.detail-title-row .repo{margin-top:5px;font-size:12.5px}.detail-title-row .badges{margin-top:10px}.detail-title-actions{display:flex;gap:8px;padding-top:4px}.head-meta{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.head-meta .meta-item{font-size:12.5px;color:var(--text-dim)}.head-meta .meta-item b{color:var(--text-sub);font-weight:600}.detail-page.fixed-vh{height:100vh;overflow:hidden;display:flex;flex-direction:column;padding:0 24px}.fixed-vh .detail-bar{padding-top:14px;margin-bottom:0;flex-shrink:0}.workspace.vh{flex:1 1;min-height:0;padding:14px 0 16px;align-items:stretch;transition:grid-template-columns .18s ease}.vh-col.collapsed{overflow:hidden;min-width:0}.vh-col.collapsed>*{visibility:hidden}.btn.icon-only{padding:7px 8px;display:inline-flex;align-items:center}.btn.icon-only.on{color:var(--primary);border-color:var(--primary);background:var(--primary-light)}.vh-col{display:flex;flex-direction:column;min-height:0;max-height:100%}.vh-scroll{overflow-y:auto;min-height:0;padding-right:6px}.ws-main.vh-scroll{gap:16px}.workspace.vh .ws-right,.workspace.vh .ws-screens{position:static}.workspace.vh .ws-screen-list{max-height:none;flex:1 1}.right-body{flex:1 1}.right-body.unified{gap:22px}.right-body.unified,.rp-sec{display:flex;flex-direction:column}.rp-sec{gap:10px}.rp-sec+.rp-sec{border-top:1px solid var(--border);padding-top:20px}.rp-title{font-size:13px;color:var(--text-sub);letter-spacing:.02em;display:flex;justify-content:space-between;gap:8px}.comment-pin-no,.rp-title{font-weight:700;align-items:center}.comment-pin-no{display:inline-flex;justify-content:center;width:18px;height:18px;border-radius:50%;margin-right:6px;background:var(--primary);color:#fff;font-size:11px}.comment-pin-no.other{background:var(--gray-badge);color:var(--text-sub);width:auto;border-radius:5px;padding:0 4px}.memo-feed.narrow .memo-entry.column{flex-direction:column}.memo-feed.narrow .memo-img img{width:100%;max-width:none}.anno-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap;position:-webkit-sticky;position:sticky;top:0;z-index:6;background:var(--bg-section);padding:6px 0}.tool-group{border:1px solid var(--border);border-radius:10px;overflow:hidden}.tool-btn,.tool-group{display:inline-flex;background:var(--bg)}.tool-btn{width:34px;height:30px;border:none;border-right:1px solid var(--border);color:var(--text-sub);align-items:center;justify-content:center}.tool-btn:last-child{border-right:none}.tool-btn.on{background:var(--primary);color:#fff}.tool-btn:not(.on):hover{background:var(--bg-section);color:var(--text)}.btn.ghost{display:inline-flex;align-items:center;gap:5px;background:none;border-color:transparent;color:var(--text-sub)}.btn.ghost:hover{background:var(--bg-section);border-color:var(--border);color:var(--text)}.btn.ghost.danger{color:var(--red)}.btn.ghost.danger:hover{background:#fdecec;border-color:#f5c6c8;color:var(--red)}.anno-wrap.mode-erase{cursor:cell}.spin{animation:pm-spin 1s linear infinite}@keyframes pm-spin{to{transform:rotate(1turn)}}.screen-thumb.drop-before{box-shadow:0 -3px 0 0 var(--primary)}.screen-thumb.drop-after{box-shadow:0 3px 0 0 var(--primary)}.anno-wrap{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none}.anno-wrap img{width:100%;border:1px solid var(--border);border-radius:12px;display:block;box-shadow:var(--shadow)}.anno-wrap.mode-pin{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="10.5" r="8.5" fill="%233366ff" stroke="white" stroke-width="1.5"/><path d="M6.5 17.5L4 22l6-3z" fill="%233366ff" stroke="white" stroke-width="1.2" stroke-linejoin="round"/><path d="M8.5 10.5h7M12 7v7" stroke="white" stroke-width="2" stroke-linecap="round"/></svg>') 4 22,crosshair}.anno-wrap.mode-draw{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24"><path d="M17 3l4 4L8 20l-5 1 1-5z" fill="%23ff4d4f" stroke="white" stroke-width="1.5"/></svg>') 2 21,crosshair}.anno-wrap.mode-erase{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8.5 20l-5-5a2 2 0 0 1 0-2.8l8-8a2 2 0 0 1 2.8 0l6 6a2 2 0 0 1 0 2.8l-7 7z" fill="%23ffb3c1" stroke="white" stroke-width="1.5"/><path d="M6 9.5l8.5 8.5" stroke="white" stroke-width="1.5"/><path d="M8.5 20H21" stroke="%23555b63" stroke-width="2" stroke-linecap="round"/></svg>') 3 20,cell}.anno-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.anno-pin{position:absolute;transform:translateY(-100%);transform-origin:0 100%;width:26px;height:26px;border-radius:50% 50% 50% 2px;background:linear-gradient(150deg,var(--primary),#4f46e5);color:#fff;font-size:12px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 8px rgba(37,99,235,.4),0 0 0 2px #fff;transition:transform .15s cubic-bezier(.34,1.56,.64,1),box-shadow .15s}.anno-pin.new{background:linear-gradient(150deg,var(--green),#16a34a)}.anno-pin.has-comment{cursor:pointer;z-index:4}.anno-pin.has-comment:hover{z-index:6;transform:translateY(-100%) scale(1.18);box-shadow:0 5px 14px rgba(37,99,235,.5),0 0 0 3px #fff}.anno-pin.has-comment.open{z-index:6;transform:translateY(-100%) scale(1.12);box-shadow:0 5px 14px rgba(37,99,235,.55),0 0 0 3px #fff,0 0 0 6px rgba(37,99,235,.18)}.anno-pin.has-comment:before{content:"";position:absolute;inset:-2px;border-radius:inherit;box-shadow:0 0 0 0 rgba(37,99,235,.45);animation:annoPulse 2.4s ease-out infinite}.anno-pin.has-comment.open:before,.anno-pin.has-comment:hover:before{animation:none}@keyframes annoPulse{0%{box-shadow:0 0 0 0 rgba(37,99,235,.4)}70%,to{box-shadow:0 0 0 9px rgba(37,99,235,0)}}.anno-bubble{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%) translateY(4px) scale(.96);transform-origin:bottom center;min-width:90px;max-width:260px;width:max-content;background:linear-gradient(155deg,#273043,#1a2130);color:#f1f5f9;font-size:12.5px;font-weight:500;line-height:1.5;text-align:left;white-space:pre-wrap;word-break:break-word;padding:9px 12px;border-radius:11px;box-shadow:0 8px 24px rgba(0,0,0,.35),inset 0 0 0 1px hsla(0,0%,100%,.06);opacity:0;visibility:hidden;transition:opacity .16s ease,transform .16s cubic-bezier(.34,1.56,.64,1);pointer-events:none}.anno-bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:#1a2130}.anno-pin.has-comment.open .anno-bubble,.anno-pin.has-comment:hover .anno-bubble{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0) scale(1)}.anno-pending{position:absolute;z-index:5;display:flex;align-items:flex-end;gap:6px;transform:translateY(-100%)}.anno-pending .anno-pin.new{position:static;transform:none;flex:0 0 auto}.anno-pending textarea{width:300px;border:1px solid var(--primary);border-radius:9px;padding:9px 11px;font-size:13px;line-height:1.5;outline:none;background:var(--bg);box-shadow:var(--shadow-hover);resize:none;overflow-y:auto;min-height:58px;max-height:180px;font-family:inherit}.detail-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:16px}.detail-bar h1{font-size:19px;font-weight:800;letter-spacing:-.02em}.detail-bar .repo{font-size:12px}.bar-divider{width:1px;height:18px;background:var(--border)}.workspace{display:grid;grid-template-columns:200px minmax(0,1fr) 320px;grid-gap:18px;gap:18px;align-items:start}@media (max-width:1100px){.workspace{grid-template-columns:1fr}}.ws-col-head{display:flex;align-items:center;gap:6px;font-weight:700;margin-bottom:10px}.icon-btn,.ws-col-head{font-size:13px;color:var(--text-sub)}.icon-btn{width:26px;height:26px;border-radius:7px;border:1px solid var(--border);background:var(--bg);line-height:1}.icon-btn:hover{border-color:var(--primary);color:var(--primary)}.icon-btn:disabled{opacity:.5}.ws-screens{position:-webkit-sticky;position:sticky;top:70px}.ws-screen-list{display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 150px);overflow-y:auto;padding-right:4px}.screen-thumb.v{width:100%;flex-shrink:0}.thumb-empty{display:flex;align-items:center;justify-content:center;aspect-ratio:16/10;font-size:10.5px;color:var(--text-dim);letter-spacing:.06em;background:var(--bg-section)}.ws-main{min-width:0;display:flex;flex-direction:column;gap:18px}.ws-noscreen{display:flex;align-items:center;justify-content:center;min-height:220px;border:1px dashed var(--border-strong);border-radius:12px}.mini-board{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media (max-width:700px){.mini-board{grid-template-columns:1fr}}.img-strip{display:flex;gap:8px;margin-top:10px;overflow-x:auto;padding-bottom:4px}.img-chip{position:relative;flex-shrink:0;width:108px;border:2px solid var(--border);border-radius:8px;overflow:hidden;cursor:pointer}.img-chip.on{border-color:var(--primary)}.img-chip[draggable=true]{cursor:-webkit-grab;cursor:grab;transition:transform .12s,box-shadow .12s,border-color .12s}.img-chip[draggable=true]:active{cursor:-webkit-grabbing;cursor:grabbing}.img-chip.drag-over{border-color:var(--primary);transform:translateX(3px)}.img-chip.drag-over:before{content:"";position:absolute;left:-5px;top:4px;bottom:4px;width:3px;border-radius:2px;background:var(--primary)}.img-chip.cover{border-color:var(--primary);box-shadow:0 0 0 2px rgba(51,102,255,.18)}.img-chip .img-tag.cover{background:var(--primary)}.img-chip img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top;display:block}.img-chip .img-del{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;border:none;background:hsla(0,0%,9%,.65);color:#fff;font-size:9px;display:none}.img-chip:hover .img-del{display:block}.img-chip .img-tag{position:absolute;bottom:3px;left:3px;font-size:9.5px;font-weight:700;background:rgba(51,102,255,.85);color:#fff;border-radius:4px;padding:1px 5px}.img-add{flex-shrink:0;width:108px;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;border:2px dashed var(--border-strong);border-radius:8px;color:var(--text-dim);font-size:18px;cursor:pointer}.img-add:hover{border-color:var(--primary);color:var(--primary)}.ws-right{align-self:stretch;height:100%}.below-ws{margin-top:8px}.pin-strip{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.pin-strip .pin-item{flex:0 1 auto}.screens-sec{margin-top:22px}.screens-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.screens-head h2{font-size:13px;font-weight:700;color:var(--text-sub);letter-spacing:.02em}.screen-thumbs{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px}.screen-thumb{position:relative;flex-shrink:0;width:168px;background:var(--bg);border:2px solid var(--border);border-radius:10px;padding:0;overflow:hidden;text-align:left}.screen-thumb.on{border-color:var(--primary)}.screen-thumb img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top;display:block}.screen-thumb .thumb-path{display:block;font-size:11px;font-family:Consolas,monospace;color:var(--text-sub);padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:1px solid var(--border);background:var(--bg-section)}.screen-thumb .thumb-cnt{position:absolute;top:6px;right:6px;font-size:10.5px;font-weight:700;background:hsla(0,0%,9%,.68);color:#fff;border-radius:999px;padding:2px 7px;display:inline-flex;align-items:center;gap:3px}.screen-thumb .thumb-cnt.done{background:rgba(22,163,74,.85)}.screen-thumb .thumb-stale{position:absolute;top:6px;left:6px;font-size:10px;font-weight:700;background:var(--red);color:#fff;border-radius:5px;padding:2px 6px}.screen-thumb .thumb-stale,.screen-thumb.on .thumb-stale{box-shadow:0 1px 3px rgba(0,0,0,.2)}.screen-detail{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-gap:18px;gap:18px;margin-top:12px;align-items:start}@media (max-width:900px){.screen-detail{grid-template-columns:1fr}}.screen-view img{width:100%;border:1px solid var(--border);border-radius:12px;display:block;box-shadow:var(--shadow)}.screen-caption{display:flex;align-items:center;gap:10px;margin-top:8px}.mono-path{font-family:Consolas,monospace;font-size:12.5px;color:var(--primary);background:var(--primary-light);border-radius:6px;padding:2px 8px}.screen-comments{background:var(--bg-section);border:1px solid var(--border);border-radius:12px;padding:14px}.screen-comments h3{font-size:13px;font-weight:700;color:var(--text-sub);margin-bottom:10px;display:flex;gap:6px;align-items:center}.comment-list{display:flex;flex-direction:column;gap:8px}.comment-item{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:9px 11px}.comment-text{font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.comment-meta{font-size:11.5px;color:var(--text-dim);margin-top:5px;display:flex;align-items:center;gap:8px}.comment-add{display:flex;gap:7px;margin-top:10px;align-items:flex-end}.comment-add textarea{flex:1 1;border:1px solid var(--border);border-radius:9px;padding:9px 11px;font-size:13px;line-height:1.5;outline:none;background:var(--bg);resize:none;overflow-y:auto;min-height:58px;max-height:180px;font-family:inherit}.comment-add textarea:focus{border-color:var(--primary)}.comment-add label.btn{display:inline-flex;align-items:center;cursor:pointer}.comment-composer{flex-shrink:0;padding-top:10px;border-top:1px solid var(--border);margin-top:8px}.comment-img{display:block;margin-bottom:6px}.comment-img img{width:100%;border-radius:8px;border:1px solid var(--border);display:block}.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px;margin-top:20px}@media (max-width:900px){.board{grid-template-columns:1fr}}.board-col{background:var(--bg-section);border:1px solid var(--border);border-radius:12px;padding:14px 14px 12px;min-height:150px;display:flex;flex-direction:column;gap:6px}.board-col>h3{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--text-sub);margin-bottom:6px}.col-dot{width:8px;height:8px;border-radius:50%}.col-dot.doing{background:var(--primary)}.col-dot.todo{background:var(--yellow)}.col-dot.pin{background:var(--green)}.col-count{color:var(--text-dim);font-weight:600;font-size:12px}.pin-item,.task-item{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:8px 10px;font-size:13px}.task-item .date{font-family:Consolas,monospace;font-size:11.5px;font-weight:600;color:var(--text-sub);background:var(--gray-badge);border-radius:5px;padding:1px 6px;flex-shrink:0}.pin-item .title,.task-item .title{flex:1 1;word-break:break-word;line-height:1.45}.task-item.done .title{text-decoration:line-through;color:var(--text-dim)}.task-item.overdue .date{color:var(--red);background:#fdecec}.task-item .dday{font-size:11px;font-weight:700;color:var(--primary);background:var(--primary-light);border-radius:5px;padding:1px 6px;flex-shrink:0}.task-item .dday.hot{color:var(--red);background:#fdecec}.task-actions{display:none;gap:2px;flex-shrink:0}.task-item:hover .task-actions{display:inline-flex}.pin-del,.task-actions button{background:none;border:none;color:var(--text-dim);font-size:11.5px;padding:2px 5px;border-radius:5px}.pin-del:hover,.task-actions button:hover{color:var(--text);background:var(--gray-badge)}.pin-del{display:none}.pin-item:hover .pin-del{display:inline-block}.board-add{width:100%;border:1px dashed var(--border-strong);border-radius:9px;background:none;padding:8px 10px;font-size:12.5px;outline:none;color:var(--text);margin-top:2px}.board-add::placeholder{color:var(--text-dim)}.board-add:focus{border-color:var(--primary);border-style:solid;background:var(--bg)}.board-add-row{display:flex;gap:6px;margin-top:2px}.board-add-row input[type=date]{border:1px dashed var(--border-strong);border-radius:9px;background:none;padding:7px 8px;font-size:12px;color:var(--text-sub);outline:none;font-family:inherit;width:130px}.board-add-row input[type=date]:focus{border-color:var(--primary);border-style:solid;background:var(--bg)}.board-add-row .board-add{margin-top:0}.memo-composer{border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:18px;background:var(--bg-section)}.memo-composer textarea{width:100%;min-height:64px;border:1px solid var(--border);border-radius:9px;padding:10px 12px;font-size:13.5px;font-family:inherit;outline:none;resize:vertical;background:var(--bg)}.memo-composer textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.memo-preview{position:relative;margin-bottom:10px;display:inline-block}.memo-preview img{max-height:220px;max-width:100%;border-radius:9px;border:1px solid var(--border);display:block}.memo-preview-del{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;background:hsla(0,0%,9%,.65);color:#fff;border:none;font-size:11px}.memo-composer-foot{display:flex;align-items:center;gap:10px;margin-top:10px}.memo-composer-foot label.btn{cursor:pointer}.memo-feed{display:flex;flex-direction:column;gap:14px}.memo-entry{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--border);border-radius:12px;padding:12px}.memo-img{flex-shrink:0}.memo-img img{width:260px;max-width:40vw;border-radius:8px;border:1px solid var(--border);display:block}.memo-body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:8px}.memo-text{font-size:13.5px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.memo-meta{display:flex;align-items:center;gap:10px;margin-top:auto}.memo-del,.memo-meta{font-size:12px;color:var(--text-dim)}.memo-del{background:none;border:none;padding:1px 4px;border-radius:5px}.memo-del:hover{color:var(--red);background:var(--gray-badge)}.done-strip{margin-top:10px;display:flex;flex-direction:column;gap:6px}.done-toggle{align-self:flex-start;background:none;border:none;font-size:12.5px;font-weight:600;color:var(--text-dim);padding:4px 6px;border-radius:6px}.done-toggle:hover{color:var(--text-sub);background:var(--bg-section)}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-gap:48px;gap:48px;align-items:start;margin-top:18px}@media (max-width:900px){.detail-grid{grid-template-columns:1fr;gap:0}}.detail-main{display:flex;flex-direction:column;min-width:0}.dsec{padding:22px 0;border-bottom:1px solid var(--border)}.dsec:first-child{padding-top:8px}.dsec:last-child{border-bottom:none}.dsec>h2{font-size:13px;font-weight:700;color:var(--text-sub);letter-spacing:.02em;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}.side-rail{background:var(--bg-section);border:1px solid var(--border);border-radius:12px;padding:6px 16px 10px;position:-webkit-sticky;position:sticky;top:76px}.side-rail>h2{font-size:12.5px;font-weight:700;color:var(--text-sub);padding:12px 0 8px;border-bottom:1px solid var(--border)}.side-fields{display:flex;flex-direction:column}.side-field{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}.side-field:last-child{border-bottom:none}.side-field dt{width:68px;flex-shrink:0;color:var(--text-dim);font-weight:600;font-size:12px;padding-top:1px}.side-field dd{flex:1 1;color:var(--text);word-break:break-all;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.side-field dd.mono{font-family:Consolas,monospace;font-size:12.5px}.side-field .link{color:var(--primary)}.side-field .link:hover{text-decoration:underline}.commit-list{display:flex;flex-direction:column}.commit-item{display:flex;align-items:baseline;gap:10px;padding:8px 6px;border-bottom:1px solid var(--bg-section);font-size:13px}.commit-item:last-child{border-bottom:none}.commit-item .sha{font-family:Consolas,monospace;font-size:12px;color:var(--primary);background:var(--primary-light);border-radius:6px;padding:1px 7px;flex-shrink:0}.commit-item .sha:hover{text-decoration:underline}.commit-item .msg{flex:1 1;word-break:break-word;line-height:1.5}.commit-item .when,.commit-item .who{color:var(--text-dim);font-size:12px;flex-shrink:0}.commit-item .when{font-family:Consolas,monospace}.notes-view{font-size:14px;line-height:1.75;color:var(--text);white-space:pre-wrap;word-break:break-word}.notes-empty,.notes-view:empty:before{color:var(--text-dim);content:""}.notes-edit{width:100%;min-height:240px;border:1px solid var(--border);border-radius:10px;padding:12px;font-size:13.5px;line-height:1.7;font-family:inherit;outline:none;resize:vertical}.notes-edit:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.event-list{display:flex;flex-direction:column;gap:4px}.event-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;font-size:13.5px}.event-item:hover{background:var(--bg-section)}.event-item input[type=checkbox]{accent-color:var(--primary);width:15px;height:15px;flex-shrink:0}.event-item .date{font-size:12px;font-weight:600;color:var(--primary);background:var(--primary-light);border-radius:6px;padding:2px 7px;flex-shrink:0;font-family:Consolas,monospace}.event-item.past .date{color:var(--text-dim);background:var(--gray-badge)}.event-item .title{flex:1 1;word-break:break-word}.event-item.done .title{text-decoration:line-through;color:var(--text-dim)}.event-item .del{background:none;border:none;color:var(--text-dim);font-size:13px;padding:2px 6px;border-radius:6px;visibility:hidden}.event-item:hover .del{visibility:visible}.event-item .del:hover{color:var(--red);background:var(--border)}.event-add{display:flex;gap:8px;margin-top:12px}.event-add input[type=date]{padding:8px 10px;color:var(--text);font-family:inherit}.event-add input[type=date],.event-add input[type=text]{border:1px solid var(--border);border-radius:10px;font-size:13px;outline:none}.event-add input[type=text]{flex:1 1;padding:8px 12px}.event-add input:focus{border-color:var(--primary)}.adm-cards{display:flex;gap:16px;padding:20px 28px 0;flex-wrap:wrap}.adm-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:16px 24px;min-width:160px;box-shadow:var(--shadow)}.adm-num{font-size:26px;font-weight:800;letter-spacing:-.02em}.adm-label{color:var(--text-dim);font-size:12px;margin-top:2px}.adm-section{padding:20px 28px 0}.adm-section h2{font-size:15px;font-weight:700;margin-bottom:10px}.adm-two{display:grid;grid-template-columns:1fr 1fr;grid-gap:0 24px;gap:0 24px}@media (max-width:800px){.adm-two{grid-template-columns:1fr}}.adm-bars{display:flex;align-items:flex-end;gap:4px;height:140px;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:14px 14px 6px;overflow-x:auto}.adm-bar-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1 1;min-width:26px;height:100%}.adm-bar{width:70%;min-height:2px;background:var(--primary);border-radius:3px 3px 0 0}.adm-bar-col span{color:var(--text-dim);font-size:10px;margin-top:4px;white-space:nowrap}.adm-table{width:100%;border-collapse:collapse;background:var(--bg);border:1px solid var(--border);border-radius:12px;overflow:hidden;font-size:13px}.adm-table th{text-align:left;color:var(--text-dim);font-weight:600;font-size:12px;padding:8px 12px;background:var(--bg-section)}.adm-table td,.adm-table th{border-bottom:1px solid var(--border)}.adm-table td{padding:7px 12px}.adm-table tr:last-child td{border-bottom:none}.adm-count{text-align:right;color:var(--text-sub);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.adm-time{color:var(--text-dim);white-space:nowrap}.adm-path{color:var(--text-sub);word-break:break-all}.adm-path a{color:var(--primary)}.adm-click{cursor:pointer}.adm-click:hover td{background:var(--primary-light)}main:has(.adm-section){padding-bottom:56px}.anno-bubble-meta{display:block;margin-top:4px;font-size:10px;opacity:.65}.resolved-toggle{flex-shrink:0;font-size:11.5px;font-weight:600;color:var(--text-dim);background:none;border:1px solid var(--border);border-radius:999px;padding:3px 10px;cursor:pointer}.resolved-toggle:hover{color:var(--text);border-color:var(--text-dim)}.resolved-toggle.on{color:var(--green);border-color:var(--green);background:var(--green-light)}.comment-item.resolved{opacity:.55}.comment-item.resolved .comment-text{text-decoration:line-through}.comment-resolved{font-size:10.5px;font-weight:600;color:var(--green);background:var(--green-light);border-radius:999px;padding:1px 7px;margin-left:6px;text-decoration:none}a.comment-resolved:hover{text-decoration:underline}.scenario-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}.scenario-chip{gap:2px;background:var(--primary-light);border:1px solid var(--primary);border-radius:999px;padding:3px 6px 3px 12px;font-size:12.5px;color:var(--primary)}.scenario-chip,.scenario-chip button{display:inline-flex;align-items:center}.scenario-chip button{gap:5px;background:none;border:none;color:inherit;font-size:inherit;font-weight:600;padding:2px}.scenario-chip button:disabled{opacity:.5;cursor:default}.scenario-del{font-size:11px;opacity:.6}.scenario-del:hover{opacity:1;color:var(--red)}.add-list{max-height:55vh;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.add-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px}.add-row:hover{background:var(--bg-section)}.add-info{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:1px}.add-info b{font-size:13.5px}.muted-sm{color:var(--text-dim);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.color-dots{display:inline-flex;gap:5px;align-items:center;padding:0 6px}.color-dot{width:16px;height:16px;border-radius:50%;border:2px solid transparent;padding:0;box-shadow:0 0 0 1px var(--border)}.color-dot.on{border-color:#fff;box-shadow:0 0 0 2px var(--text)}.scenario-help{color:var(--text-sub);font-size:12.5px;line-height:1.6;margin-bottom:14px}.scenario-help code{background:var(--gray-badge);border-radius:4px;padding:1px 5px;font-size:11.5px}.scenario-error{color:var(--red);font-size:12.5px;margin-bottom:10px}.scenario-step-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.scenario-step-row input{flex:1 1}.scenario-step-no{width:20px;height:20px;border-radius:50%;flex-shrink:0;background:var(--primary-light);color:var(--primary);font-size:11px;font-weight:700;align-items:center}.anno-viewport,.scenario-step-no{display:flex;justify-content:center}.anno-viewport{position:relative;overflow:hidden}.anno-wrap{display:inline-block}.anno-wrap img{width:auto;max-width:100%;max-height:calc(100vh - 330px)}.anno-wrap.panning{cursor:-webkit-grab!important;cursor:grab!important}.anno-wrap.panning:active{cursor:-webkit-grabbing!important;cursor:grabbing!important}.anno-zoom{position:absolute;top:8px;right:8px;z-index:7;display:flex;align-items:center;gap:2px;background:hsla(0,0%,100%,.92);border:1px solid var(--border);border-radius:8px;padding:2px 4px;font-size:11px;color:var(--text-sub);box-shadow:var(--shadow)}.anno-zoom span{min-width:34px;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.anno-zoom button{background:none;border:none;color:var(--text-sub);width:22px;height:20px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-size:12px}.anno-zoom button:hover{background:var(--bg-section)}.anno-zoom button.on{background:var(--primary-light);color:var(--primary)}.marker-canvas{position:relative;cursor:crosshair;-webkit-user-select:none;-moz-user-select:none;user-select:none}.marker-canvas img{width:100%;display:block;border:1px solid var(--border);border-radius:10px}.marker-pin{position:absolute;transform:translate(-50%,-50%);width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:var(--shadow-hover);cursor:pointer}.marker-pin:hover{background:var(--red)}.link-btn{background:none;border:none;color:var(--primary);font-size:12.5px;text-decoration:underline;padding:0}.screen-body{display:flex;gap:12px;align-items:flex-start;min-width:0}.screen-body .anno-viewport{flex:1 1;min-width:0}.anno-wrap img,.img-rail{max-height:calc(100vh - 230px)}.img-rail{width:104px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;overflow-y:auto;padding-bottom:4px}.img-rail .img-add,.img-rail .img-chip{width:100%;flex-shrink:0}.img-rail .img-add{aspect-ratio:16/10;display:flex;align-items:center;justify-content:center}.img-rail .img-chip{position:relative}.img-rail .img-chip.drop-after:after,.img-rail .img-chip.drop-before:before{content:"";position:absolute;left:0;right:0;height:3px;background:var(--primary);border-radius:2px;z-index:3}.img-rail .img-chip.drop-before:before{top:-6px}.img-rail .img-chip.drop-after:after{bottom:-6px}.scenario-layout{display:flex;gap:20px;align-items:flex-start}.scenario-layout .marker-canvas{flex:1 1;min-width:0}.scenario-right{width:320px;flex-shrink:0;display:flex;flex-direction:column}.scenario-right .modal-actions{margin-top:auto;padding-top:8px}@media (max-width:900px){.scenario-layout{flex-direction:column}.scenario-right{width:100%}}.btn.ghost.on{color:var(--primary);border-color:var(--primary);background:var(--primary-light)}.vh-panel{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:10px;animation:vhIn .25s ease-out}@keyframes vhIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.vh-head{display:flex;gap:8px}.vh-head,.vh-nav{align-items:center}.vh-nav{flex:0 0 auto;width:34px;height:34px;border:1px solid var(--border);border-radius:50%;background:var(--bg);color:var(--text);display:inline-flex;justify-content:center;cursor:pointer;transition:background .15s,transform .15s,opacity .15s}.vh-nav:hover:not(:disabled){background:var(--bg-section);transform:scale(1.08)}.vh-nav:active:not(:disabled){transform:scale(.94)}.vh-nav:disabled{opacity:.3;cursor:default}.vh-dots{flex:1 1;min-width:0;display:flex;gap:6px;overflow-x:auto;padding:4px 2px}.vh-dot,.vh-dots{align-items:center}.vh-dot{flex:0 0 auto;height:22px;min-width:22px;padding:0 6px;border-radius:999px;border:1.5px solid var(--border);background:var(--bg);color:var(--text-dim);font-size:12px;font-weight:700;cursor:pointer;display:inline-flex;justify-content:center;transition:background .25s,color .25s,border-color .25s,min-width .3s cubic-bezier(.34,1.4,.64,1),transform .2s}.vh-dot:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}.vh-dot.past{background:var(--primary-light);border-color:var(--primary-light);color:var(--primary)}.vh-dot.on{min-width:44px;background:var(--primary);border-color:var(--primary);color:#fff}.vh-counter{flex:0 0 auto;font-size:12.5px;white-space:nowrap}.vh-cap{display:flex;align-items:center;gap:8px;font-size:13.5px;min-height:24px;flex-wrap:wrap}.vh-cap b{font-size:15px}.vh-cap-tag{font-size:12px;padding:1px 8px;border-radius:999px;background:var(--primary-light);color:var(--primary);font-weight:600}.vh-cap code{font-size:12px;background:var(--bg-section);padding:1px 5px;border-radius:4px}.vh-cap-latest{color:var(--primary)}.vh-cap-done,.vh-cap-latest{font-size:12px;font-weight:700}.vh-cap-done{color:#16a34a}.vh-viewport{position:relative;overflow:hidden;cursor:-webkit-grab;cursor:grab;touch-action:pan-y;border-radius:12px}.vh-viewport.dragging{cursor:-webkit-grabbing;cursor:grabbing}.vh-track{display:flex;will-change:transform;transition:transform .45s cubic-bezier(.22,.61,.36,1)}.vh-viewport.dragging .vh-track{transition:none}.vh-slide{flex:0 0 100%;min-width:0;box-sizing:border-box;padding:0 2px;opacity:.5;transition:opacity .4s}.vh-slide.on{opacity:1}.vh-slide img{width:100%;display:block;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:border-color .3s,box-shadow .3s}.vh-slide.on img{border-color:var(--primary);box-shadow:0 6px 20px rgba(51,102,255,.18)}.vh-resolved{font-size:13.5px;display:flex;flex-direction:column;gap:6px;animation:vhFade .3s ease-out}@keyframes vhFade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.vh-resolved ul{margin:0;padding:0;list-style:none;gap:6px}.vh-resolved li,.vh-resolved ul{display:flex;flex-direction:column}.vh-resolved li{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:8px 11px;gap:3px;animation:vhFade .35s ease-out both}.vh-c-text{font-size:13.5px}.vh-resolved a{color:var(--primary)}@media (prefers-reduced-motion:reduce){.vh-panel,.vh-resolved,.vh-resolved li{animation:none}.vh-dot,.vh-nav,.vh-slide,.vh-track{transition:none}}