:root{--ink:#28241f;--muted:#898278;--paper:#fffefa;--bg:#f5f1e8;--line:#e9e4da;--accent:#e97752;--sans:'Segoe UI',Arial,sans-serif;--mono:Consolas,monospace;--serif:Georgia,serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}.topbar{height:72px;border-bottom:1px solid rgba(60,50,40,.08);display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,24px)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:15px;font-weight:700;letter-spacing:-.04em}.brand-mark{display:grid;place-items:center;width:28px;height:28px;background:var(--ink);color:#fffaf1;border-radius:50%;font-family:var(--serif);font-style:italic;font-size:17px}.connection{display:flex;align-items:center;gap:9px;color:#777168;font-size:12px}.connection-dot{width:7px;height:7px;border-radius:50%;background:#c3bdb2}.connection.connected .connection-dot{background:#6e9b74;box-shadow:0 0 0 3px #6e9b7425}.shell{max-width:1040px;margin:0 auto;padding:62px 34px 28px}.intro{max-width:510px;margin-bottom:40px}.eyebrow,.field-label span,.preview-caption{font-family:var(--mono);font-size:9px;letter-spacing:.11em;color:var(--muted)}.eyebrow{display:flex;align-items:center;gap:9px;color:#8d7d6a}.eyebrow-line{height:1px;width:20px;background:var(--accent)}h1{font-family:var(--serif);font-weight:500;letter-spacing:-.055em;font-size:52px;line-height:1.02;margin:18px 0 14px}h1 em{color:var(--accent);font-weight:500}.lede{max-width:380px;color:#777168;font-size:14px;line-height:1.7;margin:0}.workspace{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:48px;align-items:start}.editor-card{background:#fffefa;padding:28px 30px 23px;border:1px solid #eee9df;border-radius:5px;box-shadow:0 14px 40px #55452c0b}.section-heading{display:flex;align-items:center;gap:10px;margin:0 0 24px}.step{font-family:var(--mono);font-size:10px;color:var(--accent)}h2{font-family:var(--serif);font-size:19px;font-weight:500;letter-spacing:-.02em;margin:0}.field-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:600;color:#504b43;margin:0 0 8px}.field-label span{font-size:8px;font-weight:400}.text-input{width:100%;background:#fffefa;border:1px solid var(--line);border-radius:3px;padding:11px 12px;color:var(--ink);font:13px var(--sans);outline:none;transition:border .15s}.text-input:focus{border-color:#c9a58d}.title-input{margin-bottom:18px}.body-input{resize:vertical;line-height:1.55;min-height:94px}.upload-row{display:flex;justify-content:space-between;align-items:center;padding:17px 0 13px;border-bottom:1px solid var(--line);margin-bottom:12px}.helper{font-size:10px;color:#938c81}.upload-button{border:1px solid var(--line);padding:9px 12px;border-radius:3px;font-size:11px;cursor:pointer;background:#fffefa}.upload-button:hover,.button-secondary:hover{border-color:#c4b5a3}.photo-chip{display:flex;align-items:center;gap:8px;background:#f7f4ed;color:#655e53;padding:7px 10px;margin-bottom:13px;font-size:10px}.photo-chip button{margin-left:auto;border:0;background:none;font-size:17px;cursor:pointer;color:#81796d}.settings-row{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding:8px 0 18px}.setting select{appearance:auto}.setting input[type=range]{width:100%;accent-color:var(--accent);height:24px;margin:0}.action-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.button{height:42px;border:0;border-radius:3px;font-family:var(--sans);font-size:11px;font-weight:600;cursor:pointer}.button-secondary{background:#fffefa;border:1px solid var(--line);color:#4a453e}.button-primary{background:var(--ink);color:#fffaf1}.button-primary:hover:not(:disabled){background:#423a31}.button:disabled{opacity:.4;cursor:not-allowed}.button-primary span{margin-left:12px;color:#e5a184}.bluetooth-icon{font-size:15px;margin-right:5px;color:#6683a5}.notice{min-height:30px;padding-top:12px;font-size:10px;line-height:1.5;color:#8b8378;text-align:center}.notice.error{color:#a7523a}.notice.success{color:#51765a}.preview-column{padding:2px 9px 0}.preview-column .section-heading{margin-bottom:18px}.paper-wrap{background:#eae5da;padding:22px;display:flex;justify-content:center;border-radius:4px;box-shadow:inset 0 0 0 1px #e2dcd0}.paper{width:100%;max-width:232px;min-height:302px;padding:10px;background:#fffefa;box-shadow:0 4px 14px #62584212;display:flex;align-items:flex-start;justify-content:center;overflow:hidden}.paper canvas{width:100%;height:auto;image-rendering:pixelated}.preview-caption{display:flex;justify-content:space-between;font-size:8px;margin-top:12px}.tip-card{display:flex;gap:12px;margin-top:26px;padding:14px;background:#eee9df;color:#71695d}.tip-spark{font-size:16px;color:var(--accent)}.tip-card p{font-size:10px;line-height:1.55;margin:0}.tip-card strong{color:#413c34;font-weight:600}footer{border-top:1px solid #e8e2d8;margin-top:56px;padding-top:16px;display:flex;justify-content:space-between;color:#9b9387;font-size:9px}footer span{font-family:var(--mono);font-size:8px;letter-spacing:.05em}
@media(max-width:760px){.shell{padding:42px 20px 24px}.topbar{height:60px;padding:0 20px}.intro{margin-bottom:30px}h1{font-size:45px}.workspace{grid-template-columns:1fr;gap:33px}.editor-card{padding:23px 20px 18px}.preview-column{max-width:420px;width:100%;margin:0 auto}.paper{max-width:220px}footer{margin-top:38px;gap:10px;line-height:1.5}.connection{font-size:10px}}
@media(max-width:380px){.action-row{grid-template-columns:1fr}.settings-row{gap:14px}.shell{padding-left:14px;padding-right:14px}}

.save-button{width:100%;margin-top:9px}
@media(max-width:760px){.text-input{font-size:16px}.button{min-height:48px;font-size:13px}.action-row{grid-template-columns:1fr;gap:9px}.upload-button{min-height:44px;display:flex;align-items:center;justify-content:center;padding:10px 14px}.connection{max-width:55%;text-align:right;line-height:1.35}}
/* Dark, image-forward studio theme */
:root{--ink:#f5f3ef;--muted:#a0a3ae;--paper:#1b1e27;--bg:#101116;--line:#323643;--accent:#c4f36b;--sans:'Segoe UI',Arial,sans-serif;--mono:Consolas,monospace;--serif:Georgia,serif}
body{background:var(--bg);color:var(--ink)}
.topbar{border-bottom-color:#ffffff12;background:#101116}
.brand{color:var(--ink)}.brand-mark{background:var(--accent);color:#15170f}
.connection{color:#b2b5c0}.connection-dot{background:#717582}.connection.connected .connection-dot{background:#a8e96b;box-shadow:0 0 0 3px #a8e96b25}
.eyebrow,.field-label span,.preview-caption{color:#9ca0ad}.eyebrow{color:var(--accent)}h1 em{color:var(--accent)}.lede{color:#b5b8c1}
.editor-card{background:#1a1d26;border-color:#2d313e;box-shadow:0 14px 40px #0005}.field-label{color:#e2e1dc}.text-input{background:#12141b;border-color:#363a47;color:#f5f3ef}.text-input::placeholder{color:#757b89}.text-input:focus{border-color:#94c653}.upload-row{border-bottom-color:#343744}.helper{color:#999eac}.upload-button{background:#c4f36b;border-color:#c4f36b;color:#15170f;font-weight:700}.upload-button:hover{background:#d3fb8e;border-color:#d3fb8e}.photo-chip{background:#242833;color:#e3e2dd}.photo-chip button{color:#c4f36b}.setting input[type=range]{accent-color:#c4f36b}
.button-secondary{background:#242833;border-color:#3a3f4d;color:#f5f3ef}.button-secondary:hover{border-color:#7c8d5f;background:#2a2f3a}.button-primary{background:#c4f36b;color:#17190f}.button-primary:hover:not(:disabled){background:#d3fb8e}.button-primary span{color:#52652d}.notice{color:#a0a3ae}.notice.error{color:#ff9b8a}.notice.success{color:#b8ed8e}
.paper-wrap{background:#1c2029;box-shadow:inset 0 0 0 1px #323744}.paper{background:#fffefa;box-shadow:0 8px 24px #0006}.tip-card{background:#20242e;color:#bec1ca}.tip-card strong{color:#f3f2ec}.tip-spark{color:var(--accent)}footer{border-top-color:#2b2e38;color:#969aa7}
@media(max-width:760px){
  html,body{width:100%;height:100%;min-height:100%;overflow:hidden}
  body{height:100dvh;min-height:100dvh;overscroll-behavior:none}
  .topbar{height:50px;min-height:50px;padding:0 15px}
  .shell{height:calc(100dvh - 50px - env(safe-area-inset-bottom));max-width:none;margin:0;padding:8px 12px calc(8px + env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow:hidden}
  .intro{display:none}
  .workspace{flex:1;min-height:0;height:100%;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(150px,1fr) auto;gap:8px;overflow:hidden}
  .preview-column{grid-row:1;order:0;max-width:none;width:100%;height:100%;min-height:0;margin:0;padding:0;display:flex;flex-direction:column}
  .preview-column .section-heading{flex:0 0 auto;margin:0 0 5px;gap:7px}
  .preview-column .section-heading h2{font-size:15px;color:#f5f3ef}
  .preview-column .section-heading .step{color:var(--accent)}
  .paper-wrap{flex:1;min-height:0;padding:6px;border-radius:10px;overflow:hidden}
  .paper{width:100%;max-width:none;height:100%;min-height:0;padding:3px;align-items:center;justify-content:center;overflow:hidden}
  .paper canvas{width:auto;height:auto;max-width:100%;max-height:100%;image-rendering:pixelated;object-fit:contain}
  .preview-caption{flex:0 0 auto;margin-top:5px;font-size:7px}
  .tip-card{display:none}
  .editor-card{grid-row:2;order:1;min-height:0;padding:8px 11px 7px;border-radius:11px;box-shadow:none;overflow:visible}
  .editor-card .section-heading{display:none}
  .field-label{font-size:9px;margin-bottom:3px;line-height:1.2}
  .field-label span{font-size:8px}
  .text-input{font-size:16px;border-radius:7px;padding:7px 9px}
  .title-input{height:36px;margin-bottom:6px}
  .body-input{height:48px;min-height:48px;max-height:48px;resize:none;line-height:1.25}
  .upload-row{padding:7px 0 6px;margin-bottom:6px;gap:8px}
  .upload-row .field-label{margin-bottom:2px}
  .helper{font-size:9px}
  .upload-button{min-height:38px;padding:8px 11px;border-radius:7px;display:flex;align-items:center;justify-content:center;white-space:nowrap;font-size:10px}
  .photo-chip{margin-bottom:6px;padding:5px 8px;border-radius:6px;min-height:27px;font-size:9px}
  .photo-chip span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .photo-chip button{min-width:26px;min-height:26px}
  .settings-row{display:none}
  .action-row{grid-template-columns:1fr 1fr;gap:7px}
  .button{height:38px;min-height:38px;border-radius:7px;font-size:10px;padding:0 6px}
  .button-primary span{margin-left:3px}
  .save-button{height:38px;min-height:38px;margin-top:6px}
  .notice{min-height:0;padding-top:5px;font-size:8px;line-height:1.25}
  footer{display:none}
}
@media(max-width:380px){.shell{padding-left:10px;padding-right:10px}.editor-card{padding-left:9px;padding-right:9px}.action-row{grid-template-columns:1fr 1fr}.button{font-size:9px}}
@media(max-height:700px) and (max-width:760px){.topbar{height:44px;min-height:44px}.shell{height:calc(100dvh - 44px - env(safe-area-inset-bottom));padding-top:5px;padding-bottom:calc(5px + env(safe-area-inset-bottom))}.workspace{grid-template-rows:minmax(120px,1fr) auto;gap:5px}.editor-card{padding-top:6px;padding-bottom:5px}.title-input{height:32px;margin-bottom:4px}.body-input{height:40px;min-height:40px;max-height:40px}.upload-row{padding:5px 0;margin-bottom:4px}.upload-button{min-height:34px}.button,.save-button{height:34px;min-height:34px}.save-button{margin-top:4px}.notice{padding-top:3px}}
.copies-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 10px;padding:8px 10px;border:1px solid #343846;border-radius:8px;background:#20232d}.copies-label{display:flex;align-items:baseline;gap:9px}.copies-label strong{font-size:11px;color:#f3f2ed}.copies-label span{font-size:9px;color:#969ba9}.copy-stepper{display:flex;align-items:center;gap:6px}.copy-stepper button{width:32px;height:30px;border:1px solid #3e4351;border-radius:6px;background:#2a2e3a;color:#c4f36b;font-size:17px;line-height:1}.copy-stepper input{width:46px;height:30px;padding:3px;text-align:center;border:1px solid #3e4351;border-radius:6px;background:#11141b;color:#f5f3ef;font:14px 'Segoe UI',Arial,sans-serif}
@media(max-width:760px){.copies-row{min-height:32px;margin:4px 0;padding:4px 8px;border-radius:7px}.copy-stepper{gap:5px}.copy-stepper button{width:28px;height:26px}.copy-stepper input{width:40px;height:26px;font-size:16px}}
@media(max-height:700px) and (max-width:760px){.copies-row{min-height:28px;margin:3px 0;padding:3px 7px}.copy-stepper button{height:23px}.copy-stepper input{height:23px}}@media(max-width:760px){.topbar{height:calc(50px + env(safe-area-inset-top));min-height:calc(50px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}.shell{height:calc(100dvh - 50px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}}
@media(max-height:700px) and (max-width:760px){.topbar{height:calc(44px + env(safe-area-inset-top));min-height:calc(44px + env(safe-area-inset-top))}.shell{height:calc(100dvh - 44px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}}
.quality-row{grid-template-columns:1.35fr 1fr 1fr;gap:12px}.stop-button{width:100%;margin-top:7px;background:#a83e42;color:#fff;border:1px solid #c65559}.stop-button:hover{background:#c64c50}.stop-button[hidden]{display:none!important}
@media(max-width:760px){.quality-row{display:grid;grid-template-columns:minmax(112px,1.4fr) minmax(58px,1fr) minmax(58px,1fr);gap:5px;padding:4px 0 5px}.quality-row .field-label{font-size:8px;margin-bottom:2px}.quality-row .setting input[type=range]{height:17px}.quality-row .setting select{height:32px;padding:3px 4px}.stop-button{height:38px;min-height:38px;margin-top:6px}}
@media(max-height:700px) and (max-width:760px){.quality-row{gap:4px;padding:2px 0 3px}.quality-row .setting select{height:28px}.quality-row .setting input[type=range]{height:14px}.stop-button{height:34px;min-height:34px;margin-top:4px}}

/* Keep the preview geometry tied to the printer raster: 384 printable dots
   occupy 48 mm, centered on the 53 mm roll. Vertical whitespace comes only
   from the raster itself, never from decorative CSS padding. */
.paper{box-sizing:border-box;min-height:0;height:auto;padding:0 4.72%;display:block;overflow:visible}
.paper canvas{display:block;width:100%;height:auto;max-width:none;max-height:none;image-rendering:pixelated;object-fit:initial}
@media(max-width:760px){
  .paper-wrap{display:block;overflow:auto;overscroll-behavior:contain;touch-action:pan-y}
  .paper{width:100%;height:auto;min-height:0;flex:0 0 auto}
  .paper canvas{width:100%;height:auto;max-width:none;max-height:none}
}

/* T02 Web Print identity, release channels, and mobile onboarding */
.tab-view[hidden]{display:none!important}
.onboarding-note[hidden]{display:none!important}
.brand{font-size:14px;letter-spacing:.015em;white-space:nowrap}
.main-tabs{display:flex;align-items:center;gap:4px;margin-left:auto;margin-right:24px}
.main-tab{border:1px solid transparent;background:transparent;color:#a0a3ae;border-radius:7px;padding:8px 12px;font:600 11px var(--sans);cursor:pointer}
.main-tab:hover{color:#f5f3ef;background:#20242e}
.main-tab.is-active{color:#17190f;background:var(--accent)}
.topbar .connection{flex:0 0 auto}
.updates-view{max-width:820px;margin:0 auto;width:100%;padding:40px 20px 30px}
.updates-heading{margin-bottom:22px}.updates-heading h1{font-size:42px;margin:12px 0 5px}.updates-heading p{margin:0;color:#a0a3ae;font-size:13px}
.updates-card,.changelog-card{background:#1a1d26;border:1px solid #2d313e;border-radius:10px;padding:20px;margin-bottom:14px}
.updates-card-top{display:flex;justify-content:space-between;align-items:center;gap:12px}.updates-card-top .field-label,.changelog-card>.field-label{margin-bottom:7px;color:#9ca0ad}.updates-card h2,.changelog-card h2{font-family:var(--sans);font-size:17px;font-weight:650;color:#f5f3ef}
.updates-card-top .button{height:36px;padding:0 12px}
.channel-row{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:18px;padding:14px 0;border-top:1px solid #323643;border-bottom:1px solid #323643}
.channel-row strong{font-size:12px}.channel-row p{margin:5px 0 0;color:#a0a3ae;font-size:11px;line-height:1.45}
.channel-switch{display:flex;gap:4px;padding:3px;border:1px solid #353a47;border-radius:8px;background:#12141b;flex-shrink:0}
.channel-button{border:0;border-radius:5px;padding:7px 10px;background:transparent;color:#a0a3ae;font:600 10px var(--sans);cursor:pointer}
.channel-button.is-selected{background:#c4f36b;color:#17190f}.channel-button:disabled{opacity:.45;cursor:not-allowed}
.update-status{min-height:18px;margin:12px 0 0;color:#b8ed8e;font-size:11px;line-height:1.5}
.updates-actions{display:flex;justify-content:flex-end;margin-top:8px}
.text-button{border:0;background:transparent;color:#c4f36b;padding:8px 2px;font:600 11px var(--sans);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.changelog-list{display:grid;gap:14px;margin-top:17px}.changelog-entry{padding-top:13px;border-top:1px solid #323643}.changelog-entry:first-child{padding-top:0;border-top:0}
.changelog-entry h3{margin:0 0 4px;color:#f5f3ef;font:650 12px var(--sans)}.changelog-entry time{color:#9ca0ad;font:9px var(--mono)}
.changelog-entry ul{margin:9px 0 0;padding-left:18px;color:#c1c4cc;font-size:11px;line-height:1.55}.changelog-entry li+li{margin-top:3px}
.onboarding-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:18px;background:#05060bd9;backdrop-filter:blur(6px)}
.onboarding-backdrop[hidden]{display:none}
.onboarding-card{width:min(460px,100%);padding:24px;background:#1a1d26;border:1px solid #373c4b;border-radius:14px;box-shadow:0 24px 80px #0009}
.onboarding-card h2{margin:12px 0 14px;font:600 22px var(--sans);color:#f5f3ef}
.onboarding-card ol{margin:0;padding-left:21px;color:#e2e1dc;font-size:13px;line-height:1.6}.onboarding-card li+li{margin-top:8px}.onboarding-card strong{color:#c4f36b}
.onboarding-note{margin:14px 0 0;color:#a0a3ae;font-size:11px;line-height:1.5}
.onboarding-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px}.onboarding-actions .button{height:40px;padding:0 18px}
@media(max-width:760px){
  .topbar{gap:8px}.brand{font-size:12px;letter-spacing:0}.main-tabs{gap:1px;margin:0 auto}.main-tab{font-size:10px;padding:7px 9px}.topbar .connection{max-width:29%;font-size:9px}
  .shell{display:flex;flex-direction:column}
  #printView{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
  .updates-view{flex:1;min-height:0;overflow-y:auto;padding:16px 4px 24px;display:block}
  .updates-heading{margin-bottom:15px}.updates-heading h1{font-size:32px;margin:8px 0 3px}.updates-heading p{font-size:11px}
  .updates-card,.changelog-card{padding:14px;margin-bottom:10px;border-radius:9px}.updates-card-top .button{font-size:10px;height:34px;min-height:34px}.updates-card h2,.changelog-card h2{font-size:15px}
  .channel-row{align-items:flex-start;margin-top:12px;padding:11px 0}.channel-row p{max-width:190px;font-size:10px}.channel-button{padding:7px 8px}
  .update-status{font-size:10px}.changelog-list{gap:12px;margin-top:13px}.changelog-entry ul{font-size:10px}
  .onboarding-card{padding:20px;border-radius:12px}.onboarding-card h2{font-size:20px}.onboarding-card ol{font-size:12px}.onboarding-note{font-size:10px}
}
@media(max-width:370px){.brand{font-size:11px}.main-tab{padding:6px 7px}.topbar .connection{font-size:8px}}
