:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}.page{background:radial-gradient(circle at top,#22384a 0%,#0f1620 65%);flex-direction:column;gap:16px;min-height:100vh;padding:18px;display:flex}.canvas-wrap{background:#fff;border:1px solid #0f1f2d29;border-radius:14px;width:100%;padding:10px}.seating-chart{border-radius:12px;width:100%;height:auto;display:block}.controls{color:#f6e9ce;background:#09121a5c;border:1px solid #f3e8cf2e;border-radius:12px;gap:10px;padding:12px;display:grid}.toolbar-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.field{flex-direction:column;gap:6px;font-size:.9rem;display:flex}.field.compact{min-width:148px}.field input[type=number],.field input[type=text]{color:#f7efdc;background:#09121a94;border:1px solid #f5e3c273;border-radius:8px;width:140px;padding:7px 9px}.field.readonly input{opacity:.8}.toolbar-btn{color:#f7efdb;cursor:pointer;background:#0d1f29b8;border:1px solid #f6e9ce73;border-radius:8px;align-items:center;min-height:36px;padding:8px 14px;font-size:.9rem;line-height:1;text-decoration:none;transition:background .2s,border-color .2s;display:inline-flex}.toolbar-btn:hover{background:#102a37d9;border-color:#f6e9cead}.toolbar-btn:disabled{cursor:wait;opacity:.7}.toolbar-btn-primary{background:#3a708bb8}.toolbar-btn-primary:hover{background:#4282a1d9}.toolbar-toggle{color:#f7efdb;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;min-height:36px;padding:8px 4px;font-size:.9rem;display:inline-flex}.toolbar-toggle input{cursor:pointer;accent-color:#803459;width:16px;height:16px}.toolbar-metrics{flex-wrap:wrap;align-items:end;gap:10px 14px;display:flex}.file-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.import-notice{color:#f6e9ce;margin:0 0 3px;font-size:.9rem}.messages{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;display:grid}.message-block{border-radius:10px;padding:10px 12px;font-size:.9rem}.message-block h2{margin:0 0 8px;font-size:1rem}.message-block ul{gap:4px;margin:0;padding-left:18px;display:grid}.message-block.error{color:#ffd5d5;background:#58171773;border:1px solid #ff81818c}.message-block.warning{color:#ffe7bb;background:#573c1266;border:1px solid #ffd2698c}.chart-bg{fill:#fff}.chart-main-title{fill:red;letter-spacing:.06em;font-family:Imperial Script,cursive;font-size:128px}.chart-main-subtitle{fill:red;letter-spacing:.2em;opacity:.95;font-family:Imperial Script,cursive;font-size:58px}.connector{fill:none;stroke:#d0c8b4;stroke-width:2.5px;opacity:.8}.court-frame{fill:#803459;stroke:#f3d1e5;stroke-width:2.2px}.court-divider{stroke:#dfd6c0e6;stroke-width:1.4px}.court-shadow{fill:#030a1059}.court-play-area{fill:#c86aa0;stroke:#ffdcef66;stroke-width:1px}.court-surface-overlay{fill:url(#court-surface-pattern)}.court-boundary{fill:none;stroke:#e4f8ecb8;stroke-width:1.2px}.court-net{stroke:#e6f9ed94;stroke-width:1.1px}.court-net-post{stroke:#e6f9ed85;stroke-width:1.1px}.court-surface-grain{stroke:#caffe812;stroke-width:.8px}.court-surface-grain.soft{stroke:#caffe80b}.court-title{fill:#f4e7cb;letter-spacing:.14em;text-shadow:0 1px 2px #0000002e;font-family:Imperial Script,cursive;font-size:30px}.guest-name{fill:#f5fffb;letter-spacing:.02em;font-family:Atkinson Hyperlegible,sans-serif;font-size:15px;font-weight:500}.centre-outer{fill:#803459;stroke:#f3d1e5;stroke-width:2.4px}.centre-inner{fill:#c86aa0;stroke:#ffdcefbf;stroke-width:1.2px}.centre-title{fill:#f7ead0;letter-spacing:.16em;font-family:Imperial Script,cursive;font-size:20px}.couple-name{fill:#f8f0de;dominant-baseline:middle;font-family:Imperial Script,cursive;font-size:78px}.couple-ampersand{fill:#f8f0de;dominant-baseline:middle;font-family:Imperial Script,cursive;font-size:36px}.centre-date{fill:#f7ead0;letter-spacing:.12em;font-family:Imperial Script,cursive;font-size:22px}.logo-date-text{fill:#803459;letter-spacing:.04em;font-family:Imperial Script,cursive;font-size:30px}.centre-side-connector{fill:none;stroke:#f7ead0cc;stroke-width:1.4px}.instruction-text{fill:red;letter-spacing:.01em;font-family:Imperial Script,cursive;font-size:40px}.sand-shore{fill:#e9dac2}.sand-dot{fill:#b1977652}.sand-grain-layer{opacity:.72}
