:root{--navy:#1e3045;--blue:#1976d2;--bg:#f4f7fa;--danger:#b42318}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:#17212b;font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif}
header{background:var(--navy);padding:15px max(20px,calc((100% - 1120px)/2));display:flex;justify-content:space-between;gap:20px}
header a{color:#fff;text-decoration:none}
.brand{font-size:20px;font-weight:800}
nav{display:flex;gap:18px;flex-wrap:wrap}
main{max-width:1120px;margin:28px auto;padding:0 20px}
.narrow{max-width:620px}
.card{background:#fff;border-radius:14px;padding:22px;margin:18px 0;box-shadow:0 4px 20px #1e304512}
label{display:block;font-weight:650;margin:14px 0}
input,textarea,select{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid #c8d1da;border-radius:8px;background:#fff;color:inherit;font:inherit}
textarea{min-height:82px}
.check{display:flex;gap:8px;align-items:center}
.check input{width:auto;margin:0}
button,.button{display:inline-block;background:var(--blue);color:#fff;border:0;border-radius:8px;padding:11px 18px;font-weight:700;text-decoration:none;cursor:pointer}
.secondary{background:#e8f0f8;color:var(--navy)}
.danger{background:var(--danger)}
.small{padding:7px 10px;font-size:14px}
.inline{display:inline}
.notice{padding:12px;border-radius:8px;background:#e8f0f8}
.success{background:#e7f6ec}
.error{background:#feeceb;color:#912018}
.muted{color:#65727f}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}
.stat{background:#fff;border-radius:14px;padding:20px}
.stat strong{display:block;font-size:30px}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:11px;border-bottom:1px solid #e5e9ed}
code{background:#eef3f7;padding:3px 6px;border-radius:5px}
footer{text-align:center;color:#7a8793;padding:30px}
summary{font-size:20px;font-weight:800;cursor:pointer}
.legacy{border:1px solid #e5e9ed;border-radius:10px;padding:14px;margin:16px 0}
.legacy summary{font-size:16px}
.builder-head,.builder-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px}
.builder-head h2{margin:0}
.eyebrow{color:var(--blue);font-weight:800;margin:0 0 5px}
.builder-toolbar>label{min-width:220px;margin:0}
.toolbar-actions{display:flex;align-items:end;gap:10px;flex-wrap:wrap}
.toolbar-actions select{width:auto;margin:0}
.flow-nodes{display:grid;gap:16px;margin-bottom:95px}
.flow-node{background:#fff;border:2px solid #dce5ed;border-radius:14px;box-shadow:0 4px 16px #1e30450c;overflow:hidden}
.flow-node:focus-within{border-color:#79afe1}
.node-title{display:grid;grid-template-columns:auto auto minmax(180px,1fr) minmax(170px,.6fr) auto;gap:10px;align-items:end;padding:15px 18px;background:#f7fafc}
.node-title label{margin:0}
.node-number{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--navy);color:#fff;font-weight:800;margin-bottom:6px}
.drag{font-size:22px;color:#7a8793;cursor:grab;margin-bottom:8px}
.node-body{padding:8px 20px 20px}
.icon{padding:7px 12px;font-size:20px;margin-bottom:2px}
.buttons{border:1px dashed #b8c7d5;border-radius:10px;padding:12px;margin:14px 0}
.button-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin:8px 0}
.button-row input,.button-row select{margin:0}
.sticky-save{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);width:min(1080px,calc(100% - 40px));background:var(--navy);color:#fff;padding:13px 18px;border-radius:14px;box-shadow:0 8px 30px #0004;display:flex;align-items:center;justify-content:space-between;z-index:5}
.sticky-save button{background:#fff;color:var(--navy)}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}
.media-card{border:1px solid #dce5ed;border-radius:12px;overflow:hidden;background:#f9fbfd}
.media-card img,.media-card video{display:block;width:100%;height:190px;object-fit:contain;background:#111}
.media-card>div{padding:14px}
.media-card form{margin-top:12px}
.media-url{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:8px 0 12px}
.builder-head>div:last-child{white-space:nowrap}
@media(max-width:700px){header,.builder-head,.builder-toolbar{flex-direction:column;align-items:stretch}
.grid2,.stats{grid-template-columns:1fr 1fr}
.toolbar-actions{align-items:stretch}
.toolbar-actions select{width:100%}
.node-title{grid-template-columns:auto auto 1fr}
.node-title label{grid-column:3/-1}
.node-title .remove{grid-column:3/-1}
.button-row{grid-template-columns:1fr}
.sticky-save{font-size:13px}
.builder-head>div:last-child{white-space:normal}
}
@media(max-width:440px){.grid2,.stats{grid-template-columns:1fr}
}
.builder-toolbar.compact{padding:14px 22px}
.toolbar-actions label{margin:0}
.flow-node.has-error{border-color:#d92d20;box-shadow:0 0 0 3px #fee4e2}
.flow-node.has-error .node-title{background:#fff1f0}
.input-action{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}
.input-action input{margin:6px 0 0}
.input-action button{white-space:nowrap}
dialog{width:min(1040px,calc(100% - 32px));max-height:88vh;border:0;border-radius:16px;padding:24px;box-shadow:0 24px 80px #0005}
dialog::backdrop{background:#14263a99}
.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:20px}
.dialog-head h2{margin:0}
.content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:16px}
.content-card{display:grid;grid-template-columns:110px 1fr;gap:12px;border:1px solid #dce5ed;border-radius:12px;padding:10px;background:#fff}
.content-thumb{height:110px;border-radius:8px;background:#eef3f7;display:grid;place-items:center;overflow:hidden;color:#65727f}
.content-thumb img{width:100%;height:100%;object-fit:cover}
.content-card small,.content-card code{display:block}
.content-card p{min-height:48px;margin:8px 0;color:#465463}
.content-card code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.content-actions{display:flex;gap:6px;align-items:center;margin-top:10px}
.content-actions button{padding:7px 10px;font-size:14px}
@media(max-width:700px){.sticky-save{gap:8px}.sticky-save>div{display:flex;gap:5px}.sticky-save button{padding:8px 10px}.input-action{grid-template-columns:1fr}.content-card{grid-template-columns:88px 1fr}.content-thumb{height:88px}}
