:root{--ink:#111c2e;--muted:#8794a9;--line:#d2dce9;--accent:#4867ff;--page:#edf2f7;--white:#fff;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--page);font-size:13px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}button,input,select,textarea{outline-offset:4px}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent)}[hidden]{display:none!important}.icon-library{position:absolute;width:0;height:0;overflow:hidden}.icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.page{max-width:1160px;padding:38px 28px 20px;margin:auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{display:block;font-size:10px;font-weight:700;letter-spacing:2.5px;color:#75849c;margin-bottom:5px}h1{font-size:36px;line-height:1.2;letter-spacing:-1.1px;margin:0 0 10px;font-weight:750}.page-header p{color:#6e7f98;margin:0;font-size:13px;line-height:1.7}.header-badge{background:#e3ebf3;border:1px solid var(--line);border-radius:20px;padding:7px 12px;display:flex;align-items:center;gap:7px;font-size:11px;white-space:nowrap}.header-badge span{width:5px;height:5px;background:#4b8b77;border-radius:50%}.mode-card{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:19px 21px;display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:18px}.mode-card p{font-size:11px;color:#718199;margin:0;line-height:1.6}.mode-card strong{font-weight:650;color:var(--ink)}.segmented{display:flex;background:#edf2f7;border:1px solid var(--line);padding:3px;border-radius:6px;gap:1px}.segmented button,.segmented>span{border:0;border-radius:4px;background:transparent;padding:7px 11px;font-size:11px}.segmented .selected{background:#fff;box-shadow:0 1px 3px #1727470b}.mode-switch button{color:#8d99ac}.content-types{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:18px}.type-button{border:1px solid var(--line);border-radius:6px;background:var(--white);width:100%;padding:10px 12px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;min-height:39px;transition:background .15s}.type-button:hover{border-color:#91a4c3}.type-button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.type-button .icon{width:14px;height:14px}.more-wrap{position:relative}.more-menu{position:absolute;right:0;top:45px;z-index:3;background:white;box-shadow:0 8px 25px #182c481c;border:1px solid var(--line);border-radius:8px;min-width:190px;padding:5px}.more-menu button{display:block;width:100%;border:0;background:white;padding:10px;text-align:left;border-radius:5px}.more-menu button:hover{background:var(--page)}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:18px}.editor-column{min-width:0}.card{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:23px}h2{display:flex;gap:11px;align-items:center;font-size:16px;font-weight:650;letter-spacing:-.2px;margin:0 0 6px;line-height:1.5}.step{width:24px;height:24px;border:1px solid #b8c8dd;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:#788aa5;font-weight:400;flex-shrink:0}.section-hint{margin:0 0 20px 35px;color:var(--muted);font-size:11px}.content-card{margin-bottom:18px}label{display:block;font-size:11px;font-weight:500}input:not([type=color]):not([type=file]):not([type=checkbox]),textarea,select{display:block;width:100%;background:white;border:1px solid #ced9e9;border-radius:6px;padding:10px 11px;margin-top:6px;min-height:39px;font-size:12px}input::placeholder,textarea::placeholder{color:#98a4b5}input:hover,textarea:hover,select:hover{border-color:#9eafc7}textarea{resize:vertical;min-height:98px}.field{margin-bottom:13px}.field:last-child{margin-bottom:0}.two-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.two-fields+.field{margin-top:13px}.field-help{font-size:11px;color:var(--muted);margin:7px 0 0}.utm-details{margin-top:13px;border:1px solid var(--line);border-radius:6px;padding:9px 11px;font-size:11px}.utm-details summary{cursor:pointer;list-style-position:inside}.utm-fields{margin-top:15px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.checkbox-field{display:flex;align-items:center;gap:8px;margin-top:14px}.checkbox-field input{accent-color:var(--accent)}.error{font-size:12px;color:#b43245;margin:14px 0 0}.optional{font-size:11px;font-weight:400;color:var(--muted);letter-spacing:0}.text-button{border:0;background:transparent;color:#72819a;font-size:11px;padding:0;text-decoration:underline;text-underline-offset:3px}.reset-button{margin-left:auto;text-decoration:none}.reset-button:hover{color:var(--accent)}.design-tabs{display:flex;gap:19px;border-bottom:1px solid #e5ebf2;margin:20px 0 18px;overflow:auto}.design-tab{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#8795ac;background:none;border:0;border-bottom:2px solid transparent;padding:0 0 12px;white-space:nowrap;font-weight:650}.design-tab.active{color:var(--ink);border-bottom-color:var(--accent)}.design-panel{min-height:190px}.sticker-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:9px}.sticker-option{position:relative;background:white;border:1px solid var(--line);border-radius:6px;aspect-ratio:1;display:flex;align-items:center;justify-content:center;padding:5px;transition:border .15s,box-shadow .15s}.sticker-option:hover{border-color:#91a4c3}.sticker-option.active{border:2px solid var(--accent);box-shadow:0 0 0 2px #4867ff0b;padding:4px}.sticker-option.active:after{content:'✓';position:absolute;right:-5px;top:-5px;background:var(--accent);color:white;border-radius:50%;width:14px;height:14px;font-size:9px;display:flex;align-items:center;justify-content:center}.sticker-option svg{width:100%;height:100%;max-height:46px}.sticker-option .no-frame{width:22px;height:22px;border:1px solid #9ba8ba;border-radius:50%;position:relative}.no-frame:after{content:'';position:absolute;left:9px;top:0;transform:rotate(45deg);height:20px;border-left:1px solid #9ba8ba}.frame-label{display:flex;align-items:center;gap:12px;margin-top:18px;color:#72819a}.frame-label input{flex:1;max-width:230px!important;min-height:32px!important;margin-top:0!important;padding:7px 10px!important}.small-note{font-size:11px;color:var(--muted);margin:14px 0 0;line-height:1.7}.colour-input{display:flex;align-items:center;gap:10px;border:1px solid var(--line);padding:7px;border-radius:6px;margin-top:6px;min-height:44px;font-size:12px}.colour-input input{border:0;background:transparent;width:32px;height:28px;padding:0;cursor:pointer}.field-caption{font-size:11px;color:#72819a;margin:18px 0 9px}.palette-row{display:flex;gap:10px}.palette-button{width:38px;height:38px;border:1px solid var(--line);background:white;border-radius:50%;padding:5px}.palette-button svg{display:block;width:100%;height:100%}.shape-options{display:flex;gap:12px}.option-button{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line);border-radius:6px;background:white;padding:18px 10px;font-size:12px}.option-button.active{border-color:var(--accent);background:#f6f8ff}.shape-sample{background:var(--ink);width:18px;height:18px;display:block}.shape-sample.rounded{border-radius:5px}.shape-sample.dots{border-radius:50%}.upload-box{min-height:125px;border:1px dashed #bac9df;border-radius:8px;background:#fbfcfe;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;color:#74869f;position:relative;cursor:pointer}.upload-box .icon{height:23px;width:23px}.upload-box strong{color:var(--ink);font-size:13px}.upload-box span{font-size:11px}.upload-box input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}#logo-actions{display:flex;justify-content:space-between;margin-top:12px;font-size:11px}#logo-name{overflow-wrap:anywhere;margin-right:10px}.privacy-note{font-size:11px;color:#8a98aa;display:flex;align-items:center;gap:6px;margin:15px 2px}.privacy-note .icon{width:13px;height:13px}.download-card{padding:23px 22px}.download-card h2{margin-bottom:19px}.preview-stage{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;width:100%;border:1px solid #e0e6ef;border-radius:10px;padding:18px;background-image:linear-gradient(#edf1f655 1px,transparent 1px),linear-gradient(90deg,#edf1f655 1px,transparent 1px);background-size:14px 14px;overflow:hidden}#qr-preview{width:100%;height:100%;display:flex;align-items:center;justify-content:center}#qr-preview svg{width:100%;height:100%;max-width:100%;max-height:100%}.crop{position:absolute;width:13px;height:13px;border-color:#f386c0;border-style:solid;z-index:1}.top-left{left:11px;top:11px;border-width:1px 0 0 1px}.top-right{right:11px;top:11px;border-width:1px 1px 0 0}.bottom-left{left:11px;bottom:11px;border-width:0 0 1px 1px}.bottom-right{right:11px;bottom:11px;border-width:0 1px 1px 0}.loading{position:absolute;inset:0;background:#ffffffd9;display:flex;align-items:center;justify-content:center;color:#60738d;font-size:12px}.qr-specs{display:flex;justify-content:space-between;font-family:Consolas,monospace;font-size:9px;letter-spacing:.3px;color:#8795aa;margin:12px 0 17px}.preview-status{border:1px dashed #bccbe1;border-radius:6px;padding:9px 10px;font-size:10px;color:#6c80a0;margin:0 0 19px;line-height:1.6}.format-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:11px}.download-button{width:100%;background:var(--ink);border:0;border-radius:6px;color:white;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px;font-size:12px;font-weight:600;transition:background .2s}.download-button:hover:not(:disabled){background:#273b59}.download-button:disabled{background:#949ba5}.download-button .icon{height:14px;width:14px}.copy-button{display:flex;align-items:center;justify-content:center;gap:6px;border:0;background:none;width:100%;padding:13px;font-size:11px;color:#71839e}.copy-button:disabled{color:#9aa6b7}.copy-button .icon{width:13px;height:13px}.download-hint{font-size:10px;text-align:center;color:#8a98ab;margin:0}.warning{color:#b76521!important}footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #dce4ee;margin-top:24px;padding-top:17px;font-size:10px;color:#8d9aad}
@media(min-width:1400px){.page{padding-top:55px}}@media(max-width:1000px){.workspace{grid-template-columns:minmax(0,1fr) 300px}.sticker-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.design-tabs{gap:12px}.card{padding:20px}.page{padding:30px 24px}.header-badge{display:none}}@media(max-width:760px){.page{max-width:600px;padding:26px 18px}.workspace{grid-template-columns:1fr}.download-card{width:100%;max-width:420px;justify-self:center}.preview-stage{max-width:320px;margin:auto}.qr-specs{max-width:320px;margin:12px auto 17px}.content-types{gap:5px}.type-button{font-size:11px;gap:5px;padding:9px 5px}.type-button .icon{display:none}.mode-card{padding:15px;gap:12px}.mode-card p{font-size:10px}.desktop-break{display:none}h1{font-size:30px}.page-header p{font-size:12px}.mode-switch button,.mode-switch span{padding:6px 8px;font-size:10px}.sticker-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.privacy-note{margin-bottom:0}.design-panel{min-height:175px}footer{gap:20px}.utm-fields{grid-template-columns:1fr}.shape-options{gap:7px}.option-button{gap:6px;padding:15px 7px}}@media(max-width:430px){.sticker-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.design-tabs{gap:13px}.design-tab{font-size:9px;letter-spacing:0}.card{padding:18px}.mode-card{align-items:flex-start}.two-fields{gap:10px}h2{font-size:15px}.reset-button{font-size:10px}.mode-card p br{display:none}footer{font-size:9px}.shape-sample{width:14px;height:14px}}

.startup-message{padding:12px 15px;margin:0 0 18px;border:1px solid #e7c895;border-radius:8px;background:#fff8e8;color:#855d23;font-size:12px;line-height:1.6}

.segmented a{display:block;padding:7px 11px;border-radius:4px;font-size:11px;color:inherit;text-decoration:none}.auth-page{max-width:480px;margin:75px auto;padding:0 20px}.auth-card{padding:30px}.auth-card h1{font-size:28px}.auth-intro{margin:8px 0 24px}.auth-card .error{margin-bottom:18px}.auth-card form{margin-top:20px}.auth-brand{text-decoration:none;margin-bottom:18px}.back-link{display:inline-block;margin-top:20px;color:#6f819b;font-size:12px;text-decoration:none}.secondary-button,.primary-link{display:inline-flex;align-items:center;justify-content:center;padding:10px 15px;border:1px solid var(--line);border-radius:6px;background:white;font:inherit;color:var(--ink);text-decoration:none;white-space:nowrap}.primary-link{background:var(--ink);color:white;border-color:var(--ink)}.dashboard-toolbar,.list-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.dashboard-toolbar{font-size:12px}.list-heading h2{margin:0}.code-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0;border-top:1px solid #e3e9f2}.code-row>div{min-width:0}.code-row h3{margin:0;font-size:15px}.code-row p{margin:6px 0;color:#72819a;font-size:12px;overflow-wrap:anywhere}.code-row small{color:#94a0b2}.dynamic-controls{border-top:1px solid #e3e9f2;margin-top:20px;padding-top:18px}#dynamic-link-details{margin-top:18px}.type-button:disabled{opacity:.4;cursor:default}.auth-card input{font-size:14px!important}@media(max-width:600px){.auth-page{margin:35px auto}.code-row{flex-direction:column;align-items:flex-start;gap:10px}.dashboard-toolbar{flex-wrap:wrap}.dashboard .page-header h1{font-size:26px}.auth-card{padding:24px}}
/* Public pages resolve the latest saved content after a dynamic QR scan. */
.public-page { max-width:600px; }
/* vCard+ page and editor preview share the same contact-card design. */
.vplus-editor-section{border:1px solid var(--line);border-radius:8px;margin:12px 0;overflow:hidden}
.vplus-editor-section>summary,.vplus-advanced>summary{font-size:12px;font-weight:650;padding:14px 16px;background:#f7f9fc;cursor:pointer}
.vplus-section-body{padding:17px}.vplus-section-body>.field-help{margin:0 0 15px}
.vplus-section-body .two-fields{margin-bottom:12px}.vplus-section-body .two-fields .field{margin-bottom:0}
.vplus-palettes{display:flex;flex-wrap:wrap;gap:10px;margin:17px 0}
.vplus-palette{border:1px solid var(--line);border-radius:6px;width:43px;height:42px;background:white;padding:5px;position:relative}
.vplus-palette span:first-child{display:block;width:100%;height:100%;border-radius:3px}.vplus-palette span:last-child{position:absolute;width:12px;height:12px;border:2px solid white;border-radius:50%;right:2px;bottom:2px}
.vplus-colour input{display:block;width:100%;height:42px;border:1px solid var(--line);border-radius:6px;margin:7px 0;background:white;padding:5px;cursor:pointer}
.vplus-upload{display:flex;flex-wrap:wrap;align-items:center;gap:13px;margin:15px 0 20px}.vplus-upload>img{object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.vplus-upload .field-help{width:100%;margin:0}.vplus-upload-label{position:relative;overflow:hidden;cursor:pointer;font-size:12px}
.vplus-upload-label input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.vplus-advanced{border:1px solid var(--line);border-radius:8px;margin:15px 0;overflow:hidden}.vplus-advanced .tracking-options{padding:0 16px 14px}
.vplus-preview{border-bottom:1px solid var(--line);padding-bottom:24px;margin-bottom:24px}.vplus-preview>h2{font-size:15px;margin-bottom:2px}.vplus-preview>.small-note{margin:0 0 15px}
.vplus-phone{position:relative;border:8px solid #f7f9fc;box-shadow:0 0 0 1px var(--line);border-radius:26px;overflow:hidden;background:white;max-height:490px;min-height:310px}
#vplus-phone-content{max-height:474px;overflow:auto;scrollbar-width:thin;--vplus-primary:#455a64;--vplus-button:#e91e63}
.vplus-contact{--vplus-primary:#455a64;--vplus-button:#e91e63;position:relative}
.vplus-hero{padding:27px 20px;text-align:center;background:var(--vplus-primary,#455a64);color:var(--vplus-hero-text,#fff)}
.vplus-gradient .vplus-hero{background:linear-gradient(135deg,var(--vplus-primary,#455a64),var(--vplus-button,#e91e63))}
.vplus-hero h1,.vplus-hero h3{margin:12px 0 5px;font-size:25px;line-height:1.2;font-weight:750;letter-spacing:-.5px;overflow-wrap:anywhere}.vplus-hero p{margin:3px 0;font-size:12px;overflow-wrap:anywhere}
.vplus-tag{display:block;font-size:10px;text-transform:uppercase;letter-spacing:2px;opacity:.8;margin-bottom:12px}
.vplus-avatar{width:96px;height:96px;object-fit:cover;border-radius:50%;border:4px solid #ffffff60;display:block;margin:12px auto}
.vplus-quick-actions{display:flex;justify-content:center;background:var(--vplus-primary,#455a64);color:var(--vplus-hero-text,#fff)}
.vplus-quick-actions a,.vplus-quick-actions span{flex:1;text-align:center;color:inherit;text-decoration:none;padding:13px;font-size:11px;font-weight:650;border-top:1px solid #ffffff30;text-transform:uppercase;letter-spacing:1px}
.vplus-quick-actions a+a,.vplus-quick-actions span+span{border-left:1px solid #ffffff30}
.vplus-details{padding:5px 17px 20px}.vplus-details .public-detail{margin:14px 0;border-bottom:1px solid #edf2f7;padding-bottom:9px}
.vplus-details .public-detail p{margin:4px 0;font-size:12px}.vplus-details .public-detail>span{font-size:10px}
.vplus-details .public-detail a{color:inherit;text-decoration:none}.vplus-details .public-detail a:hover{text-decoration:underline}
.vplus-preview-save,.vplus-contact #open-contact-card{background:var(--vplus-button,#e91e63);color:var(--vplus-button-text,#fff);display:block;text-align:center;border-radius:7px;padding:13px;text-decoration:none;font-size:12px;font-weight:650;margin:18px 0 5px}
.vplus-social{border-top:1px solid var(--line);padding-top:15px;margin-top:20px}.vplus-social h2{font-size:14px}
.vplus-details .secondary-button{font-size:10px;padding:7px 10px}
.vplus-welcome{position:absolute;inset:0;z-index:3;background:#fff;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;border-radius:10px;min-height:200px}
.vplus-welcome img{object-fit:contain;width:96px;height:96px}.vplus-welcome p{color:var(--muted);font-size:12px}
@media(max-width:430px){.vplus-section-body{padding:13px}.vplus-section-body .two-fields{grid-template-columns:1fr;gap:12px}.vplus-editor-section>summary{padding:13px}.vplus-phone{max-width:300px;margin:auto}}
.public-card h1 { overflow-wrap:anywhere; }
.public-detail { margin:18px 0; }
.public-detail > span { color:var(--muted); font-size:12px; }
.public-detail p,.content-text { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.65; }
.public-action { display:block; text-decoration:none; text-align:center; margin-top:22px; }
.public-buttons { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.wifi-qr { display:block; width:260px; max-width:100%; height:auto; margin:24px auto 12px; }

.tracking-options{margin:16px 0}.tracking-options .checkbox-field{margin:10px 0}.scan-notice{border-top:1px solid var(--line);padding-top:14px;margin-top:22px}.scan-notice p{font-size:12px;line-height:1.7}.contact-qr-details{margin-top:22px}.code-actions{display:flex;gap:8px;flex-wrap:wrap}.scan-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.scan-metrics span{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.scan-metrics strong{font-size:26px}.scan-metrics>div:last-child strong{font-size:15px}.analytics>.card{margin-bottom:20px}.scan-table-wrap{overflow:auto}.scan-table{width:100%;min-width:1000px;border-collapse:collapse;text-align:left;font-size:12px}.scan-table th,.scan-table td{padding:14px 10px;vertical-align:top;border-bottom:1px solid var(--line)}.scan-table th{font-size:11px;color:var(--muted)}.scan-table small{display:block;color:var(--muted);margin-top:6px;overflow-wrap:anywhere;max-width:250px}.scan-table a{display:block;font-size:11px;margin-top:8px}.report-pager{display:flex;justify-content:space-between;align-items:center;margin-top:20px}.report-pager span{font-size:12px;color:var(--muted)}.scan-table details{margin-top:8px}.analytics #report-days{margin-top:6px;min-width:170px}.analytics #report-status{font-size:12px;color:var(--muted)}@media(max-width:650px){.scan-metrics{grid-template-columns:repeat(2,1fr)}.code-actions{width:100%}.analytics .page-header{flex-wrap:wrap;gap:12px}}

/* Contact content starts at the viewport edge and shares the preview's layout. */
.public-vcard-page{margin:0 auto;padding:0}
.public-card.public-vcard-card{padding:0;border:0;border-radius:0;overflow:hidden;min-height:100vh}
.vplus-page-notice{padding:0 17px 20px}.vplus-page-notice:has(>#public-status:only-child:empty){display:none}
.public-vcard-card #public-status:empty{display:none}
#vplus-phone-content{display:flow-root}
#vplus-phone-content>.vplus-hero{margin-top:0}
.template-card{margin-bottom:18px}.template-card>.small-note{margin:5px 0 15px}.template-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.template-grid .checkbox-field{font-size:11px}.template-grid #save-template{margin-top:12px}.template-card .public-buttons{gap:12px}.template-card button:disabled{opacity:.5}.template-card #template-message:empty{display:none}.vplus-page-notice:not(:has(.scan-notice)):not(:has(#public-status:not(:empty))){display:none}
@media(max-width:650px){.template-grid{grid-template-columns:1fr;gap:15px}}
