*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f4f7f6;--surface: #ffffff;--surface2: #f7f9f8;--border: #dfe7e3;--accent: #16745e;--accent2: var(--accent);--accent3: var(--accent);--accent-light: #eaf5f0;--text: #20352e;--muted: #65776f;--danger: #bc4048;--shadow: rgba(25, 55, 42, .04);--card-accent: var(--accent);--card-icon-bg: var(--accent-light);--card-icon-border: #d4e7dc;--card-tag-bg: var(--surface2)}[data-tool-theme]{--accent2: var(--accent);--accent3: var(--accent);--card-accent: var(--accent);--card-icon-bg: var(--accent-light);--card-icon-border: var(--theme-border);--card-tag-bg: var(--accent-light)}[data-tool-theme=password]{--accent: #1a7a5e;--accent-light: #e8f7f2;--theme-border: #b2dfd2}[data-tool-theme=totp]{--accent: #087e8b;--accent-light: #e5f7fa;--theme-border: #9edce5}[data-tool-theme=qr]{--accent: #4f3ee8;--accent-light: #eeecfd;--theme-border: #c9c3f8}[data-tool-theme=qr-reader]{--accent: #6f42c1;--accent-light: #f3f0ff;--theme-border: #d0bfff}[data-tool-theme=image-compressor]{--accent: #b83250;--accent-light: #fff0f3;--theme-border: #ffc9d1}[data-tool-theme=json]{--accent: #9a5e07;--accent-light: #fef3e2;--theme-border: #f5d49a}[data-tool-theme=share]{--accent: #795548;--accent-light: #f5eeea;--theme-border: #d7bdb0}[data-tool-theme=timestamp]{--accent: #b54708;--accent-light: #fff1e6;--theme-border: #f7c39b}[data-tool-theme=cron]{--accent: #65751f;--accent-light: #f2f6e4;--theme-border: #cbd89b}[data-tool-theme=compose]{--accent: #2f5f98;--accent-light: #e7f0fb;--theme-border: #b7d0f2}body{background:var(--bg);color:var(--text);min-height:100vh;padding:48px 24px 56px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",sans-serif;-webkit-font-smoothing:antialiased}header{max-width:1080px;margin:0 auto 28px;padding-bottom:24px;border-bottom:1px solid var(--border)}header .eyebrow{font-size:11px;font-weight:700;letter-spacing:.24em;color:var(--accent);text-transform:uppercase;margin-bottom:7px}header h1{font-size:clamp(1.6rem,4vw,2rem);font-weight:700;letter-spacing:0;color:var(--text);line-height:1.4}header h1 span{color:var(--accent2)}header p{margin-top:9px;color:var(--muted);font-size:14px;font-weight:400}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:1080px;margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px;cursor:pointer;position:relative;overflow:hidden;min-height:210px;display:flex;flex-direction:column;transition:transform .25s cubic-bezier(.34,1.56,.64,1),border-color .2s,box-shadow .2s;box-shadow:0 3px 14px var(--shadow)}.card:before{content:"";position:absolute;top:0;left:24px;right:24px;height:3px;border-radius:0 0 4px 4px;background:var(--card-accent);opacity:0;transform:scaleX(.45);transition:opacity .2s,transform .25s ease}.card:after{content:"\2192";position:absolute;bottom:24px;right:22px;font-size:18px;color:var(--border);transition:color .2s,transform .2s}.card:hover{transform:translateY(-3px);border-color:var(--card-accent);box-shadow:0 10px 24px #19372a14}.card:hover:before{opacity:1;transform:scaleX(1)}.card:hover:after{color:var(--card-accent);transform:translate(3px)}.card:active{transform:translateY(-2px)}.card-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:14px;background:var(--card-icon-bg);border:1px solid var(--card-icon-border);transition:transform .25s ease}.card:hover .card-icon{transform:translateY(-2px) scale(1.04)}.card h2{font-size:15px;font-weight:700;margin-bottom:8px;color:var(--text)}.card p{color:var(--muted);font-size:13px;line-height:1.65;font-weight:400;flex:1}.card-tag{align-self:flex-start;display:inline-block;margin-top:16px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--card-accent);background:var(--card-tag-bg);border:1px solid var(--card-icon-border);border-radius:5px;padding:3px 9px}.modal-overlay{position:fixed;inset:0;background:#14271f52;backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .25s;padding:20px}.modal-overlay.open{opacity:1;pointer-events:all}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:920px;height:min(720px,calc(100vh - 40px));height:min(720px,calc(100dvh - 40px));overflow-y:auto;padding:28px;position:relative;transform:translateY(24px) scale(.97);transition:transform .3s cubic-bezier(.34,1.56,.64,1);box-shadow:0 24px 70px #14271f2e;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#cbc9c1 transparent}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-thumb{background:#cbc9c1;border:2px solid transparent;border-radius:99px;background-clip:padding-box}.modal-overlay.open .modal{transform:translateY(0) scale(1)}.modal-close{position:absolute;top:16px;right:16px;width:32px;height:32px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .2s,background .2s,border-color .2s;padding:0}.modal-close:hover{color:var(--accent);background:var(--accent-light);border-color:var(--accent)}.modal-title{font-size:18px;font-weight:700;margin-bottom:5px;color:var(--text);padding-right:30px}.modal-subtitle{color:var(--muted);font-size:13px;margin-bottom:20px;font-weight:400;line-height:1.6}.generator-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;margin-bottom:20px}.generator-tab{border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;font-weight:700;padding:10px 12px;transition:background .2s,color .2s,box-shadow .2s}.generator-tab.active{background:#fff;color:var(--accent);box-shadow:0 2px 8px var(--shadow)}.generator-panels{display:grid;align-items:stretch}.generator-panel{display:flex;flex-direction:column;grid-area:1 / 1;opacity:0;pointer-events:none;visibility:hidden}.generator-panel.active{opacity:1;pointer-events:auto;visibility:visible}.generator-panel .actions-row{margin-top:auto;padding-top:12px}.timestamp-modal .modal-title{font-size:17px;margin-bottom:4px}.timestamp-modal .modal-subtitle{font-size:12px;margin-bottom:14px}label{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}.input-row{display:flex;gap:10px;margin-bottom:16px;align-items:flex-end}.timestamp-modal .input-row{gap:10px;margin-bottom:12px}.input-group{flex:1}input[type=number],input[type=text],input[type=password],select,textarea{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:14px;font-family:inherit;padding:11px 14px;outline:none;transition:border-color .2s,box-shadow .2s}.totp-modal .modal-title{margin-bottom:8px}.totp-modal .input-group{margin-bottom:10px;min-width:0}.totp-modal label{margin-bottom:4px;font-size:12px}.totp-modal input{padding:8px 10px;font-size:13px}.totp-modal .btn{padding:8px 12px;white-space:nowrap;justify-content:center}.totp-save-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:end;gap:8px;margin-bottom:8px}.totp-save-row .input-group{margin-bottom:0}.totp-preview-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}.totp-private-notice{margin:0 0 12px;color:var(--accent);font-size:12px;line-height:1.5}.totp-secret-group{margin-bottom:8px}.totp-secret-row{display:flex;gap:8px}.totp-secret-row input{flex:1;min-width:0;font-family:SF Mono,Fira Code,Consolas,monospace}.totp-meta{min-height:18px;margin-bottom:6px;color:var(--muted);font-size:11px;overflow-wrap:anywhere}.totp-display{padding:9px 12px;border:1px solid var(--card-icon-border);border-radius:14px;background:var(--accent-light);text-align:center}.totp-code{color:var(--accent);font:700 28px/1.2 SF Mono,Fira Code,Consolas,monospace;letter-spacing:.14em}.totp-progress{height:5px;margin:6px 0 4px;overflow:hidden;border-radius:99px;background:#c3fae8}.totp-progress>div{width:0;height:100%;border-radius:inherit;background:#12b886;transition:width .25s linear}.totp-countdown{min-height:18px;color:var(--muted);font-size:12px}.totp-display.error{border-color:#ffc9c9;background:#fff5f5}.totp-display.error .totp-code,.totp-display.error .totp-countdown{color:var(--danger)}.totp-modal .totp-actions{margin:0;flex-direction:column;gap:6px}.totp-library{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.totp-library h3{margin:0;font-size:16px}.totp-storage-help,.totp-storage-status,.totp-storage-error{margin:5px 0;font-size:12px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}.totp-storage-error{color:var(--danger)}.totp-storage-error:empty{display:none}@media(max-width:480px){.totp-save-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.totp-save-row>button{grid-column:1 / -1}}.totp-saved-row{display:grid;grid-template-columns:minmax(0,1fr) auto 28px auto;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--border)}.totp-saved-details{min-width:0;display:flex;align-items:baseline;gap:6px;overflow:hidden}.totp-saved-details>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.totp-saved-issuer{font-size:13px;font-weight:600}.totp-saved-details strong{color:var(--muted);font-size:11px;font-weight:400}.totp-saved-code{margin:0;color:var(--accent);font:700 20px/1.3 SF Mono,Fira Code,Consolas,monospace;white-space:nowrap}.totp-saved-actions{display:flex;gap:4px}.totp-library .btn{padding:6px 8px}.totp-library-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}@media(max-width:480px){.totp-saved-row{grid-template-columns:minmax(0,1fr) 28px auto;gap:4px 6px}.totp-saved-details{grid-column:1 / -1}}.timestamp-modal input[type=text]{padding:9px 12px;font-size:13px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent);background:#fff}select{cursor:pointer}textarea{resize:vertical;line-height:1.55}.options-row{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:20px}.check-label{display:flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);cursor:pointer;padding:6px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;transition:border-color .2s,color .2s,background .2s;user-select:none}.check-label:has(input:checked){border-color:var(--accent);color:var(--accent);background:var(--accent-light)}.check-label input{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:10px;font-size:12px;font-family:inherit;font-weight:600;letter-spacing:0;cursor:pointer;border:1px solid transparent;transition:background .2s,border-color .2s,color .2s,box-shadow .2s}.card:focus-visible,.btn:focus-visible,.modal-close:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 25%,transparent);outline-offset:3px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover,.btn-primary.purple:hover,.btn-primary.amber:hover{background:color-mix(in srgb,var(--accent) 85%,black);box-shadow:0 3px 8px color-mix(in srgb,var(--accent) 15%,transparent)}.btn-primary.purple{background:var(--accent2)}.btn-primary.amber{background:var(--accent3)}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}.btn-secondary.blue{color:var(--accent);background:var(--accent-light);border-color:var(--card-icon-border)}.btn-secondary.blue:hover{color:#fff;background:var(--accent);border-color:var(--accent)}.btn-danger{background:var(--surface2);color:var(--danger);border:1px solid var(--border)}.btn-danger:hover{background:#fdecea;border-color:var(--danger)}button:disabled,input:disabled{cursor:not-allowed;opacity:.55}.password-output{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px;font-size:14px;word-break:break-all;color:var(--accent);min-height:52px;margin-bottom:12px;letter-spacing:.05em;line-height:1.6}.strength-bar{height:5px;border-radius:3px;background:var(--border);margin-bottom:20px;overflow:hidden}.strength-fill{height:100%;border-radius:3px;transition:width .4s,background .4s;width:0}#qr-output{display:flex;justify-content:center;align-items:center;min-height:204px;margin-top:16px}#qr-output>div{background:#fff;padding:12px;border-radius:12px;border:1px solid var(--border);box-shadow:0 4px 16px var(--shadow);line-height:0}.qr-reader-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;margin-bottom:14px}.qr-reader-tab{border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;font-weight:700;padding:10px 12px;transition:background .2s,color .2s,box-shadow .2s}.qr-reader-tab.active{background:#fff;color:var(--accent2);box-shadow:0 2px 8px var(--shadow)}.qr-reader-panel{display:none}.qr-reader-panel.active{display:block}.qr-camera-box{background:var(--surface2);border:1px solid var(--border);border-radius:12px;min-height:210px;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}.qr-camera-box video{width:100%;height:100%;max-height:260px;object-fit:cover;display:block}.qr-camera-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:18px;color:var(--muted);font-size:13px;line-height:1.5;text-align:center}.qr-reader-status{color:var(--muted);font-size:12px;line-height:1.5;margin:10px 0 12px;min-height:18px}.qr-reader-result{margin-top:12px}.json-editor-wrap{position:relative;margin-bottom:12px;overflow:hidden;border-radius:10px}.json-line-numbers{position:absolute;z-index:1;top:0;left:0;width:48px;min-height:100%;margin:0;padding:12px 10px 12px 0;box-sizing:border-box;background:#f0f0eb;border-right:1px solid var(--border);color:var(--muted);font:13px/1.6 SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;text-align:right;user-select:none;pointer-events:none;will-change:transform}.json-input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:13px;font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;padding:12px 14px 12px 60px;outline:none;transition:border-color .2s,box-shadow .2s;resize:vertical;min-height:140px;line-height:1.6}.json-input:focus{border-color:var(--accent3);box-shadow:0 0 0 3px #c0760a1a;background:#fff}.json-input.error{border-color:var(--danger);box-shadow:0 0 0 3px #d630311a}.json-input.valid{border-color:#00b894;box-shadow:0 0 0 3px #00b8941a}.json-output{width:100%;background:#fafaf8;border:1px solid var(--border);border-radius:10px;font-size:12px;font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;padding:14px;min-height:80px;max-height:340px;overflow-y:auto;line-height:1.7;white-space:pre;color:var(--text);display:none;scrollbar-width:thin}.json-status{display:none;align-items:center;gap:8px;padding:9px 14px;border-radius:8px;font-size:12px;font-weight:600;margin-bottom:14px}.json-status.ok{background:#e8f7f2;color:#0f6e56;border:1px solid #b2dfd2}.json-status.err{background:#fdecea;color:var(--danger);border:1px solid #f5c4c4}.json-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}.indent-label{font-size:10px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-right:2px}.indent-select{background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:12px;padding:7px 10px;cursor:pointer;outline:none;transition:border-color .2s}.indent-select:focus{border-color:var(--accent3)}.json-info-row{display:none;gap:16px;flex-wrap:wrap;margin-bottom:14px}.json-info-item{font-size:11px;color:var(--muted)}.json-info-item strong{color:var(--text);font-weight:700}.jk{color:#4f3ee8}.js{color:#1a7a5e}.jn{color:#c0760a}.jb{color:#d63031;font-weight:600}.jnull{color:#8a8a9a;font-style:italic}.jp{color:#888}.copy-toast{position:fixed;bottom:32px;left:50%;transform:translate(-50%) translateY(20px);background:var(--text);color:#fff;padding:10px 22px;border-radius:99px;font-size:12px;font-weight:700;opacity:0;pointer-events:none;transition:all .3s;z-index:999}.copy-toast.show{opacity:1;transform:translate(-50%) translateY(0)}.divider{border:none;border-top:1px solid var(--border);margin:20px 0}.actions-row{display:flex;gap:10px;flex-wrap:wrap}.timestamp-now{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fafaf8;border:1px solid var(--border);border-radius:10px;padding:7px 10px;margin-bottom:12px;color:var(--muted);font-size:11px;line-height:1.45}.timestamp-now .label{color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.timestamp-now .value{color:var(--text);font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;font-size:11px;word-break:break-all}.timestamp-now .sep{color:var(--border)}.time-section{border:1px solid var(--border);border-radius:12px;padding:13px;margin-bottom:0;background:#fff}.time-sections-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.time-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.time-section-title h3{font-size:13px;color:var(--text);line-height:1.2}.time-section-title span{font-size:11px;color:var(--muted);line-height:1.4}.time-output{background:#fafaf8;border:1px solid var(--border);border-radius:10px;padding:11px 12px;min-height:50px;color:var(--text);font-size:13px;line-height:1.6;margin-bottom:12px;word-break:break-word}.time-section .time-output{margin-bottom:0;flex:1}.time-output .muted{color:var(--muted)}.copy-mini{flex-shrink:0;border:1px solid var(--border);background:var(--surface2);color:var(--muted);border-radius:6px;padding:3px 7px;font-size:10px;line-height:1.25;cursor:pointer;font-family:inherit;transition:color .2s,background .2s,border-color .2s}.copy-mini:hover{color:var(--accent);background:var(--accent-light);border-color:var(--accent)}.copy-value{min-width:0;word-break:break-all}.time-copy-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.time-copy-row:last-child{margin-bottom:0}.time-copy-row .name{color:var(--muted);font-size:12px;min-width:34px}.time-copy-row .value{color:var(--text);font-weight:700;font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace}.cron-input{font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace}.cron-status{display:none;padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.45;margin:12px 0 14px}.cron-status.ok{display:block;background:#e8f7f2;color:#0f6e56;border:1px solid #b2dfd2}.cron-status.err{display:block;background:#fdecea;color:var(--danger);border:1px solid #f5c4c4}.cron-status.blank{display:block;color:transparent;background:transparent;border-color:transparent}.cron-mode-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.cron-mode-row .options-row{flex:1}.cron-help-btn{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--surface2);color:#5f3dc4;font-size:14px;font-weight:700;cursor:pointer;transition:background .2s,border-color .2s}.cron-help-btn:hover{background:#f3f0ff;border-color:#b197fc}.cron-help-popover{position:absolute;top:104px;right:30px;z-index:3;display:none;width:min(520px,calc(100% - 60px));background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;box-shadow:0 16px 40px #00000024}.cron-help-popover.open{display:block}.cron-help-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.cron-help-title strong{font-size:13px;color:var(--text)}.cron-help-close{width:26px;height:26px;border:1px solid var(--border);border-radius:7px;background:var(--surface2);color:var(--muted);cursor:pointer}.cron-fields{display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:0}.cron-fields.open{display:grid}.cron-field{background:#fafaf8;border:1px solid var(--border);border-radius:10px;padding:10px 12px;min-width:0}.cron-field strong{display:block;color:var(--text);font-size:12px;line-height:1.35;margin-bottom:4px}.cron-field span{display:block;color:var(--muted);font-size:11px;line-height:1.5;word-break:break-word}.cron-examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.cron-example{border:1px solid var(--border);background:var(--surface2);color:var(--text);border-radius:8px;padding:7px 10px;font-size:11px;cursor:pointer;font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;transition:color .2s,border-color .2s,background .2s}.cron-example:hover{color:#5f3dc4;border-color:#b197fc;background:#f3f0ff}.cron-next{display:none;background:#fafaf8;border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-top:14px}.cron-next.open{display:block}.cron-next strong{display:block;color:var(--text);font-size:12px;margin-bottom:8px}.cron-next ol{margin-left:18px;color:var(--text);font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;font-size:12px;line-height:1.7}.compose-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:14px}.compose-layout textarea{height:260px;min-height:260px;font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;font-size:12px;line-height:1.6;resize:vertical}.compose-layout>div{min-width:0}.compose-output{width:100%;height:260px;min-height:260px;max-height:260px;background:#fafaf8;border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-family:SF Mono,Fira Code,Consolas,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Noto Emoji",monospace;font-size:12px;line-height:1.6;white-space:pre;overflow:auto;color:var(--text)}.compose-output.muted{color:var(--muted);font-style:italic}.compose-status{display:none;padding:9px 13px;border-radius:9px;font-size:12px;line-height:1.45;margin:12px 0}.compose-status.ok{display:block;background:#e8f7f2;color:#0f6e56;border:1px solid #b2dfd2}.compose-status.warn{display:block;background:#fff8e6;color:#8a5a00;border:1px solid #f3d58a}.compose-status.err{display:block;background:#fdecea;color:var(--danger);border:1px solid #f5c4c4}.compose-label-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.compose-label-row label{margin-bottom:0}.copy-filename{border:1px solid var(--border);background:var(--surface2);color:#2f5f98;border-radius:7px;padding:4px 8px;font-size:10px;cursor:pointer;transition:background .2s,border-color .2s}.copy-filename:hover{background:#e7f0fb;border-color:#b7d0f2}.timezone-search-wrap{position:relative}.timezone-suggestions{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:5;display:none;max-height:220px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 28px #0000001f}.timezone-option{width:100%;display:block;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--border);padding:10px 12px;color:var(--text);cursor:pointer}.timezone-option:last-child{border-bottom:0}.timezone-option:hover{background:var(--accent-light)}.timezone-option strong{display:block;font-size:12px;line-height:1.3}.timezone-option span{display:block;color:var(--muted);font-size:11px;line-height:1.5;margin-top:2px}.image-drop-zone{min-height:126px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:20px;margin-bottom:18px;border:2px dashed var(--border);border-radius:12px;background:var(--surface2);text-align:center;cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}.image-drop-zone:hover,.image-drop-zone:focus,.image-drop-zone.dragging{border-color:#d9485f;background:#fff5f7;box-shadow:0 0 0 3px #d9485f1a;outline:none}.image-drop-zone strong{font-size:14px;overflow-wrap:anywhere}.image-drop-zone span{color:var(--muted);font-size:12px}.image-compressor-controls{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:12px;margin-bottom:16px}.image-quality-row{display:flex;align-items:center;gap:10px;min-height:42px}.image-quality-row input[type=range]{flex:1;accent-color:#d9485f}.image-quality-value{width:40px;color:#d9485f;font-size:13px;font-weight:700;text-align:right}.image-compressor-status{display:none;padding:10px 12px;margin-bottom:14px;border-radius:9px;font-size:12px;line-height:1.5}.image-compressor-status.info{display:block;color:#8a4b08;background:#fff4e6;border:1px solid #ffd8a8}.image-compressor-status.ok{display:block;color:#12634b;background:#e8f7f2;border:1px solid #b2dfd2}.image-compressor-status.error{display:block;color:var(--danger);background:#fff5f5;border:1px solid #feb2b2}.image-preview-grid{display:none;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.image-preview-card{min-width:0;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}.image-preview-card img{display:block;width:100%;height:210px;object-fit:contain;border-radius:8px;background-color:#fff;background-image:linear-gradient(45deg,#eee 25%,transparent 25%),linear-gradient(-45deg,#eee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eee 75%),linear-gradient(-45deg,transparent 75%,#eee 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0}.image-preview-meta{margin-top:9px;color:var(--muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}.image-preview-meta strong{display:block;color:var(--text);font-size:12px}@media(max-width:900px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){body{padding:20px 14px 32px}header{margin-bottom:24px}.grid{grid-template-columns:1fr;gap:14px}.card{min-height:0}.modal-overlay{padding:12px}.modal{height:calc(100vh - 24px);height:calc(100dvh - 24px);padding:24px 16px;border-radius:16px}.image-compressor-controls,.image-preview-grid{grid-template-columns:1fr}.image-preview-card img{height:180px}.cron-help-popover{top:128px;right:16px;width:calc(100% - 32px)}.cron-fields{grid-template-columns:1fr}.compose-layout{grid-template-columns:minmax(0,1fr)}.time-section-title{flex-direction:column;align-items:stretch}.time-sections-grid{grid-template-columns:1fr}}.json-fullscreen{position:fixed;inset:0;z-index:200;background:var(--bg);display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .25s}.json-fullscreen.open{opacity:1;pointer-events:all}.json-fs-header{display:flex;align-items:center;gap:14px;padding:16px 24px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.json-fs-header .fs-icon{font-size:22px}.json-fs-header .fs-titles{flex:1}.json-fs-header .fs-title{font-size:16px;font-weight:700;color:var(--text);line-height:1.2}.json-fs-header .fs-sub{font-size:12px;color:var(--muted);font-weight:300}.json-fs-close{width:34px;height:34px;background:var(--surface2);border:1px solid var(--border);border-radius:9px;color:var(--muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .2s,background .2s,border-color .2s;flex-shrink:0}.json-fs-close:hover{color:var(--accent);background:var(--accent-light);border-color:var(--accent)}.json-fs-body{flex:1;display:flex;gap:0;overflow:hidden;min-height:0}.json-fs-pane{flex:1;display:flex;flex-direction:column;min-width:0;padding:20px 24px;overflow:hidden}.json-fs-pane+.json-fs-pane{border-left:1px solid var(--border)}.json-fs-pane label{margin-bottom:8px}.json-fs-pane .json-input{resize:none;min-height:0;height:100%}.json-fs-pane .json-editor-wrap{flex:1;min-height:0;margin-bottom:0}.json-fs-pane .json-output{flex:1;max-height:none;height:100%}.json-fs-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 24px;background:var(--surface);border-top:1px solid var(--border);flex-shrink:0}.json-fs-status{padding:6px 24px;flex-shrink:0}.json-fs-info{padding:4px 24px 8px;flex-shrink:0}.totp-backup-dialog{margin:auto;width:min(420px,calc(100vw - 40px));box-sizing:border-box;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--bg);color:var(--text);box-shadow:0 16px 48px #0003}.totp-backup-dialog::backdrop{background:#0006}.totp-backup-dialog p{margin:12px 0;font-size:14px;line-height:1.7}.totp-backup-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.totp-backup-actions [hidden]{display:none}
