:root{
  --canvas:#f8f7f2;
  --paper:#ffffff;
  --surface:#f2f1ec;
  --input:#ffffff;
  --ink:#10131a;
  --muted:#4a505c;
  --faded:#69717f;
  --accent:#ff304f;
  --accent-text:#c71835;
  --accent-ink:#ffffff;
  --accent-soft:#ffe8ed;
  --secondary:#b9e6ff;
  --line:#d9d8d2;
  --error:#b4233d;
  --radius:14px;
  --shadow:0 1px 2px rgba(16,19,26,.06),0 10px 30px rgba(16,19,26,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--canvas)}
body{margin:0;min-height:100vh;padding-bottom:72px;background:radial-gradient(circle at 12% 5%,var(--accent-soft),transparent 34%),var(--canvas);color:var(--ink);font:400 16px/1.6 "Karla",sans-serif;-webkit-font-smoothing:antialiased}
button,input,textarea{font:inherit}
a{color:inherit}
.paper-grain{position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.ticket,.wrap{width:min(680px,100%);margin-inline:auto;padding-inline:20px}
.ticket{margin-top:36px}
.ticket-inner,.exhibit,.output-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.ticket-inner{position:relative;overflow:hidden;padding:34px 30px 26px}
.ticket-inner::before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 7px,var(--accent-soft) 7px 8px);opacity:.55}
.ticket-inner::after{content:"";position:absolute;top:0;left:0;width:100%;height:5px;background:var(--accent)}
.stub-row{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.eyebrow{margin:0 0 7px;color:var(--accent-text);font:600 .72rem/1.3 "JetBrains Mono",monospace;letter-spacing:.13em;text-transform:uppercase}
.title{margin:0;color:var(--ink);font:500 clamp(1.75rem,7vw,2.15rem)/1.15 "Fraunces",serif;letter-spacing:-.02em}
.title em{color:var(--accent-text);font-weight:500}
.context{max-width:390px;margin:7px 0 0;color:var(--muted);font-size:.9rem}
.price-tag{flex:0 0 auto;text-align:right;font-family:"JetBrains Mono",monospace}
.price-tag .label{display:block;color:var(--muted);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}
.price-tag .amount{display:block;color:var(--ink);font-size:1.42rem;line-height:1.3}
.perforation{position:relative;height:0;margin:25px -30px 0;border-top:2px dashed var(--line)}
.perforation::before,.perforation::after{content:"";position:absolute;top:-10px;width:19px;height:19px;border-radius:50%;background:var(--canvas)}
.perforation::before{left:-10px}.perforation::after{right:-10px}
.wrap{margin-top:8px}
.exhibit{margin-top:18px;overflow:hidden}
.exhibit-head{display:flex;align-items:flex-start;gap:12px;padding:18px 24px 15px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--accent-soft),var(--paper))}
.exhibit-num{display:inline-grid;min-width:42px;height:27px;padding:0 9px;place-items:center;border-radius:999px;background:var(--accent);color:var(--accent-ink);font:600 .75rem/1 "JetBrains Mono",monospace;letter-spacing:.05em;text-transform:lowercase}
.exhibit-title{margin:0;color:var(--ink);font:500 1.24rem/1.25 "Fraunces",serif}
.exhibit-sub{margin:3px 0 0;color:var(--muted);font-size:.82rem;font-style:italic}
.exhibit-body{display:grid;gap:17px;padding:21px 24px 25px;color:var(--ink)}
.tnc-list{gap:12px}.tnc-list p{margin:0;color:var(--ink);font-size:.9rem;line-height:1.7}.tnc-list strong{color:var(--accent-text)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:7px;color:var(--ink)}
.field.long{grid-column:1/-1}
.field>span{color:var(--ink);font:600 .83rem/1.4 "JetBrains Mono",monospace;letter-spacing:.02em}
.field b{color:var(--error)}
input[type="text"],input[type="date"],textarea{width:100%;min-height:45px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--input);color:var(--ink);outline:none}
textarea{min-height:92px;resize:vertical}
input::placeholder,textarea::placeholder{color:var(--faded);opacity:1}
input:disabled{background:var(--surface);color:var(--muted);opacity:1}
input:focus,textarea:focus,.link-suffix:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.invalid,.link-suffix.invalid{border-color:var(--error)!important;box-shadow:0 0 0 3px rgba(180,35,61,.12)!important}
.checkbox-line{display:flex;align-items:flex-start;gap:11px;padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--accent-soft);color:var(--ink);cursor:pointer}
.checkbox-line.neutral{background:var(--surface)}
.checkbox-line input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent)}
.checkbox-line span{display:grid}.checkbox-line strong{font-size:.92rem}.checkbox-line small{color:var(--muted);font-size:.82rem}
.radio-group{display:flex;gap:10px}.radio-pill{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);text-align:center;cursor:pointer}.radio-pill input{position:absolute;opacity:0;pointer-events:none}.radio-pill.active{border-color:var(--accent);background:var(--accent-soft);font-weight:700}
.swatches{display:flex;flex-wrap:wrap;gap:8px}.swatch{display:flex;align-items:center;gap:7px;padding:5px 9px 5px 5px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:500 .73rem "JetBrains Mono",monospace}.swatch i{width:18px;height:18px;border:1px solid var(--line);border-radius:50%}
.palette-inputs{display:none;gap:9px}.palette-inputs.show{display:grid}.palette-row{display:grid;grid-template-columns:42px 128px;gap:9px}.palette-row input[type="color"]{width:42px;height:42px;padding:2px;border:1px solid var(--line);border-radius:9px;background:var(--input)}
.default-hint{margin:0;color:var(--muted);font-size:.8rem}
.note-block{display:grid;gap:4px;padding:14px;border:1px dashed var(--accent);border-radius:9px;background:var(--accent-soft);color:var(--ink)}.note-block strong{color:var(--ink)}.note-block span{color:var(--muted);font-size:.87rem}
.link-suffix{display:flex;overflow:hidden;border:1px solid var(--line);border-radius:9px;background:var(--input)}.link-suffix input{min-width:0;flex:1;border:0;border-radius:0;box-shadow:none!important}.link-suffix i{display:flex;align-items:center;padding:0 11px;border-left:1px solid var(--line);background:var(--surface);color:var(--muted);font:normal .74rem "JetBrains Mono",monospace}
.generate-block{margin:24px 0 0;text-align:center}.generate-block>p{margin:11px auto 0;color:var(--muted);font-size:.82rem}.generate-block a{color:var(--accent-text);font-weight:700}.btn{display:inline-flex;justify-content:center;align-items:center;padding:13px 25px;border:1px solid var(--ink);border-radius:999px;background:var(--ink);color:var(--paper);font:600 .82rem "JetBrains Mono",monospace;text-decoration:none;cursor:pointer;transition:transform .15s,opacity .15s}.btn:hover{transform:translateY(-1px)}.btn.secondary{background:var(--paper);color:var(--ink)}
.form-error{padding:11px;border:1px solid var(--error);border-radius:9px;background:#fff0f3!important;color:var(--error)!important;font-weight:700!important}
.output-card{margin-top:22px;padding:21px 24px}.output-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.output-head h2{margin:0;color:var(--ink);font:500 1.2rem "Fraunces",serif}.output-head span{color:var(--accent-text);font:600 .75rem "JetBrains Mono",monospace}
pre{max-height:430px;margin:15px 0;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:15px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:500 .78rem/1.65 "JetBrains Mono",monospace}.output-actions{display:flex;gap:10px;flex-wrap:wrap}.output-actions .btn{flex:1;min-width:170px}#resultMessage{margin:12px 0 0;color:var(--muted);font-size:.86rem}
footer{text-align:center;margin-top:38px;color:var(--muted);font:500 .75rem "JetBrains Mono",monospace;letter-spacing:.05em}
body[data-theme="museum"]{--radius:5px}body[data-theme="museum"] .exhibit-num{border-radius:3px}body[data-theme="phone"] .ticket-inner{border-radius:28px}body[data-theme="tumblr"] .ticket-inner::after{height:8px}body[data-theme="pinterest"] .exhibit-num{border-radius:50%}body[data-theme="search"] .exhibit,body[data-theme="search"] .ticket-inner{border-radius:10px}body[data-theme="wax"] .ticket-inner::after{background:repeating-linear-gradient(45deg,var(--accent) 0 8px,var(--secondary) 8px 16px)}body[data-theme="room"] .exhibit{border-left:4px solid var(--secondary)}body[data-theme="game"] .ticket-inner::after{background:linear-gradient(90deg,var(--accent),var(--secondary))}
@media(max-width:560px){body{font-size:16px}.ticket,.wrap{padding-inline:12px}.ticket{margin-top:12px}.ticket-inner{padding:26px 20px 20px}.stub-row{display:grid}.price-tag{text-align:left}.price-tag .amount{font-size:1.3rem}.perforation{margin-inline:-20px}.exhibit-head{padding:17px 16px 14px}.exhibit-body,.output-card{padding:19px 16px 21px}.row2{grid-template-columns:1fr}.tnc-list p{font-size:.88rem}.link-suffix i{padding-inline:8px;font-size:.68rem}.output-actions{display:grid}.output-actions .btn{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
