:root{--bg:#f7f7f8;--bg-canvas:#ececee;--panel:#ffffff;--border:#e6e6e8;--border-strong:#d9d9dc;--field:#f2f2f4;--field-hover:#ebebee;--text:#1b1b1f;--text-2:#6f6f78;--text-3:#a5a5ad;--accent:#0d99ff;--accent-hover:#0b87e0;--accent-soft:#e8f4fd;--accent-border:#9ed2f7;--danger:#dc2626;--warn:#d97706;--radius:8px;--radius-s:6px;--shadow-pop:0 8px 24px rgba(0,0,0,0.12),0 2px 6px rgba(0,0,0,0.06)}*,:after,:before{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:system-ui,-apple-system,Hiragino Sans,sans-serif;font-size:12px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{background:none;border:none;padding:0;cursor:pointer}button,input,select,textarea{font:inherit;color:inherit}.app-loading{height:100vh;display:grid;place-items:center;color:var(--text-2)}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-main{flex:1 1;display:flex;min-height:0}.hdr{height:46px;flex:none;gap:12px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--border)}.hdr,.hdr-group{display:flex;align-items:center}.hdr-group{gap:8px}.hdr-center{flex:1 1;display:flex;justify-content:center}.site-name{width:130px;border:1px solid transparent;border-radius:var(--radius-s);padding:5px 8px;font-weight:600;background:transparent}.site-name:hover{background:var(--field)}.site-name:focus{outline:none;border-color:var(--accent)}.ftr,.site-name:focus{background:var(--panel)}.ftr{height:32px;flex:none;display:flex;align-items:center;gap:10px;padding:0 12px;border-top:1px solid var(--border);color:var(--text-2)}.ftr-spacer{flex:1 1}.btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--radius-s);border:1px solid var(--border-strong);background:var(--panel);font-weight:500;transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--field)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-sm{height:24px;padding:0 9px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;border-radius:var(--radius-s);color:var(--text-2);transition:background .12s ease,color .12s ease}.icon-btn:hover{background:var(--field);color:var(--text)}.icon-btn:disabled{opacity:.35;pointer-events:none}.icon-btn.is-on{color:var(--accent);background:var(--accent-soft)}.icon-btn.sm{width:22px;height:22px}.seg{padding:2px;background:var(--field);border-radius:var(--radius);gap:2px}.seg,.seg>button{display:inline-flex}.seg>button{align-items:center;justify-content:center;gap:5px;height:26px;padding:0 10px;border-radius:var(--radius-s);color:var(--text-2);font-weight:500;white-space:nowrap;transition:background .12s ease,color .12s ease}.seg>button:hover{color:var(--text)}.seg>button.is-on{background:var(--panel);color:var(--text);box-shadow:0 0 0 .5px rgba(0,0,0,.06),0 1px 3px rgba(0,0,0,.1)}.seg.seg-full{display:flex}.seg.seg-full>button{flex:1 1;padding:0 4px}.select{height:28px;padding:0 24px 0 10px;border:1px solid transparent;border-radius:var(--radius);background:var(--field) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5 5 6.5 8 3.5' fill='none' stroke='%236f6f78' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 8px center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;min-width:0}.select:hover{background-color:var(--field-hover)}.select:focus{outline:none;border-color:var(--accent)}.input{height:28px;width:100%;min-width:0;padding:0 10px;border:1px solid transparent;border-radius:var(--radius);background:var(--field)}.input:hover{background:var(--field-hover)}.input:focus{outline:none;border-color:var(--accent);background:var(--panel)}.textarea{width:100%;padding:7px 10px;border:1px solid transparent;border-radius:var(--radius);background:var(--field);resize:vertical;min-height:60px}.textarea:focus{outline:none;border-color:var(--accent);background:var(--panel)}.textarea.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;line-height:1.6}.dd{display:flex;align-items:center;gap:7px;height:28px;width:100%;min-width:0;padding:0 8px 0 10px;border:1px solid transparent;border-radius:var(--radius);background:var(--field);text-align:left}.dd:hover{background:var(--field-hover)}.dd.is-open{border-color:var(--accent);background:var(--panel)}.dd-icon{flex:none;display:inline-flex;align-items:center;color:var(--text-2)}.dd-label{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dd-chev{flex:none;color:var(--text-3)}.dd-menu{position:fixed;z-index:200;max-height:320px;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-pop);padding:4px;display:flex;flex-direction:column}.dd-item{display:flex;align-items:center;gap:6px;min-height:28px;padding:0 8px 0 4px;border-radius:var(--radius-s);text-align:left;color:var(--text)}.dd-item.tall{min-height:42px;padding-top:5px;padding-bottom:5px}.dd-item:hover{background:var(--accent);color:#fff}.dd-item:hover .dd-desc,.dd-item:hover .dd-icon{color:rgba(255,255,255,.75)}.dd-check{flex:none;width:16px;display:inline-flex;align-items:center;justify-content:center}.dd-col{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:1px;white-space:nowrap}.dd-col,.dd-col>span{overflow:hidden;text-overflow:ellipsis}.dd-desc{font-size:10px;color:var(--text-3)}.ctx-menu{padding:4px}.ctx-sep{height:1px;margin:4px 6px;background:var(--border)}.ctx-kbd{flex:none;font-size:10px;color:var(--text-3);font-family:ui-monospace,Menlo,monospace}.dd-item:hover .ctx-kbd{color:rgba(255,255,255,.75)}.dd-item.is-danger{color:var(--danger)}.dd-item.is-danger:hover{background:var(--danger);color:#fff}.grp{display:flex;flex-direction:column;gap:6px}.grp-label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-2);min-height:13px}.grp-label.is-set{color:var(--accent);font-weight:600}.grid2{grid-template-columns:1fr 1fr;grid-gap:8px}.grid2,.grid2t{display:grid;gap:8px;align-items:center}.grid2t{grid-template-columns:1fr 1fr 28px;grid-gap:8px}.grid4{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.field{display:flex;align-items:center;height:28px;padding:0 8px 0 9px;gap:7px;border:1px solid transparent;border-radius:var(--radius);background:var(--field);min-width:0}.field:hover{background:var(--field-hover)}.field:focus-within{border-color:var(--accent);background:var(--panel)}.field-pre{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:13px;color:var(--text-3);font-size:10.5px;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none}.field-pre.scrub{cursor:ew-resize}.field-pre.scrub:hover{color:var(--text)}.field input{width:100%;min-width:0;border:none;padding:0;background:transparent}.field input:focus{outline:none}.field-unit{flex:none;color:var(--text-3);font-size:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.field-unit.clickable{cursor:pointer}.field-unit.clickable:hover{color:var(--text)}.fill-row{position:relative}.fill-main,.fill-row{display:flex;align-items:center;gap:8px}.fill-main{flex:1 1;height:28px;padding:0 4px;border:1px solid transparent;border-radius:var(--radius);background:var(--field);min-width:0}.fill-main:hover{background:var(--field-hover)}.fill-main:focus-within{border-color:var(--accent);background:var(--panel)}.fill-main input{width:100%;min-width:0;border:none;padding:0;background:transparent;font-family:ui-monospace,Menlo,monospace;font-size:11px;text-transform:uppercase}.fill-main input:focus{outline:none}.fill-alpha{flex:none;width:62px}.color-swatch{flex:none;width:20px;height:20px;border-radius:5px;border:1px solid rgba(0,0,0,.12);background-image:repeating-conic-gradient(#e4e4e7 0 25%,#fff 0 50%);background-size:8px 8px;overflow:hidden;position:relative;cursor:pointer}.color-swatch:after{content:"";position:absolute;inset:0;background:var(--sw,transparent)}.color-pop{position:absolute;top:32px;right:0;z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:12px;width:200px;display:flex;flex-direction:column;gap:8px}.color-pop input[type=color]{width:100%;height:90px;border:none;padding:0;border-radius:var(--radius-s);cursor:pointer;background:none}.range{width:100%;accent-color:var(--accent)}.recent-colors{display:flex;flex-direction:column;gap:5px}.recent-colors-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.recent-color{aspect-ratio:1;border-radius:5px;border:1px solid rgba(0,0,0,.12);background-image:repeating-conic-gradient(#e4e4e7 0 25%,#fff 0 50%);background-size:8px 8px;position:relative;overflow:hidden}.recent-color:after{content:"";position:absolute;inset:0;background:var(--sw,transparent)}.recent-color:hover{box-shadow:0 0 0 2px var(--accent-soft),inset 0 0 0 1px var(--accent)}.motion-summary{margin-left:6px;font-weight:400;color:var(--text-3);font-family:ui-monospace,Menlo,monospace;font-size:10px}.panel-l,.panel-r{flex:none;background:var(--panel);display:flex;flex-direction:column;min-height:0}.panel-l{width:var(--panel-l-w,252px);border-right:1px solid var(--border)}.panel-r{width:var(--panel-r-w,288px);border-left:1px solid var(--border)}.panel-resizer{flex:none;width:5px;margin:0 -2px;cursor:col-resize;z-index:5;position:relative}.panel-resizer:after{content:"";position:absolute;inset:0 2px;background:transparent;transition:background .12s ease}.panel-resizer:active:after,.panel-resizer:hover:after{background:var(--accent)}.tabs{flex:none;display:flex;border-bottom:1px solid var(--border);padding:0 4px;gap:0}.tab{padding:9px 8px;color:var(--text-2);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tab.is-on,.tab:hover{color:var(--text)}.tab.is-on{border-bottom-color:var(--text)}.panel-body{flex:1 1;overflow-y:auto;min-height:0}.panel-empty{padding:32px 16px;color:var(--text-3);text-align:center;line-height:1.8}.sec{border-bottom:1px solid var(--border);padding:12px 14px 14px}.sec-head{width:100%;padding:2px 0;font-weight:600;font-size:12px;color:var(--text)}.sec-head,.sec-head .sec-title{display:flex;align-items:center;gap:6px}.sec-head .sec-title{flex:1 1;cursor:default;text-align:left}.sec-head .chev{color:var(--text-3);transition:transform .12s ease}.sec-head.is-open .chev{transform:rotate(90deg)}.sec-tools{display:flex;align-items:center;gap:2px}.sec-body{margin-top:12px;display:flex;flex-direction:column;gap:12px}.row{display:grid;grid-template-columns:76px 1fr;align-items:center;grid-gap:8px;gap:8px;min-height:28px}.row>.lbl,.row>label:first-child{color:var(--text-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:default;font-size:11px}.lbl.is-set{color:var(--accent);font-weight:600}.stack{display:flex;flex-direction:column;gap:6px}.hint{color:var(--text-3);font-size:10.5px;line-height:1.6}.align-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:2px;gap:2px;width:100%;aspect-ratio:1;padding:4px;background:var(--field);border-radius:var(--radius)}.align-grid button{border-radius:4px;display:grid;place-items:center}.align-grid button:after{content:"";width:4px;height:4px;border-radius:50%;background:var(--border-strong);transition:all .1s ease}.align-grid button:hover:after{background:var(--text-2)}.align-grid button.is-on:after{width:5px;height:14px;border-radius:2px;background:var(--accent)}.align-grid.is-row button.is-on:after{width:14px;height:5px}.fx-card{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:var(--radius);background:var(--bg)}.fx-head{display:flex;align-items:center;gap:6px}.fx-head .fx-label{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;color:var(--text-2)}.state-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);background:#fbfbfc}.state-bar .select{height:26px}.layer-row{display:flex;align-items:center;gap:6px;height:28px;padding-right:6px;cursor:default;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.layer-row:hover{background:var(--bg)}.layer-row.is-sel{background:var(--accent-soft)}.layer-row.is-sel .layer-name{color:var(--accent);font-weight:600}.layer-caret{flex:none;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-3);border-radius:3px}.layer-caret:hover{color:var(--text)}.layer-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-name input{width:100%;border:1px solid var(--accent);border-radius:3px;padding:1px 4px;font-size:12px}.layer-name input:focus{outline:none}.layer-tag{flex:none;font-size:9.5px;font-family:ui-monospace,Menlo,monospace;color:var(--text-3);background:var(--field);border-radius:3px;padding:1px 4px}.layer-row.is-sel .layer-tag{background:#d3eafc;color:var(--accent)}.layer-act{flex:none;display:none;width:18px;height:18px;align-items:center;justify-content:center;color:var(--text-3);border-radius:3px}.layer-act.is-active,.layer-row:hover .layer-act{display:inline-flex}.layer-act:hover{color:var(--text)}.layer-act.is-active{color:var(--text-2)}.layer-row.is-hidden .layer-name{opacity:.45}.drop-line{position:absolute;left:0;right:0;height:2px;background:var(--accent);pointer-events:none;z-index:2}.layer-row.drop-inside{box-shadow:inset 0 0 0 2px var(--accent)}.add-sec{padding:12px}.add-sec+.add-sec{border-top:1px solid var(--border)}.add-title{font-size:10.5px;font-weight:600;color:var(--text-3);letter-spacing:.06em;margin-bottom:8px}.add-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}.add-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px 10px;border:1px solid var(--border);border-radius:10px;color:var(--text-2);transition:border-color .12s ease,background .12s ease,color .12s ease}.add-item:hover{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}.add-item span{font-size:11px}.add-row{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:10px;margin-bottom:6px;color:var(--text);transition:border-color .12s ease,background .12s ease}.add-row:hover{border-color:var(--accent-border);background:var(--accent-soft)}.preset-row{align-items:flex-start;padding:8px 10px}.preset-row>svg{margin-top:2px;flex:none;color:var(--text-2)}.preset-col{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:1px;text-align:left}.preset-desc{font-size:10px;color:var(--text-3)}.comp-row{padding:4px 6px 4px 10px;gap:4px;color:#7c3aed}.comp-row:hover{border-color:#c4b5fd;background:#f5f3ff}.comp-row .comp-insert{flex:1 1;min-width:0;display:flex;align-items:center;gap:8px;padding:5px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;text-align:left}.comp-row .layer-act{width:22px;height:22px}.img-pick{display:flex;flex-direction:column;gap:6px}.img-pick-row{display:flex;align-items:center;gap:6px}.img-pick-thumb{flex:none;width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:var(--field) repeating-conic-gradient(#e9e9ec 0 25%,#fff 0 50%);background-size:8px 8px;overflow:hidden}.img-pick-thumb img{width:100%;height:100%;object-fit:cover;display:block}.img-pick-asset{flex:1 1;min-width:0;height:28px;display:inline-flex;align-items:center;padding:0 10px;border-radius:var(--radius);background:var(--field);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.img-pick-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px;padding:8px;border-radius:var(--radius);background:var(--bg);max-height:180px;overflow-y:auto}.img-pick-cell{aspect-ratio:1;border-radius:6px;overflow:hidden;border:1.5px solid var(--border);background:var(--panel);display:grid;place-items:center;color:var(--text-3);transition:border-color .1s ease}.img-pick-cell img{width:100%;height:100%;object-fit:cover;display:block}.img-pick-cell.is-sel,.img-pick-cell:hover{border-color:var(--accent)}.img-pick-cell.is-sel{box-shadow:0 0 0 2px var(--accent-soft)}.img-pick-cell.is-upload{border-style:dashed}.icon-picker{display:flex;flex-direction:column;gap:8px}.icon-picker-grid{display:grid;grid-template-columns:repeat(8,1fr);grid-gap:2px;gap:2px;max-height:240px;overflow-y:auto;padding:6px;border-radius:var(--radius);background:var(--bg)}.icon-picker-cell{aspect-ratio:1;display:grid;place-items:center;border-radius:6px;color:var(--text-2)}.icon-picker-cell:hover{background:var(--panel);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.08)}.icon-picker-cell.is-sel{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)}.asset-drop{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 8px;border:1.5px dashed var(--border-strong);border-radius:10px;color:var(--text-2);font-weight:500;transition:border-color .12s ease,background .12s ease,color .12s ease}.asset-drop.is-over,.asset-drop:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.asset-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;padding:0 12px 40px}.asset-card{position:relative;display:flex;flex-direction:column;gap:5px}.asset-thumb{aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:var(--field);border:1px solid var(--border);transition:border-color .12s ease,box-shadow .12s ease}.asset-thumb img{width:100%;height:100%;object-fit:cover;display:block}.asset-thumb:hover{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.asset-meta{display:flex;flex-direction:column;gap:1px;min-width:0}.asset-name{font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-dim{font-size:9.5px;color:var(--text-3)}.asset-del{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:6px;background:rgba(255,255,255,.92);box-shadow:0 1px 3px rgba(0,0,0,.15);display:none}.asset-card:hover .asset-del{display:inline-flex}.storage-usage{display:flex;flex-direction:column;gap:5px;padding:10px 12px 14px;border-top:1px solid var(--border);margin-top:4px}.storage-bar{height:4px;border-radius:2px;background:var(--field);overflow:hidden}.storage-fill{height:100%;border-radius:2px;background:var(--accent);transition:width .3s ease}.page-row{display:flex;align-items:center;gap:8px;height:30px;padding:0 8px 0 12px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}.page-row:hover{background:var(--bg)}.page-row.is-on{background:var(--accent-soft);color:var(--accent);font-weight:600}.page-row .page-slug{color:var(--text-3);font-weight:400;font-size:10.5px;font-family:ui-monospace,Menlo,monospace}.page-row .layer-act{width:20px;height:20px}.page-row:hover .layer-act{display:inline-flex}.page-row.is-unpublished .page-label{opacity:.45}.page-settings{border-top:1px solid var(--border);padding:12px}.canvas-area{flex:1 1;min-width:0;overflow:auto;background:var(--bg-canvas);position:relative}.canvas-inner{position:relative;min-width:100%;min-height:100%;display:flow-root}.comp-edit-bar{position:-webkit-sticky;position:sticky;top:0;z-index:21;display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 16px;background:#7c3aed;color:#fff;font-weight:500}.comp-edit-bar .btn{border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.14);color:#fff}.comp-edit-bar .btn:hover{background:rgba(255,255,255,.25)}.cv-design [data-instance]:hover{outline:1px solid #c4b5fd;outline-offset:-1px}.cv-design [data-instance][data-sel=true]{outline:1.5px solid #7c3aed!important;outline-offset:-1.5px}.dyn-bar{position:-webkit-sticky;position:sticky;top:0;z-index:21;display:flex;align-items:center;justify-content:center;gap:10px;padding:7px 16px;background:var(--accent);color:#fff;font-weight:500}.dyn-bar .dyn-select{width:auto;min-width:160px;max-width:320px;height:24px;background-color:rgba(255,255,255,.95);border:none}.cv-design [data-bound=true]{-webkit-text-decoration-line:underline;text-decoration-line:underline;-webkit-text-decoration-style:dashed;text-decoration-style:dashed;-webkit-text-decoration-color:#7c3aed;text-decoration-color:#7c3aed;text-underline-offset:3px}.cv-design img[data-bound=true]{box-shadow:0 0 0 2px #c4b5fd}.canvas-drop-overlay{position:-webkit-sticky;position:sticky;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:center;height:44px;margin-bottom:-44px;background:var(--accent);color:#fff;font-weight:600;pointer-events:none}.canvas-frame{position:relative;margin:28px auto 80px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1),0 8px 32px rgba(0,0,0,.06);transform-origin:top center;transform:translateZ(0)}.canvas-frame.is-preview{box-shadow:0 1px 3px rgba(0,0,0,.1)}.rawhtml-frame{display:block;width:100%;height:80vh;border:none;background:#fff}.cv-root{min-height:320px;color:#18181b;font-family:system-ui,-apple-system,Hiragino Sans,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}.cv-root h1,.cv-root h2,.cv-root h3,.cv-root h4,.cv-root h5,.cv-root h6,.cv-root p{margin:0;white-space:pre-wrap}.cv-root img{max-width:100%;display:block}.cv-root a{color:inherit}.cv-root button,.cv-root input,.cv-root select,.cv-root textarea{font:inherit;color:inherit}.cv-placeholder{display:flex;align-items:center;justify-content:center;min-height:120px;padding:20px;background:#f4f4f5;color:#a1a1aa;font-size:13px;text-align:center}.cv-design iframe{pointer-events:none}.cv-design [data-node]:hover{outline:1px solid var(--accent-border);outline-offset:-1px}.cv-design [data-node][data-sel=true]{outline:1.5px solid var(--accent)!important;outline-offset:-1.5px}.cv-design [data-editing=true]{outline:1.5px dashed var(--accent)!important;cursor:text}.move-line{background:var(--accent);border-radius:2px;z-index:12}.move-line,.sel-overlay{position:absolute;pointer-events:none}.sel-overlay{z-index:10}.sel-badge{top:100%;left:50%;transform:translate(-50%,6px)}.sel-badge,.sel-name{position:absolute;background:var(--accent);color:#fff;font-size:10px;font-weight:600;padding:2px 7px;border-radius:4px;white-space:nowrap}.sel-name{bottom:100%;left:0;transform:translateY(-4px)}.handle{position:absolute;width:9px;height:9px;background:#fff;border:1.5px solid var(--accent);border-radius:3px;pointer-events:auto}.handle.h-n,.handle.h-s{left:50%;transform:translateX(-50%);cursor:ns-resize}.handle.h-e,.handle.h-w{top:50%;transform:translateY(-50%);cursor:ew-resize}.handle.h-nw,.handle.h-se{cursor:nwse-resize}.handle.h-ne,.handle.h-sw{cursor:nesw-resize}.handle.h-n{top:-5px}.handle.h-s{bottom:-5px}.handle.h-e{right:-5px}.handle.h-w{left:-5px}.handle.h-nw{top:-5px;left:-5px}.handle.h-ne{top:-5px;right:-5px}.handle.h-sw{bottom:-5px;left:-5px}.handle.h-se{bottom:-5px;right:-5px}.modal-backdrop{position:fixed;inset:0;background:rgba(24,24,27,.4);display:grid;place-items:center;z-index:100}.modal{width:460px;max-width:calc(100vw - 48px);max-height:80vh;overflow-y:auto;background:var(--panel);border-radius:14px;box-shadow:var(--shadow-pop);padding:20px}.modal h2{margin:0 0 4px;font-size:15px}.modal .modal-desc{color:var(--text-2);margin:0 0 14px;line-height:1.7}.check-list{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:6px}.check-list li{display:flex;gap:8px;padding:8px 10px;border-radius:var(--radius-s);background:#fffbeb;color:#92400e;line-height:1.5}.check-list li.is-error{background:#fef2f2;color:#991b1b}.check-ok{display:flex;gap:8px;align-items:center;padding:10px;border-radius:var(--radius-s);background:#f0fdf4;color:#166534;margin-bottom:16px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.kbd{font-family:ui-monospace,Menlo,monospace;font-size:10px;background:var(--field);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--text-2)}.login-page{min-height:100vh;display:grid;place-items:center;background:var(--bg-canvas)}.login-card{width:340px;background:var(--panel);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.08),0 12px 40px rgba(0,0,0,.08);padding:36px 32px;display:flex;flex-direction:column;align-items:center;text-align:center}.login-mark{width:44px;height:44px;border-radius:12px;background:var(--text);color:#fff;display:grid;place-items:center;font-weight:700;font-size:15px;letter-spacing:.03em;margin-bottom:16px}.login-card h1{margin:0 0 6px;font-size:18px}.login-desc{margin:0 0 24px;color:var(--text-2);line-height:1.7}.login-error{margin:0 0 16px;padding:8px 12px;border-radius:var(--radius);background:#fef2f2;color:#991b1b;font-size:11px;line-height:1.6}.google-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;width:100%;height:40px;border-radius:10px;border:1px solid var(--border-strong);background:var(--panel);font-weight:600;font-size:13px;transition:background .12s ease,border-color .12s ease}.google-btn:hover{background:var(--field)}.tooltip{position:fixed;z-index:500;pointer-events:none;background:#1b1b1f;color:#f4f4f5;font-size:11px;line-height:1.4;padding:5px 9px;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.2);max-width:240px;white-space:pre-line;animation:tip-in .1s ease}.tooltip .tip-kbd{display:inline-block;margin-left:6px;padding:0 4px;border-radius:3px;background:rgba(255,255,255,.16);color:#d4d4d8;font-family:ui-monospace,Menlo,monospace;font-size:10px}@keyframes tip-in{0%{opacity:0}to{opacity:1}}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.z-ctl{display:flex;align-items:center;gap:4px}.z-ctl .z-val{flex:1 1;min-width:0;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius);background:var(--field);color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.z-ctl .z-val.is-set{color:var(--text);font-weight:600}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:5px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background-color:var(--text-3)}::-webkit-scrollbar-track{background:transparent}