:root{color-scheme:dark;--bg: #101010;--surface: #181818;--panel: #1e1e1e;--raised: #282828;--control: #303030;--selected: #404040;--text: #f5f5f5;--muted: #c0c0c0;--subtle: #a0a0a0;--success: #d0d0d0;--danger: #f5f5f5;--shadow: 0 24px 64px rgba(0, 0, 0, 0.28);--focus: rgba(255, 255, 255, 0.48);--tr: 140ms ease;
  --radius-app: 24px;
  --radius-control: 12px;
  --radius-inset: 8px;
  --radius-item: 6px;
  --gap-panel: 2px}
html[data-theme="light"]{color-scheme:light;--bg: #f0f0f0;--surface: #fafafa;--panel: #ececec;--raised: #e2e2e2;--control: #d8d8d8;--selected: #c8c8c8;--text: #242424;--muted: #565656;--subtle: #666666;--success: #454545;--danger: #292929;--shadow: 0 24px 60px rgba(0, 0, 0, 0.12);--focus: rgba(0, 0, 0, 0.48)}
*{box-sizing:border-box}html{color-scheme:dark;-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body{background:var(--bg)}
body{min-height:100vh;margin:0;padding:28px 24px 16px;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.5;transition:background var(--tr),color var(--tr)}
button,input{font:inherit;color:inherit}button,label,input{-webkit-tap-highlight-color:transparent}button,input{outline:0}
button:focus-visible,input:focus-visible,a:focus-visible{outline:0;box-shadow:inset 0 0 0 2px var(--focus)}
[hidden]{display:none!important}.page{flex:1;width:100%;display:grid;place-items:center}.app{width:min(1120px,100%)}

.header{margin-bottom:20px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.header-copy{min-width:0}h1 { margin: 0; }h1{font-size:clamp(1.75rem,3vw,2.25rem);line-height:1.1;letter-spacing:-.035em;font-weight:680}
.appearance{min-height:40px;padding:0 14px;border:0;border-radius:var(--radius-control);background:var(--raised);color:var(--muted);font-size:.875rem;font-weight:650;cursor:pointer;transition:background var(--tr),color var(--tr),box-shadow var(--tr)}.appearance:hover{background:var(--control);color:var(--text)}

.shell{height:720px;display:grid;grid-template-columns:400px minmax(0,1fr);overflow:hidden;box-shadow:var(--shadow)}
.panel{min-width:0;min-height:0;background:var(--panel)}.controls,.output-panel{display:flex;flex-direction:column;overflow:hidden}
.toolbar,.output-toolbar{height:52px;padding:0 20px;display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;background:color-mix(in srgb,var(--raised) 55%,var(--panel));}
.toolbar-info{min-width:0;display:flex;align-items:baseline;gap:10px;white-space:nowrap;overflow:hidden}.toolbar-title,.output-label{color:var(--text);font-size:.9375rem;font-weight:680}.toolbar-hint{min-width:0;color:var(--subtle);font-size:.8125rem;font-weight:520;overflow:hidden;text-overflow:ellipsis}.toolbar-actions{display:flex;align-items:center;gap:8px}

.settings-body{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--control) transparent}.section{padding:24px}.section+.section{margin-top:0;padding-top:0;}
.section-heading{margin:0;flex:0 0 auto;color:var(--text);font-size:1.0625rem;font-weight:680}.password-section>.section-heading,.characters-section>.section-heading{margin-bottom:14px}
.row{min-height:62px;padding:7px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}.row-copy{min-width:0}.row-copy strong{display:block;font-size:1rem;font-weight:580}.row-copy span{display:block;margin-top:2px;color:var(--subtle);font-size:.875rem;line-height:1.4}
.input{width:124px;height:42px;padding:0 12px;border:0;border-radius:var(--radius-control);background:var(--control);color:var(--text);text-align:right;transition:background var(--tr),box-shadow var(--tr),opacity var(--tr)}.input:hover:not(:disabled){background:color-mix(in srgb,var(--control) 84%,var(--text))}.input:focus{background:var(--raised);box-shadow:inset 0 0 0 2px var(--focus)}.input::placeholder{color:var(--subtle)}
input[type=number]{appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

.char-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.select-control{min-height:82px;padding:13px 14px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;border:0;border-radius:var(--radius-control);background:var(--control);color:var(--text);text-align:left;cursor:pointer;transition:background var(--tr),color var(--tr),box-shadow var(--tr)}.select-control.active{background:var(--selected)}.select-control:focus-visible{background:var(--selected);box-shadow:inset 0 0 0 2px var(--focus)}.select-control strong{font-size:1rem;font-weight:680}.select-control span{color:var(--subtle);font-size:.875rem;line-height:1.35}.select-control.active span{color:var(--muted)}
.symbol-option{grid-column:1/-1;display:grid;gap:10px}.symbol-input{width:100%;height:42px;padding:0 12px;border:0;border-radius:var(--radius-control);background:var(--control);color:var(--text);font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:.875rem;transition:background var(--tr),box-shadow var(--tr),opacity var(--tr)}.symbol-input:hover:not(:disabled){background:color-mix(in srgb,var(--control) 84%,var(--text))}.symbol-input:focus{background:var(--raised);box-shadow:inset 0 0 0 2px var(--focus)}.symbol-input:disabled{opacity:.4;cursor:not-allowed;color:var(--subtle)}

.option-row{margin-top:10px}.switch{position:relative;width:40px;height:24px;flex:0 0 auto}.switch input{position:absolute;opacity:0;pointer-events:none}.track{position:absolute;inset:0;border-radius:999px;background:var(--control);cursor:pointer;transition:background var(--tr),box-shadow var(--tr)}.track::after{content:"";position:absolute;top:4px;left:4px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:transform var(--tr),background var(--tr)}.switch input:checked+.track{background:var(--text)}.switch input:checked+.track::after{transform:translateX(16px);background:var(--surface)}.switch input:focus-visible+.track{box-shadow:inset 0 0 0 2px var(--focus)}
.actions{min-height:68px;padding:12px 20px;display:flex;align-items:center;background:color-mix(in srgb,var(--raised) 55%,var(--panel));}.btn{min-height:42px;padding:0 15px;border:0;border-radius:var(--radius-control);background:var(--control);color:var(--text);font-size:1rem;font-weight:650;cursor:pointer;transition:background var(--tr),color var(--tr),box-shadow var(--tr)}.btn:hover:not(:disabled){background:color-mix(in srgb,var(--control) 84%,var(--text))}.btn.subtle{background:transparent;color:var(--muted)}.btn.subtle:hover:not(:disabled){background:var(--control);color:var(--text)}.btn.primary{width:100%;background:var(--text);color:var(--surface)}.btn.primary:hover:not(:disabled){background:color-mix(in srgb,var(--text) 88%,var(--surface))}.btn:disabled{opacity:.36;cursor:default}

.output-info{min-width:0;display:flex;align-items:baseline;gap:10px;white-space:nowrap;overflow:hidden}.output-hint{min-width:0;color:var(--subtle);font-size:.8125rem;font-weight:520;overflow:hidden;text-overflow:ellipsis}.output{flex:1;min-height:0;overflow-y:auto;padding:16px;scrollbar-width:thin;scrollbar-color:var(--control) transparent}.item{width:100%;min-height:52px;margin:0;padding:11px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;border-radius:var(--radius-inset);background:transparent;color:var(--muted);text-align:left;cursor:pointer;transition:background var(--tr),color var(--tr),box-shadow var(--tr)}.item:hover,.item:focus-visible{background:var(--raised);color:var(--text)}.item.copied{background:color-mix(in srgb,var(--success) 10%,var(--panel));color:var(--success)}.password{min-width:0;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:1rem;line-height:1.45;word-break:break-all}.copied-label{flex:0 0 auto;color:var(--success);font-size:.8125rem;font-weight:650;opacity:0}.item.copied .copied-label{opacity:1}.empty{min-height:100%;display:grid;place-items:center;padding:40px 20px;color:var(--subtle);text-align:center;font-size:.9375rem}.empty.error{color:var(--danger)}
.local-note{width:100%;margin:14px auto 0;padding:0 12px;color:var(--subtle);font-size:.8125rem;line-height:1.5;text-align:center;}.site-credit{flex-shrink:0;width:100%;margin:28px 0 0;padding:12px 0 0;color:var(--subtle);font-size:.8125rem;line-height:1.5;text-align:center}.site-credit a{color:var(--muted);font-weight:650;text-decoration:none}.site-credit a:hover{color:var(--text);text-decoration:underline;text-underline-offset:3px}

/* Shared frame and motion: MTcord's 140ms ease timing. */

.shell {
  padding: 0;
  gap: var(--gap-panel);
  border-radius: var(--radius-app);
  background: transparent;
  transition: box-shadow var(--tr);
}

.panel,
.toolbar,
.output-toolbar,
.tabs,
.actions,
.output-actions {
  border-radius: 0;
  transition: background-color var(--tr), color var(--tr);
}

html,
.site-credit,
.site-credit a,
.local-note,
:where(.header, .panel) :where(h1, p, strong, span, label, small, time) {
  transition: background-color var(--tr), color var(--tr);
}


@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }
}

@media(max-width:980px){body{padding:20px 16px 14px}.page{display:block}.app{margin:auto}.shell{height:auto;grid-template-columns:1fr}.output-panel{min-height:520px}.local-note{white-space:normal}}
@media(max-width:560px){body{padding:14px 10px}.header{margin:0 4px 16px}.appearance{min-height:38px;padding:0 11px;font-size:.8125rem}.section{padding:18px}.char-grid{gap:8px}.select-control{min-height:78px;padding:11px}.toolbar,.output-toolbar{padding:0 16px}.output-info{gap:8px}.toolbar-actions{flex-shrink:0}.btn{padding:0 11px}.local-note{margin-top:12px;padding:0 8px}.site-credit{margin-top:22px}.row{gap:12px}.input{width:112px}}

.symbol-input:not([hidden]){animation:fade-in var(--tr)}.copied-label{transition:opacity var(--tr),color var(--tr)}

@media(max-width:560px){.header{gap:12px}.actions,.output-actions{padding:12px 16px}}

.appearance{flex:0 0 auto;white-space:nowrap}
