:root{--ink:#253b36;--teal:#1f5a51;--paper:#f7f6f0;--line:#dedfd5;--muted:#747d72;--accent:#c4a56f}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Noto Sans JP',sans-serif;font-size:14px;line-height:1.7}header{height:94px;max-width:1320px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 48px}.brand{display:flex;align-items:center;gap:12px;font-size:24px;font-weight:650;letter-spacing:.15em;color:inherit;text-decoration:none}.brand small{display:block;font-size:9px;letter-spacing:.16em;color:var(--muted);font-weight:500}.brandmark{font-size:42px;font-weight:300;color:var(--teal)}.badge{font-size:11px;color:var(--teal);border:1px solid #becdc5;border-radius:30px;padding:5px 12px}main{max-width:1320px;margin:auto;padding:0 48px}.intro{display:flex;justify-content:space-between;align-items:center;padding:42px 0 36px}.eyebrow{font-size:11px;letter-spacing:.16em;color:var(--teal);margin:0 0 8px}h1{font-family:Georgia,'Yu Mincho',serif;font-size:38px;font-weight:500;line-height:1.5;letter-spacing:.06em;margin:0 0 12px}.intro p:not(.eyebrow){font-size:13px;color:var(--muted);margin:0}.motif{display:flex;align-items:center;gap:28px;padding-right:35px}.motif span{writing-mode:vertical-rl;font-family:Georgia,serif;font-size:12px;color:#859184;letter-spacing:.15em}.motif div{display:grid;grid-template-columns:repeat(12,9px);gap:3px;transform:rotate(-9deg)}.motif i{height:9px;width:9px;background:#dfe4d8;border-radius:1px}.motif i.dark{background:#769384}.workspace{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px}aside,.editor{display:flex;flex-direction:column;gap:20px}.panel{border:1px solid var(--line);border-radius:14px;background:#fffefa;padding:24px}.step{display:flex;align-items:center;gap:11px;margin-bottom:20px}.step b{font:italic 19px Georgia,serif;color:var(--accent)}h2{font-size:16px;font-weight:600;margin:0}.upload{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed #9eafa0;background:#f3f6ef;cursor:pointer;border-radius:9px;padding:20px 4px;min-height:146px}.upload-icon{font-size:28px;color:var(--teal);line-height:1.2}.upload strong{font-size:13px;margin:10px 0 4px}.upload small{font-size:10px;color:var(--muted)}.hint{font-size:11px;color:var(--muted);line-height:1.9;margin:12px 0 0}button,input,select{font:inherit}button{border:1px solid var(--line);border-radius:7px;min-height:40px;background:#fffefa;color:var(--ink);padding:8px 12px;font-size:12px;cursor:pointer;transition:background .15s}button:hover{background:#edf2ea}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}.primary{background:var(--teal);border-color:var(--teal);color:white}.primary:hover{background:#184b43}.full{width:100%;margin-top:18px}.buttonrow{display:flex;gap:7px;margin-top:14px}.buttonrow button{flex:1;font-size:10px;padding:5px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fields label,.field{font-size:11px;color:var(--muted)}input:not([type=range]):not([type=color]),select{display:block;width:100%;background:#fff;border:1px solid var(--line);border-radius:6px;padding:10px;margin-top:6px;color:var(--ink);min-height:43px}input[type=range]{width:100%;accent-color:var(--teal)}.field{display:block;margin-top:16px}.range-label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin:18px 0 5px}.range-label output{color:var(--teal)}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.dimensions{font-size:11px;padding:5px 10px;background:#edf2e9;border-radius:5px;white-space:nowrap}.toolbar{display:flex;flex-wrap:wrap;gap:6px;margin:22px 0 14px}.toolbar button{font-size:11px;min-height:36px;padding:6px 10px}.palette{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.coloritem{display:flex;align-items:center;gap:4px}.swatch{width:32px;height:32px;min-height:32px;padding:0;border:1px solid #bcbfb8;box-shadow:inset 0 0 0 2px #fff}.swatch.selected{outline:2px solid var(--teal);outline-offset:2px}.coloritem input{width:19px;height:25px;border:0;padding:0;background:none;cursor:pointer}.coloritem small{font-size:9px;color:var(--muted)}.canvaswrap{background:#f1f1e9;border:1px solid var(--line);border-radius:8px;padding:24px;max-height:560px;min-height:250px;overflow:auto;overscroll-behavior:contain}#chart{display:block;max-width:none;image-rendering:pixelated;touch-action:none;background:#fff;box-shadow:0 3px 18px #253b3612;cursor:crosshair}.chartfoot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:10px;color:var(--muted)}.chartfoot label{display:flex;align-items:center;gap:8px}.chartfoot select{width:auto;font-size:10px;padding:3px;margin:0;min-height:29px}#status{font-size:11px;padding:12px 14px;background:#edf3ec;border-radius:6px;margin:16px 0 0;color:var(--teal)}#status.error{background:#fff0e8;color:#a14d31}.exportbuttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.exportbuttons button{padding:14px;text-align:left;font-size:13px}.exportbuttons small{display:block;font-size:10px;opacity:.7;margin-top:4px}.exports .field{margin:0}.sourcecanvas{margin-top:16px;max-height:500px;overflow:auto}#source{display:block;width:100%;height:auto;touch-action:none}.filelist{display:flex;flex-direction:column;gap:5px;max-height:180px;overflow:auto;margin-top:10px}.filelist button{min-height:32px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.filelist button.active{background:#edf3ec;border-color:#99b4a1}footer{margin:36px 0 24px;padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;font-size:10px;color:var(--muted)}a{color:var(--teal)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.mobile{display:none}[hidden]{display:none!important}@media(max-width:950px){header{padding:0 24px}main{padding:0 24px}.workspace{grid-template-columns:260px minmax(0,1fr);gap:16px}.panel{padding:20px}.motif{padding-right:0;gap:10px}.motif div{grid-template-columns:repeat(12,7px);gap:2px}.motif i{width:7px;height:7px}h1{font-size:30px}.canvaswrap{padding:14px}}@media(max-width:700px){header{height:80px;padding:0 20px}.brand{font-size:21px}.brand small{font-size:8px}.badge{font-size:9px;padding:3px 9px}main{padding:0 16px}.intro{padding:30px 4px 28px}.intro h1{font-size:29px}.intro p:not(.eyebrow){font-size:11px}.motif{display:none}.workspace{display:flex;flex-direction:column;gap:16px}aside{gap:16px}.panel{padding:20px;border-radius:12px}.editor{gap:16px}.upload{min-height:110px;padding:14px}.upload strong{margin:5px 0}.toolbar{gap:5px}.toolbar button{font-size:10px;padding:7px 9px;min-height:40px}.canvaswrap{max-height:480px;min-height:200px;padding:12px}.chartpanel .section-head{align-items:flex-start}.dimensions{font-size:10px}.exportbuttons button{font-size:12px;padding:12px}footer{flex-direction:column;margin-top:28px}.buttonrow button{font-size:11px;min-height:40px}}

.gridcheck{display:flex;align-items:center;gap:8px;font-size:12px;margin-top:16px}.gridcheck input{accent-color:var(--teal)}.source .section-head{flex-wrap:wrap}.source .buttonrow{margin:0}.source .buttonrow button{font-size:11px;white-space:nowrap}

.suggestion{font-size:12px;color:var(--teal);background:#edf3ec;border-radius:7px;padding:12px;line-height:1.8;margin:12px 0 0}.photo-turn{justify-content:flex-start;margin-top:14px}.photo-turn button{flex:none;min-height:42px;padding:8px 12px}

.gauge-settings{background:#f4f6f0;border:1px solid var(--line);border-radius:8px;padding:14px;margin:16px 0}.gauge-settings>.field{margin:0 0 12px}.gauge-settings .fields{max-width:420px}.gauge-settings .fields label{font-size:11px}

.drawing-tools{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 0}.drawing-tools button{min-height:44px}.drawing-tools button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:white}.drawing-tools+.hint{margin-bottom:16px}.background-choice{font-size:11px;color:var(--muted);display:flex;gap:10px;align-items:center;flex-wrap:wrap}.background-choice select{width:auto;min-width:145px;margin:0;font-size:11px}.resize-settings{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin:16px 0}.resize-settings summary{cursor:pointer;font-size:12px;font-weight:600;min-height:28px}.resize-axis{display:grid;grid-template-columns:80px 1fr 1fr;align-items:center;gap:10px;margin-top:16px}.resize-axis strong{font-size:12px}.resize-axis label{font-size:11px;color:var(--muted)}.resize-axis .buttonrow{grid-column:2/4;margin:0}.resize-axis .buttonrow button{font-size:11px;min-height:42px}#chart{touch-action:auto;cursor:grab}
.entry-tabs{display:flex;gap:6px;margin:0 0 18px}.entry-tabs button{flex:1;min-height:44px;font-size:11px}.entry-tabs button[aria-pressed=true],.corner-select button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:white}.input-status,.source-status{font-size:12px;padding:12px;border-radius:7px;background:#edf3ec;color:var(--teal);line-height:1.8}.input-status.error,.source-status.error{background:#fff0e8;color:#a14d31}#blankPane .fields{margin-top:14px}.filelist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:340px}.filelist .filecard{display:flex;flex-direction:column;align-items:stretch;white-space:normal;padding:6px;gap:3px;border-radius:8px}.filecard img{width:100%;height:90px;object-fit:contain;border-radius:4px;background:#f0f0e9;image-rendering:auto}.filecard span{font-size:11px}.filecard small{font-size:9px;color:var(--muted)}.filelist .filecard.active{outline:2px solid var(--teal);outline-offset:-2px;background:#edf3ec}.empty-state{padding:36px;min-height:260px}.empty-state>p:not(.eyebrow){font-size:13px;color:var(--muted)}.corner-tools{border:1px solid var(--line);border-radius:9px;padding:12px;margin:16px 0;background:#f5f6f1}.corner-select{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.corner-select button{min-height:44px;padding:6px 4px;font-size:11px}.loupe-row{display:flex;justify-content:center;align-items:center;gap:24px;margin-top:12px}.loupe-row span{font-size:10px;color:var(--muted)}#loupe{display:block;width:180px;height:150px;border:2px solid var(--teal);border-radius:8px;margin-top:4px}.nudge{text-align:center}.nudge>span{display:block;margin-bottom:8px}.nudge button{width:42px;min-height:42px;font-size:17px;padding:5px}.nudge>div{display:flex;gap:4px;margin-top:4px}.read-button{min-height:50px;font-size:15px}.sourcecanvas{max-height:650px;border:1px solid var(--line);border-radius:8px;background:#eff1e9}.source .section-head{scroll-margin-top:15px}@media(max-width:700px){.filelist{grid-template-columns:repeat(3,minmax(0,1fr));max-height:320px}.filecard img{height:82px}.loupe-row{gap:12px;flex-wrap:wrap}#loupe{width:150px;height:125px}.corner-select button{font-size:10px}.nudge button{width:38px;min-height:42px}.empty-state{min-height:180px;padding:25px}}


.gridcheck input[type=checkbox]{width:18px;height:18px;min-height:18px;margin:0;display:inline-block;flex:0 0 18px}.sourcecanvas{max-height:none;overflow:visible}#source{margin:0 auto;max-width:100%}

/* Crop labels are DOM text so desktop scaling cannot blur canvas numbers. */
.sourcecanvas{position:relative}#cropLabels{position:absolute;inset:0;pointer-events:none}.crop-handle{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:white;color:#1f5a51;border:2px solid #1f5a51;font:700 18px/1 -apple-system,BlinkMacSystemFont,sans-serif;box-shadow:0 1px 5px #0002}.crop-handle.active{background:#1f5a51;color:white;border-color:white}.loupe-row span{font-size:14px;color:var(--ink)}#loupe{width:280px;height:210px;max-width:100%;image-rendering:pixelated}.corner-select button{font-size:14px}.fields input[type=number],.dimensions{font-size:16px;font-weight:600}.nudge button{width:44px;min-height:44px}#placeTools button{font-size:13px;min-height:44px}#placeStatus{color:var(--teal);font-size:13px}@media(max-width:700px){#loupe{width:200px;height:150px}.loupe-row{gap:12px}.corner-tools.dragging #loupe{width:200px;height:150px}}

/* Automatic recognition is the primary mobile flow; no floating magnifier. */
button,summary{touch-action:manipulation}.adjust-details{margin-top:16px;border:1px solid var(--line);border-radius:9px;padding:12px}.adjust-details>summary{font-size:15px;font-weight:600;min-height:44px;cursor:pointer}.adjust-details #readSettings{padding:8px 0;border:0;background:transparent}.adjust-details .step{display:none}.auto-summary{font-size:16px;font-weight:600;color:var(--teal)}#source{touch-action:pan-y}.sourcecanvas{overflow:hidden}.source .source-status{margin-top:12px}#autoRead{min-height:52px;font-size:17px}#manualCrop .loupe-row{position:static;box-shadow:none}#manualCrop .nudge{display:block}#manualCrop #loupe{width:180px;height:135px}#manualCrop .loupe-row{gap:12px}#manualCrop .corner-tools{padding:8px}#manualCrop .corner-select button{font-size:13px}@media(max-width:700px){input:not([type=range]):not([type=color]),select,textarea{font-size:16px!important}button{min-height:44px}#manualCrop .loupe-row{flex-wrap:wrap}#manualCrop .nudge button{width:44px}#manualCrop .corner-select{grid-template-columns:repeat(2,1fr)!important}.sourcecanvas{margin-top:8px}#sourcePanel{padding:16px}#sourcePanel .hint{font-size:12px}.auto-summary{font-size:15px}}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

.filetile{min-width:0;display:flex;flex-direction:column;gap:4px}.filetile .filecard{width:100%}.remove-photo{min-height:40px;color:#93462e;font-size:13px}#removeNotice{font-size:13px;color:var(--teal);margin-top:12px}#undoRemove{margin-top:8px;width:100%}.crop-editing{overflow:hidden}#sourceStage.manual-stage{position:fixed;inset:0;z-index:200;background:#f7f6f0;display:flex;flex-direction:column;padding:max(8px,env(safe-area-inset-top)) 10px max(8px,env(safe-area-inset-bottom));height:100svh;overscroll-behavior:none;overflow:hidden}.manual-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;min-height:48px;font-size:15px}.manual-top button{min-height:44px;font-size:14px}.manual-stage .sourcecanvas{flex:1;min-height:80px;display:flex;align-items:center;justify-content:center;margin:4px 0;overflow:hidden}.manual-stage #manualCrop{flex-shrink:0}.manual-stage .corner-tools{margin:0;padding:6px;border:0}.manual-stage .corner-select{grid-template-columns:repeat(4,1fr)!important;gap:4px}.manual-stage .corner-select button{min-height:40px;padding:4px;font-size:13px!important}.manual-stage #manualCrop .loupe-row{margin:4px 0;gap:16px;flex-wrap:nowrap}.manual-stage #manualCrop #loupe{width:140px;height:90px;margin:0}.manual-stage #manualCrop .loupe-row span{font-size:11px}.manual-stage .nudge>span{display:none}.manual-stage .nudge button{width:44px;min-height:40px;height:40px;padding:3px}.manual-stage .nudge>div{margin-top:0}.manual-stage #manualRead{margin-top:4px;min-height:44px;font-size:15px}.manual-advanced{position:relative;font-size:12px}.manual-advanced>summary{min-height:30px;cursor:pointer}.manual-advanced[open]{max-height:33svh;overflow:auto}.manual-advanced .field,.manual-advanced .gridcheck{margin-top:4px}.manual-advanced .hint{margin:0}.manual-advanced .buttonrow{margin-top:4px}.manual-stage #manualCrop .corner-tools{padding:4px}.manual-stage #source{max-width:100%}@media(max-height:580px){.manual-stage #manualCrop #loupe{width:100px;height:64px}.manual-stage .corner-select button{min-height:34px}.manual-stage .nudge button{min-height:32px;height:32px}}

/* Fixed workspace: menu / active image / tools. */
body{height:100svh;overflow:hidden}header{height:64px;max-width:none;padding:0 20px}main{max-width:none;padding:12px;height:calc(100svh - 64px)}.intro,footer{display:none}.workspace{height:100%;display:grid!important;grid-template-columns:100px minmax(0,1fr) 250px;gap:12px;grid-template-rows:minmax(0,1fr)}.workspace>aside:not(.right-tools),.workspace>.editor{display:contents}.workspace [data-page]{grid-column:2;grid-row:1;margin:0;min-height:0;overflow:auto}.app-nav{grid-column:1;grid-row:1;display:flex;flex-direction:column;gap:10px;padding-top:4px}.app-nav button{min-height:52px;font-size:15px}.app-nav button[aria-pressed=true]{background:var(--teal);color:white}.right-tools{grid-column:3;grid-row:1;min-height:0;overflow:auto;padding:10px;background:#fffefa;border:1px solid var(--line);border-radius:12px}.right-tools .toolbar,.right-tools .drawing-tools{margin:0 0 12px;display:grid;grid-template-columns:1fr;gap:6px}.right-tools button{font-size:13px;min-height:44px}.right-tools .toolbar button{font-size:13px}.right-tools .palette{margin-top:12px}.right-tools .hint{font-size:11px}.right-tools .fields{grid-template-columns:1fr}.right-tools .gauge-settings{margin:0;padding:0;border:0}.right-tools .resize-axis{display:flex;flex-direction:column;align-items:stretch}.right-tools .resize-axis .buttonrow{display:grid}.right-tools .adjust-details{margin:0;border:0;padding:0}.right-tools #readSettingsDetails>summary{display:none}.right-read,.right-edit,.right-gauge{display:none}body[data-screen=chart] .right-edit,body[data-screen=gauge] .right-gauge,body[data-screen=source] .right-read{display:block}body[data-page=photos] .workspace [data-page]:not([data-page=photos]),body[data-page=source] .workspace [data-page]:not([data-page=source]),body[data-page=chart] .workspace [data-page]:not([data-page=chart]),body[data-page=save] .workspace [data-page]:not([data-page=save]){display:none!important}body[data-page=photos] .right-tools,body[data-page=save] .right-tools{visibility:hidden}.workspace #chartPanel{display:flex;flex-direction:column;overflow:hidden;padding:16px}.chartpanel>.hint{display:none}.chartpanel .section-head{flex-shrink:0}.chartpanel .eyebrow{display:none}.chartpanel .canvaswrap{flex:1;min-height:0;max-height:none;display:flex;align-items:center;justify-content:center;margin-top:12px;padding:12px}.chartpanel .chartfoot{flex-shrink:0}#status{font-size:12px;margin-top:8px;max-height:64px;overflow:auto}.workspace #sourcePanel{display:flex;flex-direction:column;overflow:hidden;padding:16px}#sourcePanel>.hint{display:none}#sourcePanel>.source-status{font-size:11px;padding:6px;margin:6px 0}#sourcePanel .auto-summary{font-size:12px;margin:4px 0}#manualToggle{margin-top:4px;min-height:40px}#sourceStage:not(.manual-stage){flex:1;min-height:0;display:flex;flex-direction:column}#sourceStage:not(.manual-stage) .sourcecanvas{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;margin-top:6px}#autoRead{margin-top:6px;flex-shrink:0}.right-tools .background-choice select{min-width:0;width:100%}#emptyState{align-self:stretch}.right-tools .coloritem{flex-wrap:wrap}.right-tools .resize-settings{padding:6px}.right-tools .resize-settings summary{font-size:12px}body[data-screen=gauge] .right-tools{padding:12px}
@media(max-width:700px){header{height:50px;padding:0 10px}.brand{font-size:18px}.brand small{display:none}.brandmark{font-size:28px}.badge{font-size:9px}main{height:calc(100svh - 50px);padding:6px}.workspace{grid-template-columns:58px minmax(0,1fr) 88px;gap:5px}.app-nav{gap:7px}.app-nav button{padding:5px 1px;font-size:12px;min-height:48px}.right-tools{padding:5px;border-radius:8px}.right-tools button,.right-tools .toolbar button{font-size:11px;padding:4px 1px;min-height:40px}.right-tools .hint{font-size:10px}.right-tools .palette{gap:8px}.right-tools .swatch{width:28px;height:28px;min-height:28px}.right-tools .background-choice{font-size:10px}.right-tools .gauge-settings .fields label{font-size:10px}.right-tools .field{font-size:11px}.right-tools .fields{gap:6px}.right-tools input,.right-tools select{padding:6px 2px!important}.workspace #chartPanel,.workspace #sourcePanel{padding:6px;border-radius:8px}.chartpanel .section-head{flex-direction:column;gap:4px}.chartpanel h2{font-size:13px}.chartpanel .dimensions{font-size:12px;padding:2px 4px}.chartpanel .canvaswrap{padding:4px;margin-top:6px}.chartfoot{flex-wrap:wrap;font-size:9px;gap:4px}.chartfoot span{font-size:9px}#status{font-size:10px;padding:5px;max-height:52px}#sourcePanel h2{font-size:13px}#autoRead{font-size:12px;min-height:44px}#manualToggle{font-size:11px}#photosPanel{padding:10px}.entry-tabs{flex-direction:column}.filelist{grid-template-columns:1fr}.filecard img{height:100px}#photosPanel .step h2{font-size:13px}#photosPanel .upload strong{font-size:12px}#photosPanel .upload small{font-size:9px}.exports{padding:10px}.exportbuttons{grid-template-columns:1fr}.exports h2{font-size:14px}.exports .step{margin-bottom:12px}}

body.no-pattern .right-edit,body.no-pattern .right-gauge{display:none}

.repeat-summary{font-size:12px;color:var(--teal);margin:5px 0;flex-shrink:0;max-height:55px;overflow:auto}#sourceCounts{padding:6px;border:2px solid #9bb7ac;border-radius:8px;margin-top:6px;flex-shrink:0}#sourceCounts strong{font-size:12px}#sourceCounts .fields{gap:8px}#sourceCounts .fields input{margin-top:2px;min-height:36px;font-size:17px;font-weight:600}#countHint{font-size:10px;margin:3px 0}#sourceCounts .fields label{font-size:12px}.app-nav button{font-size:13px}@media(max-width:700px){#sourceCounts{padding:3px}#sourceCounts strong{font-size:10px}#sourceCounts .fields{gap:4px}#sourceCounts .fields label{font-size:10px}.app-nav button{font-size:10px}.manual-top strong{font-size:11px}.manual-top button{font-size:11px;padding:4px;min-height:40px}#countHint{display:none}.repeat-summary{font-size:10px;max-height:48px}}

/* 0.18 — a quiet, precise pattern studio. */
:root{--ink:#243a36;--teal:#235a4e;--paper:#eef0ed;--line:#dce2dc;--muted:#748079;--accent:#8c9d86}
body{background:var(--paper);font-size:14px;-webkit-font-smoothing:antialiased}
header{height:72px;padding:0 28px;background:#fafbf8;border-bottom:1px solid #dce2dc}
.brand{gap:13px;font-size:23px;letter-spacing:.09em;font-weight:650}.brand small{font-size:8px;letter-spacing:.22em;margin-top:1px}.brandmark{display:grid;grid-template-columns:repeat(3,7px);gap:3px;width:34px;height:34px;align-content:center;justify-content:center;transform:rotate(-7deg)}.brandmark i{width:7px;height:7px;background:var(--teal);border-radius:1px}.brandmark i:nth-child(2),.brandmark i:nth-child(4),.brandmark i:nth-child(9){opacity:.2}.badge{border:0;background:#e9eee7;font-size:10px;letter-spacing:.1em;padding:6px 12px;color:#61746a}
main{height:calc(100svh - 72px);padding:16px}.workspace{grid-template-columns:88px minmax(0,1fr) 252px;gap:16px}
.app-nav{background:#193f36;border-radius:16px;padding:12px 7px;gap:8px;box-shadow:0 7px 20px #193f3610}.app-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:0;color:#c0d0c7;background:transparent;font-size:11px;min-height:76px;border-radius:10px;letter-spacing:.03em;font-weight:500}.app-nav svg{width:23px;height:23px}.app-nav button:hover{background:#ffffff0b;color:#fff}.app-nav button[aria-pressed=true]{color:#193f36;background:#e4eddf;box-shadow:0 2px 5px #0b2d2520}.app-nav button:disabled{opacity:.32}.app-nav button:last-child{margin-top:auto}.app-nav button:focus-visible{outline-color:#e4eddf}
.panel,.right-tools{background:#fcfdfb;border:1px solid #dce2dc;border-radius:16px;box-shadow:0 3px 14px #273c3204}.panel{padding:28px}.right-tools{padding:18px 14px}.workspace #chartPanel,.workspace #sourcePanel{padding:20px;border-radius:16px}.section-head{min-height:40px}h2{font-size:17px;font-weight:650;letter-spacing:.02em}.step{margin-bottom:22px}.step b{font:500 11px/1.4 -apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.08em;color:#728578;border:1px solid #d7e1d6;border-radius:6px;padding:6px}.dimensions{font-size:12px;font-variant-numeric:tabular-nums;color:#426052;background:#eaf0e6;border-radius:7px;padding:6px 11px;letter-spacing:.03em}
button{border-color:#d6dfd6;border-radius:8px;background:#fcfdfb;font-size:12px;transition:background .16s,box-shadow .16s,border-color .16s;box-shadow:0 1px 2px #183d3004;font-weight:500}button:hover{background:#edf2e9;border-color:#b7c8b9}button:active{transform:none;background:#e5ecdf}button:disabled{box-shadow:none}.primary{background:var(--teal);border-color:var(--teal);box-shadow:0 3px 8px #235a4e16}.primary:hover{background:#1b483e;border-color:#1b483e}.primary:active{background:#173e35}
input:not([type=range]):not([type=color]),select{border-color:#d6dfd6;border-radius:8px;background:#fff;box-shadow:inset 0 1px 2px #1d463204}.fields label,.field{font-weight:500}.hint{color:#748079;line-height:1.8}.entry-tabs{background:#edf1eb;border-radius:10px;padding:4px;gap:3px;max-width:480px}.entry-tabs button{border:0;background:transparent;color:#6d7c70;box-shadow:none;min-height:42px}.entry-tabs button[aria-pressed=true]{background:white;color:#244e3e;box-shadow:0 2px 6px #2849350b}
#photosPanel{padding:30px;grid-column:2 / 4}.upload{border:1px dashed #a4bba6;background:#f1f5ee;border-radius:14px;min-height:240px;margin-top:24px;transition:background .16s}.upload:hover{background:#eaf1e4}.upload-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;border:1px solid #d1dfcc;background:#fff;color:#335b42;font-size:27px;font-weight:300}.upload strong{font-size:15px;margin:16px 0 5px}.upload small{font-size:11px;letter-spacing:.04em}#photoPane>.hint{max-width:600px}.input-status{margin-top:22px;background:transparent;border-top:1px solid #e2e8df;border-radius:0;padding:16px 0 0;color:#768477;font-size:12px}.filelist{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));max-height:280px;gap:12px}.filelist .filecard{padding:7px;background:#fff;border-color:#e0e7dd}.filecard img{height:110px;background:#f1f3ed}.filetile{gap:6px}.remove-photo{border:0;background:transparent;color:#96746a;font-size:11px;box-shadow:none}.filelist .filecard.active{outline-color:#4c7859;background:#f0f5eb}#blankPane{max-width:520px}
body[data-page=photos] .right-tools,body[data-page=save] .right-tools{display:none}.workspace #exportsPanel{grid-column:2 / 4;padding:30px}.exports>.field{max-width:560px}.exportbuttons{max-width:850px;gap:14px}.exportbuttons button{border-radius:12px;padding:22px;font-size:15px;min-height:98px}.exportbuttons small{font-size:11px;font-weight:400;margin-top:8px}.exports>.hint{max-width:850px}.exports .resize-settings{max-width:850px}
.chartpanel .canvaswrap{background-color:#e9eee7;background-image:radial-gradient(#b7c7b245 .7px,transparent .7px);background-size:10px 10px;border:1px solid #dfe6da;border-radius:10px;margin-top:16px;padding:20px}#chart{box-shadow:0 8px 30px #1f3e3212}.chartfoot{margin-top:12px;color:#71806f;font-size:11px}.chartfoot select{border-color:#d9e2d5;border-radius:6px}#status{background:#f0f4ed;color:#56705b;border-radius:7px;font-size:11px;font-weight:400;padding:9px 12px}.repeat-summary:empty{display:none}.repeat-summary{font-size:11px;color:#5c765e}
.right-edit:before,.right-gauge:before,.right-read:before{display:block;font-size:10px;letter-spacing:.18em;color:#788b77;padding:0 0 14px;margin-bottom:14px;border-bottom:1px solid #e5eae1;content:'EDIT TOOLS'}.right-gauge:before{content:'GAUGE'}.right-read:before{content:'READ SETTINGS'}.right-tools .toolbar{grid-template-columns:1fr 1fr;gap:6px;padding-bottom:14px;border-bottom:1px solid #e5eae1;margin-bottom:14px}.right-tools .toolbar button{font-size:11px;min-height:38px;padding:6px}.right-tools .drawing-tools{grid-template-columns:1fr;gap:6px}.drawing-tools button[aria-pressed=true]{background:#e9f0e3;color:#244e3e;border-color:#95b18b;box-shadow:none}.right-tools .palette{gap:12px;margin:18px 0}.swatch{border-radius:7px;box-shadow:inset 0 0 0 3px #fff}.swatch.selected{outline:2px solid #60845c;outline-offset:2px}.right-tools .background-choice{font-size:11px;line-height:1.7}.right-tools .resize-settings{border:0;border-top:1px solid #e0e7dc;border-radius:0;padding:14px 0 0;margin-top:20px}.right-tools .resize-settings summary{font-size:11px;color:#4b654d}.right-tools .hint{font-size:11px}.right-tools #toolHint{color:#7d8977}.right-tools .suggestion{background:#f0f4eb;font-size:11px}.right-tools .full{font-size:11px}
#sourceCounts{border:1px solid #d9e3d3;background:#f3f6ef;border-radius:9px;padding:10px;margin-top:8px}#sourceCounts strong{font-size:11px;font-weight:500;color:#6b7e66}#sourceCounts .fields{margin-top:3px}#sourceCounts .fields input{font-size:18px;min-height:38px}#sourcePanel>.source-status{background:transparent;color:#73806e;padding:0;margin:5px 0}#manualToggle{align-self:flex-start;width:auto;padding:6px 12px;border-radius:7px;font-size:11px;min-height:34px}#autoRead{border-radius:9px;font-size:14px;min-height:48px}.sourcecanvas{background:#edf1e9;border-color:#dce5d6;border-radius:9px}#sourceStage.manual-stage{background:#f2f5ee}.empty-state{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.empty-state h2{font-size:24px;letter-spacing:.04em}.empty-state .eyebrow{font-size:10px;letter-spacing:.2em}.empty-state:before{content:'＋';font-size:34px;font-weight:300;color:#97ad8c;display:grid;place-items:center;width:76px;height:76px;border:1px solid #dce5d4;border-radius:22px;margin-bottom:24px;background:#f0f5e9}
@media(max-width:900px) and (min-width:701px){.workspace{grid-template-columns:74px minmax(0,1fr) 212px;gap:10px}.right-tools{padding:14px 10px}}
@media(max-width:700px){header{height:54px;padding:0 13px}.brand{font-size:19px;gap:8px}.brandmark{width:27px;height:27px;grid-template-columns:repeat(3,6px);gap:2px}.brandmark i{width:6px;height:6px}.badge{font-size:8px;padding:4px 8px}main{height:calc(100svh - 54px);padding:7px 6px 7px}.workspace{grid-template-columns:50px minmax(0,1fr) 82px;gap:5px}.app-nav{border-radius:12px;padding:7px 3px;gap:5px}.app-nav button{min-height:62px;gap:5px;font-size:9px;border-radius:8px;padding:5px 0}.app-nav svg{width:20px;height:20px}.right-tools{padding:8px 5px;border-radius:11px}.right-tools .toolbar{grid-template-columns:1fr;gap:5px;margin-bottom:10px;padding-bottom:10px}.right-tools .toolbar button,.right-tools button{font-size:10px;min-height:40px;padding:4px 2px}.right-tools .drawing-tools{gap:5px;margin-bottom:8px}.right-edit:before,.right-gauge:before,.right-read:before{font-size:7px;letter-spacing:.09em;padding-bottom:8px;margin-bottom:8px}.right-tools .hint{font-size:9px}.right-tools .palette{gap:9px;margin:12px 0}.right-tools .background-choice{font-size:9px}.right-tools .resize-settings{padding-top:10px;margin-top:14px}.right-tools .resize-settings summary{font-size:10px}.workspace #chartPanel,.workspace #sourcePanel{padding:7px;border-radius:11px}.chartpanel .section-head{align-items:flex-start;min-height:0;gap:6px}.chartpanel h2,#sourcePanel h2{font-size:12px;letter-spacing:0}.dimensions{font-size:11px!important;padding:3px 6px!important}.chartpanel .canvaswrap{padding:5px;margin-top:9px;border-radius:7px}.chartfoot{margin-top:8px;font-size:9px}#status{font-size:9px;line-height:1.6;padding:6px;max-height:48px}.workspace #photosPanel,.workspace #exportsPanel{padding:17px 13px;border-radius:11px}#photosPanel .step h2{font-size:15px}.step{gap:9px}.step b{font-size:10px;padding:4px}.entry-tabs{flex-direction:row;margin-bottom:16px}.entry-tabs button{font-size:10px;padding:6px 3px;min-height:44px}.upload{min-height:210px;margin-top:16px;padding:20px 5px}.upload strong{font-size:13px!important;margin-top:15px}.upload small{font-size:9px!important}.upload-icon{width:42px;height:42px;border-radius:12px}.filelist{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.filecard img{height:100px}#sourceCounts{padding:5px;margin-top:5px}#sourceCounts strong{font-size:9px;line-height:1.4;display:block}#sourceCounts .fields input{min-height:36px;font-size:16px}#manualToggle{font-size:9px;padding:5px;min-height:36px;width:100%}#autoRead{font-size:11px;min-height:44px}.exportbuttons{grid-template-columns:1fr;gap:10px}.exportbuttons button{padding:17px;min-height:80px;font-size:13px}.exportbuttons small{font-size:10px;margin-top:5px}.empty-state h2{font-size:16px}.empty-state:before{width:48px;height:48px;border-radius:14px;margin-bottom:16px}.empty-state>p:not(.eyebrow){font-size:10px}.manual-top button{min-height:42px}.manual-stage .corner-tools{background:transparent}
}
@media(prefers-reduced-motion:reduce){button,.upload{transition:none}}

/* Keep whole-chart clear visible at the top of the tools. */
.right-tools .toolbar #clearChart{grid-column:1 / -1;background:#f2f5ed;border-color:#cbd8c5;color:#3e6247;min-height:44px}

.repeat-size{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.repeat-size strong{font-size:12px}.right-edit>.resize-settings{margin:0 0 14px}.right-edit>.resize-settings>summary{min-height:40px;padding:8px 0}.repeat-size label{display:block;font-size:11px;margin-top:8px}.repeat-size button{margin-top:12px;width:100%}

.symbol-palette .coloritem{width:100%;gap:6px;flex-wrap:nowrap}.symbol-preview{width:28px;height:28px;border:1px solid #ccd6ca;border-radius:4px;image-rendering:pixelated;background:white;flex-shrink:0}.symbol-palette .coloritem small{font-size:10px}.symbol-palette .coloritem input{min-width:20px}.symbol-palette .swatch{flex-shrink:0}@media(max-width:700px){.right-tools .symbol-palette .coloritem{flex-wrap:wrap;gap:4px}.symbol-preview{width:24px;height:24px}.symbol-palette .coloritem small{font-size:9px}}

.chart-counts{flex-shrink:0;margin-top:10px;padding:9px;background:#f0f4ed;border-radius:8px}.chart-counts .fields{gap:8px}.chart-counts input{font-size:16px!important;min-height:38px!important;padding:5px 8px!important;margin-top:3px!important}.count-actions{display:flex;gap:6px;margin-top:7px}.count-actions button{flex:1;font-size:11px;min-height:38px;padding:4px}.chart-counts p{font-size:10px;line-height:1.4;color:#5c705f;margin:5px 0 0}@media(max-width:700px){.chart-counts{margin-top:6px;padding:5px}.chart-counts label{font-size:10px}.count-actions{flex-wrap:wrap}.count-actions button{font-size:10px;min-width:68px}.chart-counts p{font-size:9px}}

.sensitivity{padding:0 0 12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.sensitivity>strong{font-size:12px}.sensitivity .range-label{margin:9px 0 4px;font-size:11px;gap:4px;flex-wrap:wrap}.sensitivity output{font-variant-numeric:tabular-nums;font-weight:600}.sensitivity input[type=range]{display:block;min-height:32px;margin:0;touch-action:pan-y}.sensitivity .gridcheck{font-size:11px;gap:5px;margin:5px 0}.sensitivity button{width:100%;margin-top:6px}.sensitivity p{font-size:10px;line-height:1.5;color:var(--muted);margin:6px 0 0}@media(max-width:700px){.sensitivity>strong{font-size:10px}.sensitivity .range-label,.sensitivity .gridcheck{font-size:9px}.sensitivity p{font-size:9px}.sensitivity output{font-size:12px}.sensitivity button{line-height:1.5;padding:5px 2px;min-height:48px}}

.chartpanel .canvaswrap.zoomed{align-items:flex-start;justify-content:flex-start}.canvaswrap{touch-action:none}#chart{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
