:root { color-scheme:light; --paper:#fffaf0; --ink:#43305d; --muted:#75667f; --purple:#8856c5; --deep:#7041ae; --line:#e7dced; --lavender:#eee5fa; font-family:"Avenir Next",ui-rounded,"Trebuchet MS",sans-serif; color:var(--ink); background:var(--paper); font-synthesis:none; }
* { box-sizing:border-box; } body { margin:0; background-image:radial-gradient(#d9cde05c .85px,transparent .85px); background-size:22px 22px; } button,input,select { font:inherit; color:inherit; } button,a,input,label,select { -webkit-tap-highlight-color:transparent; } button,a { touch-action:manipulation; } button { cursor:pointer; } button:disabled { cursor:wait; opacity:.6; } a { color:inherit; text-decoration:none; } :focus-visible { outline:3px solid var(--purple); outline-offset:4px; } img,svg { vertical-align:middle; max-width:100%; }
.app-shell { max-width:1440px; margin:auto; padding:0 44px; } .masthead { min-height:104px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); } .brand { display:flex; align-items:center; gap:10px; font-size:22px; font-weight:850; letter-spacing:-.8px; white-space:nowrap; } .brand img { flex:none; } .brand-star { color:var(--purple); margin-left:5px; } .header-actions { display:flex; align-items:center; gap:12px; } select { background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:10px; min-height:44px; max-width:126px; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:10px; border:1px solid var(--line); border-radius:14px; padding:12px 18px; font-weight:750; font-size:14px; min-height:46px; } .button-light { background:#fffdf8; } .button-light:hover { background:var(--lavender); } .button-primary { background:var(--purple); border-color:var(--purple); color:white; box-shadow:0 4px 0 #603aac; } .button-primary:hover { background:var(--deep); } .workspace { display:grid; grid-template-columns:300px minmax(0,1fr); gap:54px; padding:40px 0; align-items:start; } .controls { scroll-margin-top:20px; } .eyebrow { font-size:10px; letter-spacing:1.3px; color:var(--deep); font-weight:850; margin:0 0 14px; } h1 { font-size:46px; line-height:1.08; letter-spacing:-2px; margin:0 0 16px; font-weight:850; } .intro-copy { color:var(--muted); font-size:15px; line-height:1.7; margin:0 0 28px; } fieldset { border:0; padding:0; margin:0 0 24px; min-width:0; } legend { display:flex; align-items:center; gap:10px; width:100%; margin-bottom:12px; padding:0; font-size:14px; font-weight:750; } .step { color:var(--purple); font-size:11px; } .style-options { display:grid; grid-template-columns:1fr 1fr; gap:12px; } .style-card { position:relative; display:flex; flex-direction:column; padding:12px; border:1px solid var(--line); background:#fffdf8; border-radius:16px; cursor:pointer; min-width:0; } .style-card:has(input:checked) { background:var(--lavender); border-color:var(--purple); box-shadow:inset 0 0 0 1px var(--purple); } .style-card:has(input:focus-visible) { outline:3px solid var(--purple); outline-offset:3px; } .style-card input { position:absolute; opacity:0; width:1px; height:1px; } .style-card svg { width:65px; height:50px; stroke:var(--deep); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; margin-bottom:6px; } .style-name { font-size:14px; font-weight:800; } .style-caption { color:var(--muted); font-size:11px; margin-top:3px; } output { margin-left:auto; font-size:21px; color:var(--deep); } input[type=range] { --range:66.667%; appearance:none; display:block; width:100%; height:6px; border-radius:6px; background:linear-gradient(to right,var(--purple) 0 var(--range),#e0d6e7 var(--range) 100%); margin:17px 0; cursor:pointer; } input[type=range]::-webkit-slider-thumb { appearance:none; width:22px; height:22px; border:3px solid var(--paper); border-radius:50%; background:var(--purple); box-shadow:0 0 0 1px var(--purple); } input[type=range]::-moz-range-thumb { width:17px; height:17px; border:3px solid var(--paper); border-radius:50%; background:var(--purple); } .range-labels { display:flex; justify-content:space-between; font-size:11px; color:var(--muted); gap:12px; } .seed-input-wrap { display:flex; background:#fffdf8; border:1px solid var(--line); border-radius:12px; overflow:hidden; } .seed-input-wrap:focus-within { outline:2px solid var(--purple); outline-offset:2px; } .seed-input-wrap input { width:100%; min-width:0; border:0; padding:12px; outline:0; background:transparent; } .seed-input-wrap button { min-width:48px; border:0; border-left:1px solid var(--line); background:var(--lavender); color:var(--deep); font-size:24px; } .field-hint { margin:8px 0 0; color:var(--muted); font-size:11px; line-height:1.5; } .generate-button { width:100%; justify-content:space-between; } .controls-note { color:var(--muted); font-size:12px; line-height:1.7; margin-top:24px; }
.maze-panel { background:white; border:1px solid var(--line); border-radius:24px; overflow:hidden; min-width:0; box-shadow:0 8px 30px #43305d06; } .panel-toolbar { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:20px 24px 0; font-size:11px; font-weight:800; letter-spacing:.7px; color:var(--deep); } .settings-link { display:none; } .maze-stage { aspect-ratio:1; width:min(100%,800px); margin:auto; display:grid; place-items:center; padding:0 12px; } .maze-stage>svg { display:block; width:100%; height:auto; } .maze-stage .solution-path { stroke:var(--purple); } .canvas-caption { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; padding:0 24px 20px; font-size:12px; } .verified-badge { color:var(--muted); font-size:11px; } .panel-actions { display:flex; justify-content:space-between; align-items:center; gap:10px; border-top:1px solid var(--line); padding:16px 24px; } .export-actions { display:flex; gap:8px; } .maze-stats { display:flex; flex-wrap:wrap; gap:8px 16px; padding:0 24px 18px; color:var(--muted); font-size:11px; } .maze-stats b { color:var(--ink); } .app-status { font-size:13px; padding:0 24px; color:var(--deep); overflow-wrap:anywhere; } .app-status:not(:empty) { padding-bottom:16px; } .footer { display:flex; justify-content:space-between; gap:16px; border-top:1px solid var(--line); padding:24px 0; color:var(--muted); font-size:12px; } .footer p { margin:0; } .footer a { color:var(--deep); font-weight:750; } .print-sheet { display:none; } .sr-only { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media(max-width:1000px) { .app-shell { padding:0 28px; } .workspace { grid-template-columns:260px minmax(0,1fr); gap:28px; } h1 { font-size:40px; } .panel-actions { padding:14px; } .panel-actions .button { padding:10px 12px; } }
@media(max-width:760px) { .app-shell { padding:0 18px; } .masthead { min-height:88px; flex-wrap:wrap; gap:10px; padding:14px 0; } .brand { font-size:19px; } .brand img { width:38px; height:38px; } .brand-star { display:none; } .header-actions { gap:8px; } select { max-width:105px; font-size:13px; padding:8px; } #print-button { font-size:13px; padding:9px 12px; } .workspace { display:flex; flex-direction:column; gap:28px; padding:22px 0; } .maze-panel { order:-1; width:100%; border-radius:18px; } .settings-link { display:block; white-space:nowrap; flex:none; font-size:11px; text-decoration:underline; letter-spacing:0; } .panel-toolbar { padding:16px 16px 0; font-size:10px; } .maze-stage { padding:0 4px; } .canvas-caption { padding:0 16px 14px; font-size:11px; } .verified-badge { font-size:10px; } .panel-actions { flex-wrap:wrap; } .maze-stats { padding:0 16px 14px; font-size:10px; } .controls { width:100%; max-width:480px; margin:auto; } h1 { font-size:36px; } .intro-copy { margin-bottom:22px; } .style-card { display:grid; grid-template-columns:64px 1fr; align-items:center; column-gap:6px; } .style-card svg { grid-row:span 2; margin:0; width:58px; } .style-caption { font-size:10px; } .footer { flex-direction:column; gap:12px; } }
@media(max-width:370px) { .brand { font-size:18px; } .brand img { width:32px; height:32px; } .header-actions { width:100%; justify-content:space-between; } .style-card { display:flex; padding:10px; } .style-card svg { margin-bottom:4px; } .panel-actions .button { font-size:12px; padding:10px; } .export-actions { gap:6px; } }
@media print { @page { size:A4 portrait; margin:12mm; } html,body { background:white; margin:0; padding:0; } .app-shell,noscript { display:none!important; } .print-sheet { display:block; width:100%; max-width:186mm; margin:0 auto; break-inside:avoid; } .print-sheet>svg { display:block; width:100%; height:auto; max-height:249mm; } }
