:root{--bg:#f8fafc;--card:#fff;--text:#0f172a;--muted:#64748b;--accent:#2563eb;--ring:#93c5fd;--border:#e2e8f0}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}.container{max-width:1200px;margin:0 auto;padding:24px}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;box-shadow:0 1px 2px #0000000a}.hstack{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.vstack{display:grid;gap:12px}.input,.select,.button{border:1px solid var(--border);border-radius:12px;padding:10px 12px;font-size:14px}.input:focus,.select:focus{outline:none;box-shadow:0 0 0 3px var(--ring);border-color:var(--accent)}.input[type=number]{appearance:auto;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.input[type=number]:hover{border-color:#93c5fd;background:#f8fbff}.input[type=number]:hover:not(:focus){box-shadow:0 0 0 2px #93c5fd40}.input[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-outer-spin-button{opacity:.2;transition:opacity .15s ease}.input[type=number]:hover::-webkit-inner-spin-button,.input[type=number]:focus::-webkit-inner-spin-button,.input[type=number]:hover::-webkit-outer-spin-button,.input[type=number]:focus::-webkit-outer-spin-button{opacity:1}.textarea{width:100%;min-height:350px;resize:vertical}@media (max-width: 1100px){.textarea{width:100%;min-height:375px}}.button{background:#fff;cursor:pointer}.button:hover{background:#f1f5f9}.button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.button.primary:hover{filter:brightness(.95)}.badge{font-size:12px;color:var(--muted)}.grid-generator{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,1fr);gap:16px;align-items:start}@media (max-width: 1100px){.grid-generator{grid-template-columns:1fr}}.preview{height:520px;display:flex;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--border);border-radius:12px;background:#f8fafc}.preview img{max-width:100%;max-height:100%;object-fit:contain;display:block}.tabs{display:flex;gap:8px;border-bottom:1px solid var(--border);margin-bottom:12px}.tabs-main{align-items:center}.tabs-spacer{margin-left:auto}.tab{padding:8px 12px;border-radius:10px 10px 0 0;border:1px solid transparent;cursor:pointer}.tab.active{background:#fff;border-color:var(--border);border-bottom-color:#fff}@media print{body{background:#fff}.no-print{display:none!important}.print-sheet{page-break-after:always;break-after:page}.print-sheet:last-child{page-break-after:auto;break-after:auto}.print-page{margin:0!important}}.print-page{margin:0 auto;background:#fff}.label-grid{display:grid;width:100%;height:100%}.label-cell{border:1px dashed #cbd5e1;border-radius:2mm;display:flex;align-items:center;justify-content:center;padding:3mm;text-align:center}.label-cell img{max-width:100%;max-height:100%}.label-delete-btn{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:14px;line-height:1;display:grid;place-items:center;cursor:pointer;z-index:5;transition:transform .12s ease,background-color .12s ease,border-color .12s ease}.label-delete-btn-large{top:5px;right:5px;width:32px;height:32px;color:#0f172a;font-size:20px;font-weight:500}.label-delete-btn:hover{background:#fee2e2;border-color:#fca5a5}.cell-highlight{outline:3px solid #60a5fa;outline-offset:-3px}.cell-match-highlight{outline:3px solid #22c55e;outline-offset:-3px}.small{font-size:12px;color:var(--muted)}.toast{position:fixed;right:16px;bottom:16px;background:#0ea5e9;color:#fff;padding:10px 12px;border-radius:12px;box-shadow:0 8px 24px #00000026}.page-outline{background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 30px #00000014,0 1px 3px #0000000d;margin:16px auto}@media print{.page-outline{box-shadow:none;border:0}}.sheet-viewport{overflow:auto;height:70vh;max-height:70vh;overscroll-behavior:auto;background:linear-gradient(180deg,#f1f5f9,transparent 60%);padding:8px;border-radius:12px;border:1px solid var(--border)}.sheet-viewport.expanded{height:84vh;max-height:84vh}.sheet-viewport.pan-ready{cursor:grab}.sheet-viewport.pan-active{cursor:grabbing;-webkit-user-select:none;user-select:none}.sheet-viewport{position:relative}.sheet-viewport::-webkit-scrollbar{width:10px;height:10px}@media print{.sheet-viewport{overflow:visible!important;max-height:none!important;border:0;padding:0;background:#fff}.sheet-viewport::-webkit-scrollbar{display:none}}@media print{.print-content{transform:none!important;transform-origin:0 0!important}.label-cell{border:0!important;border-radius:0!important}.slot-empty{display:none!important}}.labels-settings-compact{align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.selection-marquee{position:absolute;border:1px solid #2563eb;background:#2563eb24;border-radius:6px;pointer-events:none;z-index:30}.selection-drawer{position:fixed;left:50%;width:min(1520px,calc(100vw - 12px));transform:translate(-50%,calc(100% + 20px));bottom:16px;opacity:0;transition:transform .24s ease,opacity .24s ease;z-index:50;pointer-events:none}.selection-backdrop{position:fixed;inset:0;background:transparent;z-index:45}.selection-drawer.open{transform:translate(-50%);opacity:1;pointer-events:auto}.selection-drawer-inner{background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px;box-shadow:0 14px 34px #0f172a2e;display:grid;grid-template-columns:1fr;gap:10px}.selection-row{display:flex;gap:8px;align-items:center;justify-content:center}.selection-row-top{padding-bottom:2px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.selection-row-bottom{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.selection-content-input{width:240px;min-width:220px;max-width:260px;flex:0 0 240px}.selection-separator{width:1px;height:24px;background:var(--border);margin:0 1px}.selection-row .hstack{gap:6px;flex-wrap:nowrap}.selection-row label,.selection-row .small{white-space:nowrap}.selection-row .button{white-space:nowrap;line-height:1.15}.app-footer{margin:24px auto 12px;max-width:1200px;font-size:12px;color:#64748b;text-align:center;padding-top:12px;position:relative}.app-footer:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#cbd5e1 15%,#cbd5e1 85%,transparent)}.icon-btn{padding:6px 8px;display:inline-grid;place-items:center}.icon-btn svg{display:block}.icon-btn:hover{background:#e2e8f0}.bottom-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sheet-viewport .button.icon-btn{border-radius:10px}.sheet-viewport+.bottom-actions,.sheet-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.button.icon-btn{padding:6px 8px;display:inline-grid;place-items:center}.zoom-control{user-select:none;-webkit-user-select:none}.banner{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:12px 16px;margin:8px 0 12px}.banner-inner{display:flex;align-items:center;justify-content:space-between}.banner-title{font-weight:800;font-size:24px;line-height:1.1}.app-footer{text-align:center;color:#334155;font-size:14px}.modal-backdrop{position:fixed;inset:0;background:#0f172a3d;display:grid;place-items:center;z-index:80}.modal-card{width:min(520px,calc(100vw - 28px));background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px;box-shadow:0 20px 50px #02061740}.sheets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.sheet-search-rows{display:grid;gap:12px}.sheet-search-row{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);gap:12px;align-items:start}.sheet-search-preview{background:#f8fafc;display:grid;gap:8px;cursor:pointer;text-align:left}.sheet-search-preview-code{border:1px dashed #cbd5e1;border-radius:10px;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:13px;word-break:break-word;background:#fff}.sheet-search-preview-image{border:1px dashed #cbd5e1;border-radius:10px;background:#fff;min-height:110px;padding:10px;display:flex;align-items:center;justify-content:center}.sheet-search-preview-image img{display:block;max-width:100%;max-height:130px;object-fit:contain}.sheet-tile-code{border:1px dashed #cbd5e1;border-radius:10px;padding:8px 10px;background:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;word-break:break-word;text-align:left}@media (max-width: 980px){.sheet-search-row{grid-template-columns:1fr}}.sheet-tile{border:1px solid var(--border);border-radius:14px;background:#fff;padding:10px;text-align:left;display:grid;gap:8px;cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.sheet-tile:hover{border-color:#93c5fd;box-shadow:0 8px 22px #2563eb1f;transform:translateY(-1px)}.sheet-tile-title{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet-tile-actions{display:flex;gap:8px;justify-content:flex-end}.sheet-tile-actions .button{padding:6px 10px;border-radius:10px;font-size:12px}.sheet-miniature{border:1px solid #dbe4ef;border-radius:12px;background:#f8fafc;padding:8px;display:grid;gap:8px}.sheet-mini-grid{display:grid;gap:4px}.sheet-mini-cell{min-height:18px;border-radius:4px}.sheet-mini-cell.filled{background:repeating-linear-gradient(90deg,#111827 0px,#111827 2px,transparent 2px,transparent 4px);opacity:.85}.sheet-mini-cell.empty{border:1px dashed #cbd5e1}.sheet-mini-meta{line-height:1.1}
