@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=Nunito:wght@400;600;700&display=swap";:root{--ink:#2c241b;--ink-soft:#5c4a3a;--paper:#f7f1e8;--paper-deep:#ebe1d2;--leaf:#6a7d55;--leaf-deep:#4f6240;--clay:#b56a45;--sky:#7aa3b8;--line:#d4c4b0;--danger:#a33b2b;--shadow:0 12px 40px #2c241b1f;color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Nunito,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(80% 50% at 10% -10%,#baa38259,#0000 55%),radial-gradient(60% 40% at 90% 0,#7aa3b840,#0000 50%),linear-gradient(#f3ebe0 0%,#efe6d8 40%,#e8dfd0 100%);min-height:100vh}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.app-root{min-height:100vh}.menu-page{max-width:960px;margin:0 auto;padding:2.5rem 1.25rem 4rem;position:relative}.menu-atmosphere{pointer-events:none;opacity:.6;z-index:0;background-image:repeating-linear-gradient(0deg,#0000,#0000 27px,#5c4a3a08 28px);position:fixed;inset:0}.menu-hero,.menu-actions,.saved-section{z-index:1;position:relative}.menu-hero{text-align:left;margin-bottom:2rem;animation:.7s both rise}.brand{letter-spacing:-.03em;color:var(--ink);margin:0;font-family:Fraunces,Georgia,serif;font-size:clamp(2.8rem,8vw,4.5rem);font-weight:700;line-height:.95}.menu-hero h1{color:var(--leaf-deep);margin:.65rem 0 .75rem;font-family:Fraunces,Georgia,serif;font-size:clamp(1.15rem,2.5vw,1.45rem);font-weight:500}.lede{max-width:34rem;color:var(--ink-soft);margin:0;font-size:1.05rem}.menu-actions{grid-template-columns:repeat(3,1fr);gap:.85rem;margin-bottom:2.5rem;animation:.7s .1s both rise;display:grid}.menu-card{appearance:none;border:1.5px solid var(--line);text-align:left;box-shadow:var(--shadow);background:#fffcf7d9;border-radius:18px;padding:1.15rem 1rem;transition:transform .2s,border-color .2s,background .2s}.menu-card:hover{border-color:var(--leaf);transform:translateY(-3px)}.menu-card.primary{background:linear-gradient(145deg,#f8f4ec,#e7efdf);border-color:#b7c5a6}.menu-card-label{margin-bottom:.25rem;font-family:Fraunces,Georgia,serif;font-size:1.25rem;font-weight:700;display:block}.menu-card-desc{color:var(--ink-soft);font-size:.92rem;display:block}.saved-section{animation:.7s .18s both rise}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.section-head h2{margin:0;font-family:Fraunces,Georgia,serif;font-size:1.4rem}.search,.search-wide{border:1.5px solid var(--line);background:#fffdf9;border-radius:999px;min-width:200px;padding:.55rem 1rem}.search-wide{width:min(360px,100%);min-width:240px}.route-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.route-row{border:1px solid var(--line);background:#fffcf7bf;border-radius:14px;flex-wrap:wrap;align-items:stretch;gap:.5rem;display:flex;overflow:hidden}.route-open{appearance:none;text-align:left;background:0 0;border:0;flex:1;padding:.9rem 1rem}.route-name{font-family:Fraunces,Georgia,serif;font-weight:700;display:block}.route-meta{color:var(--ink-soft);margin-top:.15rem;font-size:.85rem;display:block}.route-row-actions{align-items:center;gap:.15rem;padding:.35rem .5rem;display:flex}.empty{color:var(--ink-soft);padding:1rem 0}.empty-block{justify-items:start;gap:.85rem;padding:.25rem 0 1rem;display:grid}.empty-block .empty{max-width:28rem;padding:0;line-height:1.4}.btn{appearance:none;border:1.5px solid var(--leaf-deep);background:var(--leaf);color:#fff;border-radius:999px;padding:.45rem .95rem;font-weight:700}.btn.secondary{color:var(--ink);border-color:var(--line);background:#fffdf9}.btn.ghost{color:var(--ink-soft);background:0 0;border-color:#0000;font-weight:600}.btn.ghost.danger,.btn.danger{color:var(--danger)}.btn.ghost.tiny{padding:.15rem .4rem;font-size:.8rem}.icon-btn{appearance:none;color:var(--ink-soft);background:0 0;border:0;font-size:1.5rem;line-height:1}.field{flex-direction:column;gap:.35rem;display:flex}.field.inline{flex-direction:row;align-items:center;gap:.55rem}.field span,.toggle span{color:var(--ink-soft);font-size:.85rem;font-weight:700}.field select,.field textarea,.toggle select{border:1.5px solid var(--line);background:#fffdf9;border-radius:10px;padding:.45rem .65rem}.btn-row{flex-wrap:wrap;gap:.5rem;margin-top:.65rem;display:flex}.modal-backdrop{z-index:50;background:#2c241b66;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{border:1px solid var(--line);width:min(520px,100%);box-shadow:var(--shadow);background:#fffdf9;border-radius:18px;max-height:90vh;padding:1.1rem 1.2rem 1.35rem;overflow:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.modal-header h2{margin:0;font-family:Fraunces,Georgia,serif;font-size:1.35rem}.modal-section{border-top:1px dashed var(--line);margin-top:1rem;padding-top:.85rem}.modal-section h3{margin:0 0 .65rem;font-size:1rem}.code-box{border:1px solid var(--line);border-radius:10px;width:100%;margin-top:.65rem;padding:.55rem;font-family:ui-monospace,monospace;font-size:.75rem}.toast-inline{color:var(--leaf-deep);margin:.85rem 0 0;font-weight:700}.muted{color:var(--ink-soft)}.editor{flex-direction:column;min-height:100vh;display:flex}.editor-top{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;background:#fffcf7e6;flex-wrap:wrap;align-items:center;gap:.65rem;padding:.75rem 1rem;display:flex;position:sticky;top:0}.route-title{background:0 0;border:0;outline:none;flex:1;min-width:160px;font-family:Fraunces,Georgia,serif;font-size:1.35rem;font-weight:700}.editor-top-actions{flex-wrap:wrap;gap:.4rem;display:flex}.editor-toolbar{border-bottom:1px solid var(--line);background:#f7f1e8f2;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.65rem 1rem;display:flex}.tool-group{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.tool-btn{appearance:none;border:1.5px solid var(--line);background:#fffdf9;border-radius:999px;padding:.4rem .8rem;font-size:.9rem;font-weight:600}.tool-btn.active{border-color:var(--leaf-deep);color:var(--leaf-deep);background:#e7efdf}.toggle{align-items:center;gap:.4rem;display:flex}.editor-body{flex:1;grid-template-columns:220px 1fr;min-height:0;display:grid}.icon-palette{border-right:1px solid var(--line);background:#fffcf7b3;max-height:calc(100vh - 130px);padding:.9rem .75rem;position:sticky;top:130px;overflow:auto}.panel-title{margin:0 0 .25rem;font-family:Fraunces,Georgia,serif;font-size:1.15rem}.panel-hint{color:var(--ink-soft);margin:0 0 .75rem;font-size:.8rem}.icon-grid{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.icon-chip{appearance:none;text-align:left;background:#fffdf9;border:1.5px solid #0000;border-radius:12px;align-items:center;gap:.55rem;width:100%;padding:.35rem .45rem;font-size:.85rem;font-weight:600;display:flex}.icon-chip:hover,.icon-chip.selected{border-color:var(--leaf);background:#eef5e8}.map-stage{background:var(--paper-deep);min-height:calc(100vh - 130px);position:relative}.map-shell,.map-loading,.map-fallback{width:100%;height:calc(100vh - 130px);min-height:480px}.map-loading,.map-fallback{text-align:center;place-content:center;gap:.5rem;padding:2rem;display:grid}.map-fallback h3{margin:0;font-family:Fraunces,Georgia,serif}.placement-hint{color:#fff;z-index:5;pointer-events:none;background:#2c241bd9;border-radius:999px;padding:.45rem .9rem;font-size:.9rem;position:absolute;bottom:1rem;left:50%;transform:translate(-50%)}.print-banner{display:none}.map-textbox{background:#fffdf9;border:1.5px solid #8b7355;border-radius:8px;padding:.35rem;position:relative;transform:translate(-50%,-100%);box-shadow:0 4px 14px #0000001f}.map-textbox.print{box-shadow:none;background:#fff;border-color:#222}.map-textbox.selected{outline:2px solid var(--leaf)}.map-textbox textarea{resize:vertical;background:0 0;border:0;outline:none;width:100%;font-family:Fraunces,Georgia,serif;font-size:.9rem}.textbox-grip{align-items:center;gap:.35rem;margin-top:.2rem;display:flex}.drag-handle{border:1px solid var(--line);cursor:grab;background:#fff;border-radius:50%;width:28px;height:28px;font-size:.85rem;line-height:1;position:absolute;top:-10px;right:-10px}.demo-map{cursor:crosshair;background:#f3ebe0;border:2px solid #c4b09a;border-radius:16px;width:min(900px,100%);height:420px;margin:1rem auto 0;position:relative;overflow:hidden}.demo-map.print{background:#fff;border-color:#444}.demo-streets{background:radial-gradient(circle at 18% 28%,#0000 0 14px,#3f8f4a 15px 22px,#0000 23px),radial-gradient(circle at 72% 62%,#0000 0 12px,#3f8f4a 13px 20px,#0000 21px),radial-gradient(circle at 40% 70%,#0000 0 10px,#3f8f4a 11px 17px,#0000 18px),linear-gradient(#1a1a1a 0 0) 50%/100% 18px no-repeat,linear-gradient(#1a1a1a 0 0) 50%/18px 100% no-repeat,repeating-linear-gradient(90deg,#0000,#0000 46px,#1a1a1a 47px 63px),repeating-linear-gradient(0deg,#0000,#0000 46px,#1a1a1a 47px 63px),#f6eeda;position:absolute;inset:0}.demo-streets:after{content:"";pointer-events:none;opacity:.9;background:repeating-linear-gradient(90deg,#0000 0 8px,#fff 8px 14px,#0000 14px 22px) 50%/100% 2px no-repeat,repeating-linear-gradient(0deg,#0000 0 8px,#fff 8px 14px,#0000 14px 22px) 50%/2px 100% no-repeat;position:absolute;inset:0}.demo-map.print .demo-streets{background-color:#fff}.demo-trail{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.demo-icon{z-index:2;position:absolute;transform:translate(-50%,-50%)}.demo-icon.selected{filter:drop-shadow(0 0 0 2px var(--leaf))}.map-textbox.demo{z-index:3;position:absolute;transform:translate(-50%,-100%)}.street-label{pointer-events:none;white-space:nowrap;letter-spacing:.04em;color:#111;box-shadow:none;z-index:20;text-shadow:0 0 2px #fff,0 0 3px #fff,1px 0 #fff,-1px 0 #fff,0 1px #fff,0 -1px #fff,1px 1px #fff,-1px -1px #fff;background:0 0;border:none;border-radius:0;padding:0;font-family:Nunito,system-ui,sans-serif;font-size:.72rem;font-weight:800;line-height:1.1}.street-label.horizontal{writing-mode:horizontal-tb}.street-label.vertical{writing-mode:horizontal-tb;transform-origin:50%;transform:rotate(90deg)}.street-label.print{color:#111;box-shadow:none;text-shadow:0 0 2px #fff,1px 0 #fff,-1px 0 #fff,0 1px #fff,0 -1px #fff;background:0 0;border:none}.icon-callout{color:#2c241b;z-index:40;background:#fffdf8;border:2px solid #111;border-radius:10px;min-width:10rem;max-width:14rem;padding:.55rem .65rem .6rem;font-family:Nunito,sans-serif;position:relative;transform:translate(-50%,calc(-100% - 14px));box-shadow:0 4px #111}.icon-callout h3{margin:0 0 .15rem;padding-right:1.2rem;font-family:Fraunces,Georgia,serif;font-size:.95rem;font-weight:700;line-height:1.2}.icon-callout p{color:#5c4a3a;margin:0 0 .45rem;font-size:.72rem;line-height:1.35}.icon-callout textarea{resize:vertical;width:100%;min-height:2.6rem;font:inherit;color:inherit;background:#fff;border:1px solid #d4c4b0;border-radius:6px;padding:.35rem .4rem;font-size:.75rem}.icon-callout-close{cursor:pointer;color:#5c4a3a;background:0 0;border:none;padding:.15rem .35rem;font-size:1rem;line-height:1;position:absolute;top:.25rem;right:.3rem}.cartoon-loading{pointer-events:none;color:#fff;white-space:nowrap;background:#2a2118d9;border-radius:999px;padding:.4rem .85rem;font-family:Nunito,sans-serif;font-size:.85rem;font-weight:700;transform:translate(-50%,-50%)}.toast{background:var(--ink);color:#fff;z-index:40;border-radius:999px;padding:.55rem .95rem;animation:.25s rise;position:fixed;bottom:1rem;right:1rem}.editor-missing{text-align:center;padding:3rem}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=860px){.menu-actions,.editor-body{grid-template-columns:1fr}.icon-palette{border-right:0;border-bottom:1px solid var(--line);max-height:none;position:static}.icon-grid{flex-flow:wrap}.icon-chip{flex-direction:column;width:auto;max-width:88px;font-size:.72rem}}@media print{body{background:#fff!important}.no-print,.menu-atmosphere,.icon-palette,.editor-toolbar,.editor-top,.placement-hint,.toast,.modal-backdrop{display:none!important}.editor-body{display:block}.map-stage{min-height:auto}.map-shell,.map-loading,.map-fallback,.demo-map{height:90vh!important;min-height:0!important}.print-banner{border-bottom:1px solid #222;justify-content:space-between;margin-bottom:.5rem;padding:.5rem 0;font-family:Fraunces,Georgia,serif;display:flex}}
