:root{--paper:#eff2f0;--paper-dim:#e4e8e5;--ink:#14181c;--steel:#5c6773;--steel-soft:#8a939d;--line:#c7cdc9;--signal:#e8432f;--signal-ink:#fff;--amber:#f2a93b;--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background-color:var(--paper);background-image:radial-gradient(var(--line) 1px, transparent 1px);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;background-size:22px 22px}#root{min-height:100vh}h1,h2,h3{font-family:var(--mono);letter-spacing:-.01em;margin:0}button{font-family:var(--mono)}a{color:inherit}::selection{background:var(--signal);color:var(--signal-ink)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.app{flex-direction:column;gap:28px;max-width:1180px;min-height:100vh;margin:0 auto;padding:32px 24px 48px;display:flex}.header{border-bottom:2px solid var(--ink);flex-direction:column;gap:14px;padding-bottom:16px;display:flex}.header__top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.header__brand{align-items:center;gap:12px;display:flex}.header__mark{flex:none}.header__suite{font-family:var(--mono);color:var(--signal);letter-spacing:.12em;margin:0 0 4px;font-size:11px;font-weight:600}.header h1{letter-spacing:.01em;font-size:24px;font-weight:700}.header__note{color:var(--steel-soft);font-size:12px;font-family:var(--mono);text-align:right;max-width:260px;margin:0}.toolnav{flex-wrap:wrap;gap:8px;display:flex}.toolnav__item{font-family:var(--mono);letter-spacing:.02em;color:var(--steel);border:1.5px solid var(--line);cursor:pointer;background:#fff;align-items:center;gap:6px;padding:6px 10px;font-size:11.5px;display:inline-flex}.toolnav__item:hover{border-color:var(--steel);color:var(--ink)}.toolnav__item.is-active{color:var(--ink);border-color:var(--ink);background:var(--paper)}.toolnav__soon{border:1px solid var(--steel-soft);color:var(--steel-soft);letter-spacing:.06em;text-transform:uppercase;padding:1px 5px;font-size:9.5px;font-style:normal}.layout{grid-template-columns:360px 1fr;align-items:start;gap:24px;display:grid}@media (width<=860px){.layout{grid-template-columns:1fr}}.panel{border:1.5px solid var(--ink);background:#fff;flex-direction:column;gap:2px;display:flex}.station{border-bottom:1px solid var(--line);padding:18px 18px 20px}.station:last-child{border-bottom:none}.station__head{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.station__mark{flex:none;margin-top:2px}.station__label{letter-spacing:.12em;text-transform:uppercase;font-size:12px;font-weight:600}.station__hint{color:var(--steel);margin:3px 0 0;font-size:12.5px;line-height:1.4}.station__body{flex-direction:column;gap:12px;display:flex}.text-input{border:1.5px solid var(--ink);background:var(--paper);width:100%;font-family:var(--mono);color:var(--ink);padding:11px 12px;font-size:13.5px}.text-input:focus-visible{background:#fff}.field-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;display:grid}.field-note{color:var(--signal);margin:0;font-size:12px;line-height:1.4}.color-field{flex-direction:column;gap:6px;min-width:0;font-size:11.5px;display:flex}.color-field__label{color:var(--steel);font-family:var(--mono);letter-spacing:.03em}.color-field__control{border:1.5px solid var(--ink);background:#fff;align-items:center;min-width:0;display:flex}.color-field--disabled .color-field__control{opacity:.4}.color-field__control input[type=color]{border:none;border-right:1.5px solid var(--ink);cursor:pointer;background:0 0;width:30px;height:30px;padding:0}.color-field__hex{width:0;min-width:0;font-family:var(--mono);height:30px;color:var(--ink);background:0 0;border:none;flex:1 1 0;padding:0 8px;font-size:12px}.range-field{flex-direction:column;gap:6px;display:flex}.range-field__row{justify-content:space-between;align-items:baseline;display:flex}.range-field__label{color:var(--steel);font-size:12.5px}.range-field__value{font-family:var(--mono);color:var(--ink);font-size:11.5px}.range-field input[type=range]{width:100%;accent-color:var(--signal)}.toggle-group{flex-direction:column;gap:6px;display:flex}.toggle-group__label{color:var(--steel);font-size:12.5px}.toggle-group__row{flex-wrap:wrap;gap:6px;display:flex}.toggle-group__opt{border:1.5px solid var(--ink);color:var(--ink);cursor:pointer;background:#fff;padding:7px 10px;font-size:11.5px}.toggle-group__opt.is-active{background:var(--ink);color:var(--paper)}.checkbox{color:var(--steel);cursor:pointer;align-items:center;gap:8px;font-size:12.5px;display:flex}.checkbox input{accent-color:var(--signal);width:15px;height:15px}.logo-drop{border:1.5px dashed var(--steel-soft);cursor:pointer;text-align:center;background:var(--paper-dim);padding:16px;transition:border-color .15s,background .15s}.logo-drop:hover,.logo-drop.is-dragging{border-color:var(--signal);background:#fff}.logo-drop__empty{flex-direction:column;gap:4px;display:flex}.logo-drop__title{font-family:var(--mono);font-size:12.5px}.logo-drop__sub{color:var(--steel);font-size:11.5px}.logo-drop__preview{text-align:left;align-items:center;gap:12px;display:flex}.logo-drop__preview img{object-fit:contain;border:1.5px solid var(--ink);background:#fff;flex:none;width:44px;height:44px;padding:4px}.logo-drop__meta{flex-direction:column;gap:4px;font-size:12px;display:flex}.logo-drop__clear{color:var(--signal);font-family:var(--mono);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:11.5px;text-decoration:underline}.stage{border:1.5px solid var(--ink);background:#fff;flex-direction:column;align-items:center;gap:18px;padding:40px 24px;display:flex;position:sticky;top:24px}.stage__frame{aspect-ratio:1;justify-content:center;align-items:center;width:min(420px,80vw);display:flex;position:relative}.stage__frame.is-empty{background-image:radial-gradient(var(--line) 1.5px, transparent 1.5px);background-size:16px 16px}.stage__canvas{width:100%;height:100%;image-rendering:-webkit-optimize-contrast}.stage__placeholder{text-align:center;font-family:var(--mono);letter-spacing:.08em;color:var(--steel-soft);justify-content:center;align-items:center;padding:24px;font-size:11.5px;display:flex;position:absolute;inset:0}.stage__mark{opacity:.85;position:absolute}.stage__mark--tl{top:-4px;left:-4px}.stage__mark--tr{top:-4px;right:-4px;transform:rotate(90deg)}.stage__mark--bl{bottom:-4px;left:-4px;transform:rotate(-90deg)}.stage__mark--br{bottom:-4px;right:-4px;transform:rotate(180deg)}.stage__actions{gap:10px;width:100%;max-width:420px;display:flex}.btn{letter-spacing:.04em;cursor:pointer;border:1.5px solid var(--ink);flex:1;padding:12px 16px;font-size:12.5px;transition:transform .1s}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.btn--ghost{color:var(--ink);background:0 0}.stage__status{font-family:var(--mono);color:var(--steel-soft);text-align:center;min-height:14px;margin:0;font-size:11px}.footer{border-top:1px solid var(--line);font-family:var(--mono);color:var(--steel-soft);flex-wrap:wrap;justify-content:space-between;gap:6px;margin-top:auto;padding-top:18px;font-size:11px;display:flex}.stage--wide{align-items:stretch;width:100%}.stage--wide .stage__status{text-align:left}.swatch-grid{border:1.5px solid var(--ink);flex-wrap:wrap;width:100%;display:flex}.swatch{cursor:pointer;min-height:150px;font-family:var(--mono);text-align:left;border:none;flex-direction:column;flex:110px;justify-content:flex-end;align-items:flex-start;gap:3px;padding:10px 12px;display:flex}.swatch:hover{outline:2px solid var(--ink);outline-offset:-2px}.swatch__label{text-transform:uppercase;letter-spacing:.08em;opacity:.8;font-size:10.5px}.swatch__hex{font-size:12.5px;font-weight:600}.scale-list{border:1.5px solid var(--ink);background:#fff;flex-direction:column;width:100%;display:flex}.scale-row{border-bottom:1px solid var(--line);align-items:baseline;gap:16px;padding:14px 18px;display:flex}.scale-row:last-child{border-bottom:none}.scale-row.is-base{background:var(--paper-dim)}.scale-row__meta{width:110px;font-family:var(--mono);color:var(--steel);flex-direction:column;flex:none;gap:2px;font-size:11px;display:flex}.scale-row__name{color:var(--ink);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.scale-row__sample{font-family:var(--body);white-space:nowrap;text-overflow:ellipsis;min-width:0;margin:0;line-height:1.15;overflow:hidden}.favicon-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;width:100%;display:grid}.favicon-tile{border:1.5px solid var(--ink);background:#fff;flex-direction:column;align-items:center;gap:10px;padding:16px;display:flex}.favicon-tile__swatch{background:#fff;justify-content:center;align-items:center;width:76px;height:76px;display:flex}.favicon-tile__swatch.has-checker{background-image:conic-gradient(var(--paper-dim) 90deg, transparent 90deg 180deg, var(--paper-dim) 180deg 270deg, transparent 270deg);background-size:14px 14px}.favicon-tile__swatch img{max-width:100%;max-height:100%}.favicon-tile__meta{text-align:center;flex-direction:column;gap:2px;display:flex}.favicon-tile__name{font-family:var(--mono);font-size:12px;font-weight:600}.favicon-tile__note{color:var(--steel);font-size:11px}.favicon-tile__btn{flex:none;width:100%;padding:8px}.contrast-ratio{font-family:var(--mono);margin:0 0 12px;font-size:38px;font-weight:700}.contrast-checks{flex-direction:column;gap:6px;display:flex}.contrast-check{border:1.5px solid var(--line);font-family:var(--mono);justify-content:space-between;padding:8px 10px;font-size:12px;display:flex}.contrast-check.is-pass{color:#1a7a4c;border-color:#1a7a4c}.contrast-check.is-fail{border-color:var(--signal);color:var(--signal)}.contrast-preview{border:1.5px solid var(--ink);flex-direction:column;gap:16px;width:100%;padding:40px 32px;display:flex}.contrast-preview__large{margin:0;font-size:28px;font-weight:700}.contrast-preview__normal{margin:0;font-size:16px}.contrast-preview__small{opacity:.85;margin:0;font-size:12px}
