/* Villa Spaghettini — shared styles, ported from the Claude Design canvas
   https://claude.ai/artifact/JTys9v2pgk8LEr22SsKex7
   Area-specific styles live in css/public.css, css/booking.css, css/admin.css. */
@font-face{font-family:'Nunito';src:url('/static/fonts/Nunito.ttf') format('truetype');font-weight:200 1000;font-display:swap}
:root{--green:#268217;--green-dark:#1A5E0F;--green-soft:#DDF4CC;--green-ink:#1E5E14;--tomato:#D23A2A;--tomato-ink:#9A2A1F;--tomato-soft:#FFE1DC;
--lemon:#FFF1B8;--ink:#3C3C3C;--muted:#6B6B6B;--line:#E5E5E5;--line-soft:#F0F0F0;--bg:#FFFBF2;--surface:#FFFFFF}
body{margin:0;font-family:'Nunito',system-ui,sans-serif;background:#FFFBF2;color:#3C3C3C;-webkit-font-smoothing:antialiased}
a{color:#268217;font-weight:800}a:hover{color:#1A5E0F}
*{box-sizing:border-box}
.serif{font-family:'Nunito',system-ui,sans-serif;font-weight:900 !important;letter-spacing:-.01em}
.muted{color:#6B6B6B}
.eyebrow{font-size:13px;letter-spacing:.08em;text-transform:uppercase;font-weight:900;color:#C9302C}
.card{background:#FFFFFF;border:2px solid #E5E5E5;border-bottom-width:5px;border-radius:20px}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 24px;border-radius:16px;border:0;font:inherit;font-weight:900;font-size:15px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;text-decoration:none}
.btn-primary{background:#268217;color:#FFFFFF;box-shadow:0 5px 0 #1A5E0F}.btn-primary:hover{background:#2B8F1A;color:#FFFFFF}
.btn-primary:active{top:5px;box-shadow:none}
.btn-ghost{background:#FFFFFF;color:#3C3C3C;border:2px solid #E5E5E5;box-shadow:0 4px 0 #E5E5E5}
.btn-danger{background:#FFFFFF;color:#B42A1E;border:2px solid #F5C2BB;box-shadow:0 4px 0 #F5C2BB}
.btn-sm{min-height:40px;padding:0 14px;font-size:12px;border-radius:13px}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:14px;font-weight:800;color:#3C3C3C}
.input{height:52px;border-radius:14px;border:2px solid #E5E5E5;background:#F7F7F7;padding:0 16px;font:inherit;font-size:16px;font-weight:700;color:#3C3C3C}
textarea.input{height:88px;padding:12px 16px;resize:none}
.lang{display:inline-flex;border:2px solid #E5E5E5;border-bottom-width:4px;border-radius:14px;padding:3px;gap:2px;background:#FFFFFF}
.lang a{min-width:40px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;font-size:13px;font-weight:900;text-decoration:none;color:#6B6B6B}
.lang a.on{background:#DDF4CC;color:#1E5E14;box-shadow:inset 0 0 0 2px #7BC96A}
.brand{display:flex;align-items:center;gap:10px;font-family:'Nunito',system-ui,sans-serif;font-size:22px;font-weight:900;letter-spacing:-.02em;color:#268217;text-decoration:none}
.mark{width:46px;height:46px;display:flex;flex-shrink:0}
.cal-head{display:flex;align-items:center;justify-content:space-between}
.icon-btn{width:46px;height:46px;border-radius:14px;border:2px solid #E5E5E5;border-bottom-width:4px;background:#FFFFFF;display:inline-flex;align-items:center;justify-content:center;color:#3C3C3C;cursor:pointer}
.dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;font-size:13px;font-weight:900;color:#6B6B6B;letter-spacing:.06em;text-transform:uppercase}
.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:6px}
.d{height:50px;border:0;background:transparent;font:inherit;font-size:16px;font-weight:800;color:#3C3C3C;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.d span{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center}
.d.free:hover span{background:#F0F0F0}
.d.pad{cursor:default}
.d.occ{cursor:not-allowed;background:repeating-linear-gradient(135deg,#F2F2F2 0 6px,#E7E7E7 6px 12px);color:#6B6B6B}
.d.blk{cursor:not-allowed;background:#FFE1DC;color:#9A2A1F}
.d.occ.first,.d.blk.first{border-radius:14px 0 0 14px}.d.occ.last,.d.blk.last{border-radius:0 14px 14px 0}.d.first.last{border-radius:14px}
.d.range{background:#FFF1B8}
.d.start{background:linear-gradient(90deg,transparent 50%,#FFF1B8 50%)}
.d.end{background:linear-gradient(90deg,#FFF1B8 50%,transparent 50%)}
.d.start.end{background:transparent}
.d.start span,.d.end span{background:#268217;color:#FFFFFF;box-shadow:0 4px 0 #1A5E0F}
.d.today span{box-shadow:inset 0 0 0 2px #C9302C}
.legend{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;font-weight:700;color:#6B6B6B}
.legend i{display:inline-block;width:14px;height:14px;border-radius:5px;vertical-align:-2px;margin-right:6px}
.badge{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:10px;font-size:12px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.b-green{background:#DDF4CC;color:#1E5E14}.b-clay{background:#FFE1DC;color:#9A2A1F}.b-gray{background:#F0F0F0;color:#5E5E5E}
.side a{display:flex;align-items:center;gap:12px;height:50px;padding:0 14px;border-radius:14px;text-decoration:none;color:#6B6B6B;font-weight:900;font-size:13px;letter-spacing:.05em;text-transform:uppercase;border:2px solid transparent}
.side a.on{background:#DDF4CC;color:#1E5E14;border-color:#7BC96A}
.side a:hover{color:#3C3C3C}
table{border-collapse:collapse;width:100%}
th{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#6B6B6B;text-align:left;font-weight:900;padding:0 16px 12px}
td{padding:16px;border-top:2px solid #F0F0F0;font-size:15px;font-weight:600;vertical-align:middle}
.switch{width:52px;height:30px;border-radius:999px;background:#268217;position:relative;border:0;cursor:pointer}
.switch::after{content:'';position:absolute;top:4px;left:26px;width:22px;height:22px;border-radius:999px;background:#FFFFFF}
.switch.off{background:#D6D6D6}.switch.off::after{left:4px}
.code{font-family:ui-monospace,Menlo,monospace;font-size:13px;background:#F7F7F7;border:2px solid #E5E5E5;border-radius:10px;padding:6px 10px;color:#3C3C3C}
.en{display:inline-block;font-size:14px;font-weight:700;color:#6B6B6B;border-bottom:2px dashed #C4C4C4;padding-bottom:1px}
.bubble{position:relative;background:#FFFFFF;border:2px solid #E5E5E5;border-radius:18px;padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.bubble::before{content:'';position:absolute;left:-9px;top:26px;width:14px;height:14px;background:#FFFFFF;border-left:2px solid #E5E5E5;border-bottom:2px solid #E5E5E5;transform:rotate(45deg)}
.bubble b{font-size:18px;font-weight:900;line-height:1.25;color:#3C3C3C}
.tabs{display:inline-flex;gap:4px;background:#F0F0F0;border-radius:14px;padding:4px}
.tabs a{white-space:nowrap;height:38px;padding:0 16px;border-radius:10px;font-weight:900;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:#6B6B6B;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.tabs a.on{background:#FFFFFF;color:#268217;box-shadow:0 3px 0 #DADADA}
.photo{background:repeating-linear-gradient(45deg,#F4F1E8 0 14px,#EDE9DE 14px 28px);border:2px dashed #CFC9BA;border-radius:20px;display:flex;align-items:center;justify-content:center;color:#6B6B6B;font-weight:800;font-size:14px;text-align:center;padding:12px}
.chip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:12px;background:#FFFFFF;border:2px solid #E5E5E5;border-bottom-width:4px;font-weight:800;font-size:14px}
.step{width:44px;height:44px;border-radius:999px;background:#268217;color:#FFFFFF;font-weight:900;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 0 #1A5E0F;flex-shrink:0}
.codebox{height:64px;border-radius:16px;border:2px solid #E5E5E5;border-bottom-width:5px;background:#FFFFFF;padding:0 18px;font-family:ui-monospace,Menlo,monospace;font-size:22px;font-weight:800;letter-spacing:.08em;color:#3C3C3C;text-transform:uppercase}
.progress{height:16px;border-radius:999px;background:#E5E5E5;overflow:hidden}
.progress i{display:block;height:100%;border-radius:999px;background:#58CC02;box-shadow:inset 0 -5px 0 rgba(0,0,0,.08),inset 0 4px 0 rgba(255,255,255,.35)}

/* ---- layout additions (not on the canvas) ---- */
html{-webkit-text-size-adjust:100%}
img{max-width:100%;display:block}
.wrap{max-width:1168px;margin:0 auto;padding:0 20px}
.site-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;max-width:1208px;margin:0 auto}
.site-header .brand-name{display:none}
@media (min-width:760px){.site-header{padding:24px 20px}.site-header .brand-name{display:inline}}
.site-footer{margin-top:72px;border-top:2px solid var(--line-soft)}
.site-footer .wrap{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:28px;padding-bottom:28px;flex-wrap:wrap}
.flash{border-radius:16px;padding:14px 16px;font-weight:800;border:2px solid;border-bottom-width:4px}
.flash-error{background:var(--tomato-soft);color:var(--tomato-ink);border-color:#F5C2BB}
.flash-ok{background:var(--green-soft);color:var(--green-ink);border-color:#9FD68B}
.stack{display:flex;flex-direction:column}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.logo{display:block;width:100%;height:100%}
.btn:focus-visible,.input:focus-visible,.codebox:focus-visible,a:focus-visible,button:focus-visible{outline:3px solid #1480B8;outline-offset:2px}
.input:focus,.codebox:focus{border-color:#84D8FF;background:#FFFFFF;outline:none}
.codebox{width:100%}
@media (max-width:400px){.site-header{gap:8px;padding:12px}.site-header .mark{width:38px!important;height:38px!important}.tabs a{padding:0 10px;font-size:12px}.lang a{min-width:32px}}
