/* taste-gate: allow T7 T12 T2 because the personality grid already uses serif type and 11px axis labels. The same paper, colored pencil and serif voice as the approved Plan. */
.route-frank { max-width: 1000px; margin: 0 auto; }
.frank-style-form { max-width: none; }
.style-intro { color: var(--muted); margin: -8px 0 30px; font-size: 14px; }
.style-matrices { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 48px; }
.style-matrix { min-width: 0; }
.style-matrix h2 { font-size: 24px; margin: 0 0 18px; font-weight: 500; }
.style-corners { display: flex; justify-content: space-between; gap: 15px; font-size: 13px; font-weight: 600; }
.style-corners span:last-child { text-align: right; }
.style-grid { position: relative; height: 190px; margin: 17px 22px; border: 1px solid var(--muted); border-radius: 3px 6px 2px 5px; cursor: crosshair; touch-action: none; background-color: var(--blue); background-image: linear-gradient(to right, color-mix(in srgb,var(--ink) 11%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in srgb,var(--ink) 11%,transparent) 1px,transparent 1px); background-size: 25% 25%; }
.style-grid-pace { background-color: var(--wheat); }
.style-grid::before,.style-grid::after { content: ''; position: absolute; pointer-events: none; }
.style-grid::before { left: 50%; height: 100%; border-left: 1px dashed var(--muted); opacity: .4; }
.style-grid::after { top: 50%; width: 100%; border-top: 1px dashed var(--muted); opacity: .4; }
.style-axis-top,.style-axis-bottom { position: absolute; left: 50%; transform: translateX(-50%); font-size: 11px; color: var(--muted); padding: 1px 5px; background: var(--blue); }
.style-grid-pace :is(.style-axis-top,.style-axis-bottom) { background: var(--wheat); }
.style-axis-top { top: 8px; }.style-axis-bottom { bottom: 8px; }
#app .style-dot { position: absolute; z-index: 1; width: 44px; height: 44px; padding: 10px; min-height: 44px; border: 0; border-radius: 50%; transform: translate(-50%,-50%); background: transparent; cursor: grab; touch-action: none; }
.style-dot span { display: block; width: 24px; height: 24px; background: var(--red); border: 2px solid var(--white); border-radius: 48% 52% 45% 55%; box-shadow: 0 0 0 1.5px var(--red); }
#app .style-dot:active { cursor: grabbing; }
.style-values { font-size: 12px; color: var(--muted); margin: 14px 0 0; }
.style-sliders { margin: 0; border: 0; padding: 0; }
.style-sliders summary { width: fit-content; font-size: 13px; display: flex; align-items: center; cursor: pointer; text-decoration: underline; }
.style-sliders label { font-size: 13px; margin-top: 12px; }
.style-range-ends { display: flex; justify-content: space-between; color: var(--muted); font-size: 12px; }
#app .style-sliders input[type=range] { width: 100%; min-height: 44px; padding: 0; box-shadow: none; accent-color: var(--red); }
/* taste-gate: allow T7 because the sample is Frank speaking, in the same serif as Plan. */
.style-stage { display: grid; grid-template-columns: minmax(0,1fr) minmax(200px,280px); gap: 28px; align-items: start; }
.style-sample { position: sticky; top: 12px; margin: 0; padding: 16px 18px; border-radius: 12px; background: var(--wheat); }
.style-sample h2 { font-size: 22px; font-weight: 500; margin: 0 0 8px; color: var(--red); }
#style-sample-reply { margin: 0; font: 400 22px/1.35 Georgia,serif; color: var(--ink); }
#style-sample-reply::before { content: ""; display: inline-block; width: 9px; height: 9px; margin-right: 8px; border-radius: 50%; background: var(--ochre); vertical-align: 2px; }
.style-sample-scene { margin: 10px 0 0; font-size: 13px; font-weight: 700; color: var(--green); }
.style-writing { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(0,1fr); gap: 40px; }
.style-writing label { display: block; margin: 0 0 10px; font-weight: 600; }
#style-notes { width: 100%; min-height: 170px; resize: none; overflow-y: auto; background: var(--white); }
.style-note-hint { display: flex; justify-content: space-between; gap: 15px; }
.style-import h2 { font-size: 22px; font-weight: 500; margin: 0; }
.style-import p { font-size: 14px; margin: 10px 0 14px; }
.style-import label { font-size: 12px; margin-bottom: 6px; }
.style-import-choices { margin: 16px 0; padding: 0; border: 0; min-width: 0; }
.style-import-choices legend { font-size: 12px; font-weight: 600; margin-bottom: 8px; padding: 0; }
.style-import .style-import-choices label { display: flex; align-items: center; gap: 12px; padding: 12px 14px; margin: 0; min-height: 48px; font-size: 14px; font-weight: 500; line-height: 1.45; cursor: pointer; background: var(--white); border: 1px solid var(--line); }
.style-import-choices label:first-of-type { border-radius: var(--button-radius) var(--button-radius) 0 0; }
.style-import-choices label:last-of-type { border-top: 0; border-radius: 0 0 var(--button-radius) var(--button-radius); }
.style-import-choices label:has(:checked) { background: var(--sage); }
.style-import-choices label:has(:focus-visible) { outline: 2px solid var(--focus); outline-offset: 3px; position: relative; z-index: 1; }
#app .style-import-choices input { appearance: none; -webkit-appearance: none; width: 18px; min-width: 18px; height: 18px; min-height: 18px; margin: 0; padding: 3px; border-radius: 50%; border: 1px solid var(--muted); background: var(--white); box-shadow: none; }
#app .style-import-choices input:checked { background: var(--green); background-clip: content-box; border-color: var(--green); }
@media(forced-colors:active) { #app .style-import-choices input { appearance: auto; } }
.style-import .hint { font-size: 12px; }
.style-handoff { margin: 20px 0; }.style-handoff[hidden] { display: none; }
.style-handoff label { display: block; margin-bottom: 10px; }
#style-prompt { width: 100%; resize: none; font-size: 14px; line-height: 1.5; margin-bottom: 12px; background: var(--white); }
.style-save-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--line); }
.style-save-row [role=status] { font-size: 13px; color: var(--muted); }
.style-scope { margin-top: 12px; }
@media(max-width:1050px) { .style-matrices { gap: 28px; }.style-writing { gap: 26px; } }
@media(max-width:650px) {
 .style-matrices,.style-writing { grid-template-columns: minmax(0,1fr); gap: 28px; }
 .style-grid { height: 185px; }.style-intro { line-height: 1.5; }
 .style-stage { display: flex; flex-direction: column; gap: 16px; }
 .style-sample { order: -1; position: sticky; top: 72px; z-index: 5; box-sizing: border-box; }
 .style-sample h2 { font-size: 15px; margin: 0 0 4px; }
 #style-sample-reply { font-size: 15px; line-height: 1.25; }
 .style-main { order: 1; }
 .frank-style-form .style-stage { gap: 0; }
 .frank-style-form .style-sample { height: 116px; margin: 0 0 -116px; overflow: hidden; padding: 10px 12px; }
 .frank-style-form .style-sample-scene { display: none; }
 .frank-style-form .style-intro { visibility: hidden; }
 body.form-keyboard-open .style-sample { position: static; height: auto; margin: 16px 0 0; overflow: visible; }
 body.form-keyboard-open .style-intro { visibility: visible; }
 #app .frank-style-form :is(textarea,input:not([type=range],[type=radio])) { font-size: 16px; }
 .style-save-row { gap: 10px 16px; }.style-matrix h2 { margin-bottom: 14px; }
}
