:root{--pink: #e91e8c;--pink-light: #fce4f2;--purple: #6b21a8;--bg: #fafafa;--surface: #fff;--text: #1a1a2e;--text-muted: #666;--border: #ddd;--error: #dc2626;--error-bg: #fef2f2;--success: #16a34a;--success-bg: #f0fdf4;--radius: 8px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app{max-width:960px;margin:0 auto;padding:1.5rem}.app-header{text-align:center;margin-bottom:1.5rem}.app-header h1{font-size:1.75rem;color:var(--pink);margin-bottom:.25rem}.app-header p{color:var(--text-muted);font-size:.95rem}.tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--border);margin-bottom:1.5rem}.tab{padding:.6rem 1.25rem;border:none;background:none;font-size:.95rem;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-muted);transition:color .15s,border-color .15s}.tab:hover:not(.disabled){color:var(--text)}.tab.active{color:var(--pink);border-bottom-color:var(--pink);font-weight:600}.tab.disabled{opacity:.4;cursor:not-allowed}button{font-size:.9rem;padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:background .15s,border-color .15s}button:hover{border-color:var(--pink)}button.primary{background:var(--pink);color:#fff;border-color:var(--pink)}button.primary:hover{background:#c4177a}button.secondary{color:var(--text-muted)}.data-input h2{margin-bottom:1rem}.preset-buttons{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.editor-area{margin-bottom:1rem}.editor-area label{display:block;font-size:.85rem;color:var(--text-muted);margin-bottom:.25rem}.editor-area textarea{width:100%;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.8rem;line-height:1.4;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);resize:vertical;background:var(--surface)}.editor-area textarea:focus{outline:2px solid var(--pink);border-color:transparent}.editor-area button{margin-top:.5rem}.error-box{background:var(--error-bg);border:1px solid var(--error);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.85rem;color:var(--error)}.error-box ul{margin:.5rem 0 0 1.25rem}.error-box li{margin-bottom:.25rem}.error-box code{background:#0000000f;padding:.1em .3em;border-radius:3px;font-size:.8rem}.success-box{background:var(--success-bg);border:1px solid var(--success);border-radius:var(--radius);padding:.75rem 1rem;font-size:.9rem;color:var(--success)}.print-controls{margin-bottom:1rem;text-align:right}.print-header{text-align:center;margin-bottom:1.5rem}.print-header h2{font-size:1.5rem;color:var(--pink)}.print-header .subtitle{color:var(--text-muted);font-size:.95rem}.print-header .instructions{color:var(--text-muted);font-size:.85rem;margin-top:.25rem}.board-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-bottom:1.5rem}.location-group{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.location-name{background:var(--pink);color:#fff;padding:.4rem .75rem;font-weight:600;font-size:.9rem}.admirer-row-header{display:grid;grid-template-columns:1.2fr 1fr 1.2fr 1.2fr;padding:.25rem .75rem;font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border)}.admirer-row{display:grid;grid-template-columns:1.2fr 1fr 1.2fr 1.2fr;padding:.35rem .75rem;font-size:.85rem;border-bottom:1px solid #f0f0f0}.admirer-row:last-child{border-bottom:none}.board-legend{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;padding:1rem;background:var(--pink-light);border-radius:var(--radius)}.legend-section h4{font-size:.8rem;text-transform:uppercase;color:var(--pink);margin-bottom:.25rem}.legend-section ul{list-style:none}.legend-section li{font-size:.8rem;padding:.1rem 0}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem;margin-bottom:1.5rem}.game-card{border:2px solid var(--border);border-radius:var(--radius);padding:1rem;text-align:center;background:var(--surface);break-inside:avoid}.admirer-card{border-color:var(--pink)}.admirer-card .card-name{font-size:1.1rem;font-weight:700;color:var(--pink);margin-bottom:.25rem}.admirer-card .card-phone{font-size:1rem;font-family:SF Mono,Fira Code,Consolas,monospace;margin-bottom:.25rem}.admirer-card .card-location{font-size:.75rem;color:var(--text-muted)}.special-cards-heading{margin-bottom:.25rem}.special-cards-note{font-size:.8rem;color:var(--text-muted);margin-bottom:.75rem}.special-card{border-color:var(--purple)}.special-card .card-icon{font-size:1.5rem;margin-bottom:.25rem}.special-card .card-name{font-weight:700;color:var(--purple);margin-bottom:.25rem}.special-card .card-desc{font-size:.75rem;color:var(--text-muted)}.sheet-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem;margin-bottom:1.5rem}.sheet-section h4{font-size:.85rem;text-transform:uppercase;color:var(--pink);margin-bottom:.5rem;border-bottom:1px solid var(--border);padding-bottom:.25rem}.sheet-item{padding:.25rem 0 .25rem 1rem;font-size:.9rem;position:relative}.sheet-item:before{content:"•";position:absolute;left:0;color:var(--text-muted)}.suspect-grid{margin-bottom:1.5rem}.suspect-grid h4{font-size:.85rem;text-transform:uppercase;color:var(--pink);margin-bottom:.5rem;border-bottom:1px solid var(--border);padding-bottom:.25rem}.suspect-list{display:grid;grid-template-columns:repeat(4,1fr);gap:.1rem 1rem}@media print{.no-print{display:none!important}body{background:#fff}.app{max-width:100%;padding:0}.printable{padding:.5in}.print-header h2{color:#000}.location-name{background:#333;-webkit-print-color-adjust:exact;print-color-adjust:exact}.board-legend{-webkit-print-color-adjust:exact;print-color-adjust:exact}.game-card,.location-group,.sheet-section,.score-sheet{break-inside:avoid}.board-grid{grid-template-columns:repeat(3,1fr)}.card-grid{grid-template-columns:repeat(4,1fr)}}
