:root{--bg:#ede4d3;--bg-soft:#e4d9c4;--bg-cream:#f3ebd9;--ink:#2d2820;--ink-soft:#4f4439;--ink-mute:#7b6c5d;--green:#3d4838;--green-deep:#2e3729;--green-soft:#5b6a55;--gold:#b8985a;--gold-deep:#8a6f3c;--gold-soft:#d4b87e;--gold-tint:#efe2c4;--line:#ddd1b8;--line-soft:#e8dfc7;--card:#f7f1e4;--shadow:0 10px 40px rgba(60,40,20,0.08);--shadow-soft:0 4px 18px rgba(60,40,20,0.06);--radius:14px;--serif:"PingFang SC","Songti SC","Noto Serif SC",serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;line-height:1.6}a{color:inherit;text-decoration:none}.app-header{display:flex;align-items:center;gap:18px;padding:14px 28px;background:linear-gradient(180deg,rgba(46,55,41,.96),rgba(46,55,41,.88));color:var(--bg-cream);position:-webkit-sticky;position:sticky;top:0;z-index:50;box-shadow:var(--shadow-soft)}.brand{display:flex;align-items:baseline;gap:12px}.brand .logo{font-size:24px;letter-spacing:6px;color:var(--gold-soft);font-weight:600}.brand .sub{font-size:12px;letter-spacing:2px;color:rgba(246,234,209,.66)}.header-spacer{flex:1 1}.adapter-chips{display:flex;gap:8px;flex-wrap:wrap}.adapter-chip{font-size:11px;letter-spacing:.5px;padding:3px 10px;border-radius:999px;border:1px solid rgba(212,184,126,.35);color:rgba(246,234,209,.8);display:inline-flex;align-items:center;gap:6px}.adapter-chip .dot{width:6px;height:6px;border-radius:999px;background:#7b6c5d}.adapter-chip.on .dot{background:var(--gold-soft);box-shadow:0 0 6px var(--gold-soft)}.layout{display:grid;grid-template-columns:340px 1fr;grid-gap:24px;gap:24px;max-width:1280px;margin:0 auto;padding:26px 28px 80px}@media (max-width:900px){.layout{grid-template-columns:1fr}}.panel{background:var(--bg-cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:18px}.panel h2{margin:2px 0 14px;font-size:15px;letter-spacing:1px;color:var(--green-deep);display:flex;align-items:center;gap:8px}.panel h2:before{content:"";width:16px;height:2px;background:var(--gold)}.config-list{display:flex;flex-direction:column;gap:10px;max-height:56vh;overflow:auto;padding-right:4px}.config-item{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:all .15s ease;font-family:var(--serif);color:var(--ink)}.config-item:hover{border-color:var(--gold-soft);transform:translateY(-1px)}.config-item.active{border-color:var(--gold);background:var(--gold-tint);box-shadow:var(--shadow-soft)}.config-item .name{font-size:14px;font-weight:600;color:var(--green-deep)}.config-item .desc{font-size:12px;color:var(--ink-mute);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.config-item .meta{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.tag{font-size:10.5px;letter-spacing:.3px;padding:2px 8px;border-radius:999px;background:rgba(61,72,56,.1);color:var(--green)}.tag.gold{background:rgba(184,152,90,.16);color:var(--gold-deep)}.controls{display:flex;gap:12px;margin-top:16px;flex-wrap:wrap}.controls,.switch{align-items:center}.switch{display:inline-flex;gap:8px;font-size:13px;color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:38px;height:22px;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background .15s}.switch input:after{content:"";position:absolute;width:18px;height:18px;border-radius:999px;background:#fff;top:2px;left:2px;transition:left .15s}.switch input:checked{background:var(--green)}.switch input:checked:after{left:18px}.btn{font-family:var(--serif);font-size:14px;letter-spacing:2px;border:none;border-radius:999px;padding:11px 26px;cursor:pointer;transition:all .15s ease}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--green-deep);color:var(--bg-cream)}.btn-primary:not(:disabled):hover{background:var(--green);box-shadow:var(--shadow-soft)}.btn-danger{background:#fff;color:#9b3b32;border:1px solid #e0c3bd}.btn-danger:not(:disabled):hover{background:#fbeeec}.stage{background:var(--bg-cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft);min-height:60vh;padding:22px 24px}.stage-head{display:flex;align-items:center;gap:14px;padding-bottom:16px;border-bottom:1px solid var(--line-soft);margin-bottom:18px;flex-wrap:wrap}.stage-title{font-size:17px;color:var(--green-deep);font-weight:600;letter-spacing:1px}.run-badge{font-size:12px;padding:4px 12px;border-radius:999px;letter-spacing:1px}.run-badge.running{background:rgba(184,152,90,.16);color:var(--gold-deep)}.run-badge.completed{background:rgba(61,72,56,.12);color:var(--green)}.run-badge.stopped{background:#f3e3df;color:#9b3b32}.empty{text-align:center;color:var(--ink-mute);padding:80px 20px}.empty .big{font-size:40px;letter-spacing:10px;color:var(--gold-soft);margin-bottom:14px}.shot{border:1px solid var(--line);border-radius:12px;margin-bottom:18px;overflow:hidden;background:var(--card)}.shot-head{display:flex;align-items:center;gap:10px;padding:12px 16px;background:rgba(61,72,56,.06);border-bottom:1px solid var(--line-soft)}.shot-idx{width:26px;height:26px;border-radius:999px;background:var(--green-deep);color:var(--bg-cream);display:grid;place-items:center;font-size:13px}.shot-title{font-weight:600;color:var(--green-deep);font-size:14px}.shot-workflow{font-size:11px;color:var(--ink-mute)}.nodes{position:relative;padding:8px 16px 14px}.node{display:grid;grid-template-columns:26px 1fr;grid-gap:12px;gap:12px;padding:10px 0}.node-rail{display:flex;flex-direction:column;align-items:center}.node-dot{width:14px;height:14px;border-radius:999px;border:2px solid var(--line);background:#fff;margin-top:3px;flex:none}.node-dot.running{border-color:var(--gold);background:var(--gold-soft);animation:pulse 1.1s ease-in-out infinite}.node-dot.done{border-color:var(--gold-deep);background:var(--gold)}.node-dot.failed{border-color:#9b3b32;background:#c0584d}.node-line{width:2px;flex:1 1;background:var(--line-soft);margin-top:4px}@keyframes pulse{0%,to{box-shadow:0 0 0 0 rgba(184,152,90,.5)}50%{box-shadow:0 0 0 6px rgba(184,152,90,0)}}.node-body{min-width:0}.node-titlerow{display:flex;align-items:center;gap:10px}.node-name{font-size:13.5px;font-weight:600;color:var(--ink)}.node-status{font-size:11px;color:var(--ink-mute);letter-spacing:.5px}.node-status.running{color:var(--gold-deep)}.node-status.failed{color:#9b3b32}.prompt-box{margin-top:8px;background:#fffdf8;border:1px solid var(--line-soft);border-radius:8px;padding:10px 12px;font-size:12.5px;color:var(--ink-soft);white-space:pre-wrap;max-height:160px;overflow:auto;line-height:1.7}.img-row{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap}.thumb,.thumb img{width:116px}.thumb img{height:116px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#fff}.thumb .cap{font-size:10.5px;color:var(--ink-mute);margin-top:3px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.candidate img{border-color:var(--gold-soft);box-shadow:var(--shadow-soft)}.review{margin-top:8px;border:1px solid var(--line-soft);border-radius:8px;padding:10px 12px;background:#fffdf8}.decision{display:inline-block;font-size:11px;padding:2px 10px;border-radius:999px;letter-spacing:1px}.decision.keep{background:rgba(61,72,56,.14);color:var(--green)}.decision.repair{background:rgba(184,152,90,.18);color:var(--gold-deep)}.decision.reject{background:#f3e3df;color:#9b3b32}.decision.pending{background:rgba(123,108,93,.14);color:var(--ink-mute)}.criteria{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.criterion{font-size:10.5px;padding:2px 8px;border-radius:6px;background:rgba(61,72,56,.07);color:var(--ink-soft)}.criterion.gate{background:rgba(184,152,90,.14);color:var(--gold-deep)}.cost{font-size:11px;color:var(--ink-mute)}.cost,.err{margin-top:6px}.err{font-size:12px;color:#9b3b32;white-space:pre-wrap}.loading-line{color:var(--ink-mute);font-size:13px;padding:12px 0}.tabs{display:flex;gap:4px;margin-left:14px}.tab{font-family:var(--serif);font-size:13px;letter-spacing:1px;padding:6px 16px;border-radius:999px;border:none;cursor:pointer;background:transparent;color:rgba(246,234,209,.7);transition:all .15s}.tab.active,.tab:hover{color:var(--gold-soft)}.tab.active{background:rgba(212,184,126,.22)}.subname{font-size:10.5px;color:var(--ink-mute);margin-top:2px;font-family:ui-monospace,SF Mono,monospace}.history-page{max-width:1280px;margin:0 auto}.history-wrap{padding:26px 28px 80px}.history-h{font-size:15px;letter-spacing:1px;color:var(--green-deep);margin:4px 0 18px}.history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:14px;gap:14px}@media (max-width:640px){.history-grid{grid-template-columns:1fr}}.history-card{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;transition:all .15s;font-family:var(--serif)}.history-card:hover{border-color:var(--gold);transform:translateY(-1px);box-shadow:var(--shadow-soft)}.hc-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--green-deep);line-height:1.5}.hc-title-input,.hc-title-text{flex:1 1;min-width:0}.hc-title-input{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--gold);border-radius:6px;padding:4px 8px}.hc-edit{flex-shrink:0;font-size:13px;line-height:1;color:var(--ink-soft);background:transparent;border:none;padding:2px 6px;cursor:pointer;opacity:.5}.hc-edit:hover{opacity:1;color:var(--green-deep)}.hc-edit-actions{display:flex;gap:6px;flex-shrink:0}.hc-meta{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}.hc-time{font-size:11px;color:var(--ink-mute);margin-left:auto}.btn-ghost{font-family:var(--serif);font-size:13px;border:1px solid var(--line);background:#fff;color:var(--ink-soft);border-radius:999px;padding:6px 14px;cursor:pointer}.btn-ghost:hover{border-color:var(--gold-soft)}.tab:disabled{opacity:.5;cursor:not-allowed}.tab:disabled:hover{color:rgba(246,234,209,.5)}.empty-hint{font-size:12.5px;color:var(--ink-mute);padding:14px 4px;line-height:1.7}.flow-desc{font-size:13px;color:var(--ink-soft);line-height:1.8;background:#fffdf8;border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px;margin-bottom:18px}.flow-meta-edit{font-size:12px;color:var(--green-deep);background:transparent;border:1px solid var(--line-soft);border-radius:999px;padding:3px 10px;cursor:pointer}.flow-meta-edit:hover,.flow-meta-editor{background:#fffdf8}.flow-meta-editor{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px;margin-bottom:18px}.flow-meta-desc,.flow-meta-name{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line-soft);border-radius:8px;padding:8px 10px}.flow-meta-name{font-size:15px;font-weight:600}.flow-meta-desc{font-size:13px;line-height:1.7;resize:vertical}.flow-meta-actions{display:flex;gap:8px}.flow-inputs{gap:20px}.flow-inputs,.slot{display:flex;flex-direction:column}.slot{gap:8px}.slot-label{font-size:13.5px;font-weight:600;color:var(--green-deep);display:flex;align-items:center;gap:8px}.slot-req{background:rgba(184,152,90,.16);color:var(--gold-deep)}.slot-req,.slot-role{font-size:10px;letter-spacing:.5px;padding:1px 7px;border-radius:999px}.slot-role{background:rgba(61,72,56,.1);color:var(--green);font-family:ui-monospace,SF Mono,monospace}.slot-textarea{font-family:var(--serif);font-size:13px;color:var(--ink);background:#fffdf8;border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:84px;resize:vertical;line-height:1.7}.slot-input:focus,.slot-textarea:focus{outline:none;border-color:var(--gold-soft)}.slot-input{font-family:var(--serif);font-size:13px;color:var(--ink);background:#fffdf8;border:1px solid var(--line);border-radius:10px;padding:9px 12px}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));grid-gap:12px;gap:12px;max-height:280px;overflow:auto;padding:2px}.pick-grid.person-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}.pack-card{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:6px;cursor:pointer;transition:all .15s ease;font-family:var(--serif)}.pack-card:hover{border-color:var(--gold-soft);transform:translateY(-1px)}.pack-card.active{border-color:var(--gold);background:var(--gold-tint);box-shadow:var(--shadow-soft)}.pack-card img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:7px;border:1px solid var(--line);background:#fff;display:block}.pack-name{font-size:12px;font-weight:600;color:var(--green-deep);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pack-group{font-size:10.5px;color:var(--ink-mute)}.pick-thumb{position:relative;padding:0;border:2px solid transparent;border-radius:9px;cursor:pointer;background:none;transition:all .15s ease;overflow:hidden}.pick-thumb img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:7px;border:1px solid var(--line);background:#fff;display:block}.pick-thumb:hover{transform:translateY(-1px)}.pick-thumb.active{border-color:var(--gold);box-shadow:var(--shadow-soft)}.pick-cap{display:block;font-size:10px;color:var(--ink-mute);text-align:center;padding:2px 0 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-controls{margin-top:22px;padding-top:18px;border-top:1px solid var(--line-soft)}.hint-line{font-size:12px;color:var(--ink-mute)}.run-block{margin-top:22px;padding-top:18px;border-top:1px solid var(--line-soft)}.flow-timeline .nodes{padding:4px 0 8px}.step-seq{width:22px;height:22px;border-radius:999px;background:var(--green-deep);color:var(--bg-cream);display:grid;place-items:center;font-size:12px;flex:none}.step-kind{font-size:10.5px;letter-spacing:.3px;padding:1px 8px;border-radius:999px;background:rgba(61,72,56,.1);color:var(--green)}.step-meta{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}.step-running{color:var(--gold-deep)}.prompt-box.clamp{max-height:84px}.step-prompt{margin-top:8px}.prompt-toggle{margin-top:4px;font-family:var(--serif);font-size:11.5px;color:var(--gold-deep);background:none;border:none;cursor:pointer;padding:0}.prompt-toggle:hover{text-decoration:underline}.step-textout{margin-top:8px;border:1px solid var(--gold-soft);border-radius:8px;padding:12px 14px;font-size:13px;line-height:1.8}.step-textin,.step-textout{background:#fffdf8;color:var(--ink-soft);white-space:pre-wrap}.step-textin{border:1px solid var(--line-soft);border-radius:8px;padding:8px 10px;font-size:12px;max-width:320px}.step-textin-body{margin-top:3px;max-height:88px;overflow:auto;line-height:1.6}.thumb-empty{width:116px;height:116px;border-radius:8px;border:1px dashed var(--line);background:#fff}.out-row .thumb.step-out{width:220px}.out-row .thumb.step-out img{width:220px;height:220px;border-color:var(--gold-soft);box-shadow:var(--shadow-soft)}.flow-summary{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--green-deep);background:rgba(61,72,56,.08);border-radius:999px;padding:6px 14px;width:-moz-fit-content;width:fit-content}.kind-badge{font-size:10px;letter-spacing:.5px;padding:1px 7px;border-radius:999px;margin-right:6px;vertical-align:middle}.kind-badge.flow{background:rgba(184,152,90,.18);color:var(--gold-deep)}.kind-badge.config{background:rgba(61,72,56,.1);color:var(--green)}.run-badge.failed{background:#f3e3df;color:#9b3b32}.person-card{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:6px;cursor:pointer;transition:all .15s ease;font-family:var(--serif)}.person-card:hover{border-color:var(--gold-soft);transform:translateY(-1px)}.person-card.active{border-color:var(--gold);background:var(--gold-tint);box-shadow:var(--shadow-soft)}.person-card.same-role{box-shadow:inset 0 0 0 1px var(--gold-soft)}.person-card img{object-fit:cover;border-radius:7px;border:1px solid var(--line);display:block}.person-card img,.person-noimg{width:100%;aspect-ratio:1/1;background:#fff}.person-noimg{border-radius:7px;border:1px dashed var(--line);display:grid;place-items:center;font-size:11px;color:var(--ink-mute)}.person-name{font-size:12px;font-weight:600;color:var(--green-deep);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-role{font-size:10.5px;color:var(--ink-mute)}.library-page{max-width:1280px;margin:0 auto;padding:26px 28px 80px}.lib-head{align-items:center;gap:18px;margin-bottom:18px}.lib-head,.lib-tabs{display:flex;flex-wrap:wrap}.lib-tabs{gap:6px}.lib-tab{font-family:var(--serif);font-size:13px;letter-spacing:1px;padding:6px 16px;border-radius:999px;border:1px solid var(--line);cursor:pointer;background:var(--card);color:var(--ink-soft);transition:all .15s}.lib-tab:hover{border-color:var(--gold-soft)}.lib-tab.active{background:var(--green-deep);border-color:var(--green-deep);color:var(--bg-cream)}.lib-body{background:var(--bg-cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft);min-height:50vh;padding:20px 22px}.lib-toolbar{display:flex;gap:10px;margin-bottom:16px}.btn-sm{padding:8px 18px;font-size:13px;letter-spacing:1px}.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:14px;gap:14px}.lib-card{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px;cursor:pointer;transition:all .15s ease;font-family:var(--serif);color:var(--ink)}.lib-card:hover{border-color:var(--gold);transform:translateY(-1px);box-shadow:var(--shadow-soft)}.lib-card.static{cursor:default}.lib-card.static:hover{transform:none;border-color:var(--line);box-shadow:none}.lib-card-img{position:relative;width:100%;aspect-ratio:1/1;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#fff}.lib-card-img.tall{aspect-ratio:3/4}.lib-card-img img{width:100%;height:100%;object-fit:cover;display:block}.lib-noimg{width:100%;height:100%;display:grid;place-items:center;font-size:12px;color:var(--ink-mute)}.lib-card-body{padding:8px 4px 2px}.lib-card-title{font-size:13px;font-weight:600;color:var(--green-deep);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.lib-card-sub{font-size:11px;color:var(--ink-mute);margin-top:3px}.role-badge{font-size:10px;padding:1px 7px;background:rgba(61,72,56,.1);color:var(--green)}.role-badge.groom{background:rgba(61,72,56,.14);color:var(--green-deep)}.role-badge.bride{background:rgba(184,152,90,.18);color:var(--gold-deep)}.lib-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.lib-tag{font-size:10px;padding:1px 7px;border-radius:999px;background:rgba(61,72,56,.08);color:var(--ink-soft)}.lib-prompt-preview{font-size:11px;color:var(--ink-soft);margin-top:6px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lib-prompt-preview.empty{color:var(--ink-mute);font-style:italic}.lib-upload-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fffdf8;border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px;margin-bottom:14px}.lib-upload-label{font-size:13px;font-weight:600;color:var(--green-deep)}.lib-upload-bar input[type=file],.lib-upload-bar select{font-family:var(--serif);font-size:12.5px}.lib-asset-group{margin-top:14px}.lib-group-title{font-size:12.5px;font-weight:600;color:var(--green-deep);margin-bottom:8px;letter-spacing:.5px}.modal-backdrop{position:fixed;inset:0;background:rgba(45,40,32,.45);display:grid;place-items:center;z-index:100;padding:20px}.modal-card{background:var(--bg-cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px;width:100%;max-width:420px}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal-title{font-size:15px;font-weight:600;color:var(--green-deep);letter-spacing:1px}.modal-x{border:none;background:none;font-size:22px;line-height:1;color:var(--ink-mute);cursor:pointer;padding:0 4px}.modal-x:hover{color:var(--ink)}.modal-field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.modal-field>span{font-size:12.5px;font-weight:600;color:var(--ink-soft)}.modal-field select.slot-input{cursor:pointer}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.lib-card-wrap{position:relative}.lib-card-actions{position:absolute;top:6px;right:6px;z-index:2;display:flex;gap:6px}.lib-card-del,.lib-card-edit{border:1px solid var(--line);background:rgba(247,241,228,.92);color:var(--ink-soft);width:24px;height:24px;border-radius:999px;font-size:15px;line-height:1;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-soft);transition:all .15s;padding:0}.lib-card-wrap>.lib-card-del{position:absolute;top:6px;right:6px;z-index:2}.lib-card-edit:hover{border-color:var(--gold-soft);color:var(--gold-deep)}.lib-card-del:hover{background:#fbeeec}.btn-ghost-danger,.lib-card-del:hover{border-color:#e0c3bd;color:#9b3b32}.btn-ghost-danger:hover{border-color:#d8a9a1;background:#fbeeec}.asset-tag-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:14px;gap:14px}.asset-tag-card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px}.asset-tag-img{width:100%;aspect-ratio:1/1;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#fff}.asset-tag-img img{width:100%;height:100%;object-fit:cover;display:block}.asset-tag-row{display:flex;align-items:center;gap:6px;margin-top:8px}.asset-tag-select{flex:1 1;cursor:pointer;padding:6px 8px;font-size:12.5px;min-width:0}.asset-tag-del{flex:none;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink-mute);font-size:16px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:all .15s}.asset-tag-del:hover{border-color:#e0c3bd;color:#9b3b32;background:#fbeeec}.asset-tag-del:disabled{opacity:.45;cursor:not-allowed}.asset-tag-feedback{min-height:16px;margin-top:4px}.saved-tip{font-size:11.5px;color:var(--green);letter-spacing:.3px}.confirm-card{max-width:380px}.confirm-msg{font-size:13.5px;color:var(--ink-soft);line-height:1.8;margin-bottom:14px}@media (max-width:640px){.asset-tag-grid,.lib-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.library-page{padding:18px 14px 60px}}.compose-pack{margin-top:12px;background:#fffdf8;border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px}.compose-pack-empty{padding:4px 0}.compose-sub{margin-bottom:14px}.compose-sub:last-child{margin-bottom:0}.compose-sub-title{font-size:12.5px;font-weight:600;color:var(--green-deep);letter-spacing:.5px;margin-bottom:6px;display:flex;align-items:center;gap:8px}.compose-count{font-size:10.5px;font-weight:400;padding:1px 8px;border-radius:999px;background:rgba(184,152,90,.16);color:var(--gold-deep)}.compose-kind-group{margin-bottom:8px}.compose-kind-label{font-size:11px;color:var(--ink-mute);margin-bottom:4px}.check-thumb{position:relative;width:96px;padding:0;border:2px solid transparent;border-radius:9px;cursor:pointer;background:none;transition:all .15s ease;overflow:hidden}.check-thumb img{width:96px;height:96px;object-fit:cover;border-radius:7px;border:1px solid var(--line);background:#fff;display:block}.check-thumb:hover{transform:translateY(-1px)}.check-thumb.checked{border-color:var(--gold);box-shadow:var(--shadow-soft)}.check-thumb:disabled{cursor:not-allowed;opacity:.6}.check-mark{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:999px;display:grid;place-items:center;font-size:12px;color:var(--bg-cream);background:transparent;transition:background .15s}.check-thumb.checked .check-mark{background:var(--gold-deep)}.compose-add-btn{align-self:flex-start}.compose-element-picker{background:#fffdf8;border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px}.compose-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.compose-elements{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.compose-element-card{display:flex;gap:12px;background:#fffdf8;border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px}.compose-element-thumb{flex:none;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#fff}.compose-element-thumb img{width:100%;height:100%;object-fit:cover;display:block}.compose-element-body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:6px}.compose-element-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.compose-element-name{font-size:12.5px;font-weight:600;color:var(--green-deep);display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compose-element-prompt{min-height:52px}.compose-final-prompt{min-height:96px}.compose-done-tip{margin-top:18px;font-size:13px;color:var(--green-deep);background:rgba(61,72,56,.1);border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px;line-height:1.7}.lib-derived-sub{font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}@media (max-width:640px){.compose-element-card{flex-direction:column}.compose-element-thumb{width:100%;height:140px}}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,var(--bg),var(--bg-soft))}.login-card{width:100%;max-width:360px;background:var(--bg-cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:30px 28px 26px}.login-brand{justify-content:center;margin-bottom:6px}.login-brand .logo{color:var(--gold-deep)}.login-brand .sub{color:var(--ink-mute)}.login-title{text-align:center;font-size:13px;letter-spacing:1px;color:var(--ink-soft);margin-bottom:22px}.login-submit{width:100%;margin-top:8px}.user-box{display:flex;align-items:center;gap:10px;margin-left:16px}.user-name{font-size:13px;letter-spacing:.5px;color:var(--bg-cream)}.logout-btn{font-family:var(--serif);font-size:12px;letter-spacing:1px;padding:5px 14px;border-radius:999px;border:1px solid rgba(212,184,126,.4);background:transparent;color:rgba(246,234,209,.85);cursor:pointer;transition:all .15s}.logout-btn:hover{border-color:var(--gold-soft);color:var(--gold-soft)}.role-badge{font-size:11px;letter-spacing:.5px;padding:2px 9px;border-radius:999px;white-space:nowrap}.role-badge.admin{background:var(--gold-tint);color:var(--gold-deep);border:1px solid var(--gold-soft)}.role-badge.member{background:var(--line-soft);color:var(--ink-soft);border:1px solid var(--line)}.user-admin-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.user-admin-head .history-h{margin:0}.user-table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;font-family:var(--serif)}.user-table td,.user-table th{text-align:left;padding:11px 14px;font-size:13px;border-bottom:1px solid var(--line-soft)}.user-table th{font-size:12px;font-weight:600;color:var(--ink-soft);background:var(--gold-tint);letter-spacing:.5px}.user-table tbody tr:last-child td{border-bottom:none}.user-table td{color:var(--ink)}.user-time{font-size:12px;color:var(--ink-mute)}.user-ops-col{width:1%;white-space:nowrap}.user-ops{display:flex;gap:6px;white-space:nowrap}.self-badge{font-size:10px;margin-left:6px;padding:1px 6px;border-radius:999px;background:var(--gold-tint);color:var(--gold-deep);border:1px solid var(--gold-soft)}.btn-xs{font-size:12px;padding:4px 11px}.hc-operator{margin-top:6px}.hc-operator,.replay-operator{font-size:12px;color:var(--ink-mute)}.replay-operator{margin-left:auto}@media (max-width:640px){.user-table{display:block;overflow-x:auto;white-space:nowrap}.user-box{margin-left:8px}}.zoomable{cursor:zoom-in;display:contents}.zoom-badge{position:absolute;right:5px;bottom:5px;z-index:3;width:24px;height:24px;border-radius:999px;border:1px solid var(--line);background:rgba(247,241,228,.94);color:var(--ink-soft);font-size:12px;line-height:1;display:grid;place-items:center;cursor:zoom-in;padding:0;opacity:0;transform:scale(.85);transition:opacity .15s ease,transform .15s ease,border-color .15s ease;box-shadow:var(--shadow-soft)}.check-thumb:hover .zoom-badge,.lib-card-img:hover .zoom-badge,.lib-card:hover .zoom-badge,.pack-card:hover .zoom-badge,.person-card:hover .zoom-badge,.zoom-badge:focus-visible{opacity:1;transform:scale(1)}.zoom-badge:hover{border-color:var(--gold-soft);color:var(--gold-deep);background:#fffdf8}@media (hover:none){.zoom-badge{opacity:.85;transform:scale(1)}}.pack-img-wrap{position:relative;display:block;border-radius:7px;overflow:hidden}.lb-backdrop{position:fixed;inset:0;background:rgba(28,24,18,.78);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;display:flex;align-items:center;justify-content:center;padding:28px}.lb-close{position:fixed;top:16px;right:20px;z-index:201;width:40px;height:40px;border-radius:999px;border:1px solid rgba(212,184,126,.4);background:rgba(46,55,41,.7);color:var(--bg-cream);font-size:26px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:all .15s}.lb-close:hover{border-color:var(--gold-soft);color:var(--gold-soft);background:rgba(46,55,41,.92)}.lb-content{gap:20px;max-width:96vw;max-height:90vh}.lb-content,.lb-img-wrap{display:flex;align-items:center}.lb-img-wrap{justify-content:center;min-width:0}.lb-img{display:block;max-width:88vw;max-height:85vh;object-fit:contain;border-radius:10px;border:1px solid rgba(212,184,126,.3);background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.4)}.lb-info{flex:none;width:260px;max-height:85vh;overflow:auto;background:var(--bg-cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.lb-info-label{font-size:13.5px;font-weight:600;color:var(--green-deep);letter-spacing:.5px;margin-bottom:12px;line-height:1.5;word-break:break-all}.lb-info-list{margin:0}.lb-info-row{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-bottom:1px solid var(--line-soft)}.lb-info-row:last-child{border-bottom:none}.lb-info-row dt{font-size:11px;letter-spacing:.5px;color:var(--ink-mute)}.lb-info-row dd{margin:0;font-size:13px;color:var(--ink);font-family:ui-monospace,SF Mono,monospace}.lb-info-name,.lb-info-url{word-break:break-all}.lb-info-url{font-size:11px!important;color:var(--ink-mute)!important;line-height:1.5}@media (max-width:720px){.lb-content{flex-direction:column;gap:14px;max-height:92vh;overflow:auto}.lb-img{max-width:92vw;max-height:60vh}.lb-info{width:100%;max-width:92vw;max-height:none}}