*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{min-height:100dvh;margin:0}#root{flex-direction:column;width:100%;min-height:100dvh;display:flex}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}:root{--bg:#f2f2f7;--bg-gradient:radial-gradient(1200px circle at 50% -10%, #e5e5ea 0%, #f2f2f7 65%, #ebebef 100%);--surface:#fff;--surface-muted:#f7f7f9;--surface-hover:#ebebf0;--border:#dcdce2;--border-strong:#c7c7cc;--text:#000;--text-muted:#6e6e73;--accent:#000;--accent-contrast:#fff;--accent-hover:#2c2c2e;--accent-soft:#0000000f;--accent-ring:#00000026;--ajax-green:#24c25e;--ajax-green-dark:#16a34a;--ajax-red:#ff3b30;--ajax-blue:#007aff;--ajax-amber:#ff9500;--success:#24c25e;--success-soft:#24c25e1f;--success-border:#24c25e52;--danger:#ff3b30;--danger-soft:#ff3b301f;--danger-border:#ff3b3052;--warn:#ff9500;--warn-soft:#ff95001f;--warn-border:#ff950052;--radius-lg:18px;--radius:12px;--radius-sm:8px;--shadow:0 1px 3px #0000000d, 0 8px 20px -6px #00000014;--shadow-lg:0 2px 6px #0000000f, 0 16px 36px -8px #0000001f}@media (prefers-color-scheme:dark){:root{--bg:#000;--bg-gradient:radial-gradient(1100px circle at 50% -20%, #1a1a1d 0%, #08080a 60%, #000 100%);--surface:#141417;--surface-muted:#1c1c20;--surface-hover:#26262c;--border:#28282e;--border-strong:#383842;--text:#fff;--text-muted:#8e8e93;--accent:#fff;--accent-contrast:#000;--accent-hover:#e4e4e7;--accent-soft:#ffffff1f;--accent-ring:#ffffff47;--ajax-green:#2bdc6e;--ajax-green-dark:#1ea352;--ajax-red:#ff453a;--ajax-blue:#0a84ff;--ajax-amber:#ffd60a;--success:#2bdc6e;--success-soft:#2bdc6e29;--success-border:#2bdc6e61;--danger:#ff453a;--danger-soft:#ff453a29;--danger-border:#ff453a61;--warn:#ff9f0a;--warn-soft:#ff9f0a29;--warn-border:#ff9f0a61;--shadow:0 2px 6px #0009, 0 14px 34px -10px #000000d9;--shadow-lg:0 4px 10px #000000b3, 0 24px 50px -12px #000000f2}}body{background:var(--bg);background-image:var(--bg-gradient);color:var(--text);text-align:left;letter-spacing:-.01em;background-attachment:fixed;margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,system-ui,Roboto,sans-serif;line-height:1.5}.centered{min-height:100dvh;padding:max(1.5rem, env(safe-area-inset-top)) 1.25rem max(2rem, env(safe-area-inset-bottom));flex-direction:column;flex:1;justify-content:flex-start;align-items:center;display:flex}.centered>.card:only-child{margin-top:auto;margin-bottom:auto}.stack{flex-direction:column;gap:1.15rem;width:100%;max-width:720px;margin:0 auto;animation:.22s ease-out fadeIn;display:flex}.card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border);text-align:left;flex-direction:column;gap:1rem;width:100%;max-width:440px;padding:1.85rem;animation:.2s ease-out fadeIn;display:flex}.card.wide{width:100%;max-width:720px;box-shadow:var(--shadow)}@media (width<=600px){.centered{padding:max(.75rem, env(safe-area-inset-top)) .75rem max(1.5rem, env(safe-area-inset-bottom))}.card,.card.wide{border-radius:16px;gap:.85rem;padding:1.25rem}.stack{gap:.85rem}}.card header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding-bottom:.45rem;display:flex}.brand{align-items:center;gap:.75rem;display:flex}.card h1{letter-spacing:-.02em;color:var(--text);margin:0;font-size:1.22rem;font-weight:700;line-height:1.2}.card .subtitle{color:var(--text-muted);letter-spacing:.01em;margin:0;font-size:.82rem}.card h2{color:var(--text);letter-spacing:-.01em;align-items:center;gap:.45rem;margin:.6rem 0 .15rem;font-size:.96rem;font-weight:700;display:flex}label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.74rem;font-weight:700;display:block}input,select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);width:100%;color:var(--text);min-height:48px;padding:.72rem .95rem;font-family:inherit;font-size:.95rem;transition:border-color .15s,box-shadow .15s,background .15s}input::placeholder{color:var(--text-muted);opacity:.7}input:hover,select:hover{border-color:var(--border-strong)}input:focus,select:focus{border-color:var(--text);box-shadow:0 0 0 3px var(--accent-ring);background:var(--surface);outline:none}button{border-radius:var(--radius);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;gap:.5rem;min-height:48px;padding:.72rem 1.15rem;font-family:inherit;font-size:.95rem;font-weight:600;transition:transform 80ms,box-shadow .15s,filter .15s,background .15s,border-color .15s;display:inline-flex}button:active:not(:disabled){transform:scale(.982)}button[type=submit]{background:var(--accent);color:var(--accent-contrast);box-shadow:0 4px 14px -3px var(--accent-ring);letter-spacing:-.01em;font-weight:700}button[type=submit]:hover:not(:disabled){filter:brightness(.92)}button:disabled{opacity:.45;cursor:not-allowed}.open-door{background:linear-gradient(135deg, var(--ajax-green) 0%, var(--ajax-green-dark) 100%);color:#fff;letter-spacing:-.01em;border-radius:var(--radius);border:1px solid #ffffff38;width:100%;min-height:60px;padding:1.1rem 1.3rem;font-size:1.05rem;font-weight:700;box-shadow:0 10px 26px -6px #24c25e7a,inset 0 1px #ffffff52}.open-door:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 14px 30px -6px #24c25e8f,inset 0 1px #ffffff61}.open-door.door-strada{background:linear-gradient(135deg, var(--ajax-blue) 0%, #0056b3 100%);box-shadow:0 10px 26px -6px #007aff73,inset 0 1px #ffffff47}.open-door.door-strada:hover:not(:disabled){filter:brightness(1.08)}.open-door.door-bnb{background:linear-gradient(135deg, var(--ajax-amber) 0%, #c87200 100%);box-shadow:0 10px 26px -6px #ff950073,inset 0 1px #ffffff47}.open-door.door-bnb:hover:not(:disabled){filter:brightness(1.08)}.link{color:var(--text-muted);background:0 0;border-radius:8px;min-height:36px;padding:.4rem .65rem;font-size:.88rem;font-weight:600}.link:hover{color:var(--text);background:var(--surface-hover)}.error{color:var(--danger);background:var(--danger-soft);border:1px solid var(--danger-border);border-radius:var(--radius-sm);margin:0;padding:.72rem .95rem;font-size:.88rem;font-weight:500}.success{color:var(--success);background:var(--success-soft);border:1px solid var(--success-border);border-radius:var(--radius-sm);margin:0;padding:.72rem .95rem;font-size:.88rem;font-weight:500}.tabs{background:var(--surface-muted);border:1px solid var(--border);border-radius:14px;grid-template-columns:repeat(4,1fr);gap:.35rem;padding:.32rem;display:grid}.tabs button{color:var(--text-muted);white-space:nowrap;background:0 0;border-radius:10px;min-height:44px;padding:.55rem .6rem;font-size:.86rem;font-weight:600}.tabs button:hover:not(.active){color:var(--text);background:var(--surface-hover)}.tabs button.active{background:var(--surface);color:var(--text);border:1px solid var(--border);box-shadow:0 2px 8px #0000001f}@media (width<=540px){.tabs button{flex-direction:column;gap:.2rem;min-height:52px;padding:.45rem .25rem;font-size:.72rem}.tab-label{line-height:1.1;display:inline!important}}.events{background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);max-height:250px;margin:0;padding:.5rem .85rem;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,ui-monospace,Consolas,monospace;font-size:.82rem;list-style:none;overflow-y:auto}.events li{border-bottom:1px dashed var(--border);justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem 0;display:flex}.events li:last-child{border-bottom:none}.booking-form{flex-direction:column;gap:.75rem;display:flex}.table-scroll{-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-muted);overflow-x:auto}.bookings-table{border-collapse:collapse;width:100%;font-size:.86rem}.bookings-table th{text-align:left;color:var(--text-muted);background:var(--surface-hover);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);white-space:nowrap;padding:.68rem .85rem;font-size:.72rem;font-weight:700}.bookings-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;color:var(--text);padding:.75rem .85rem}.bookings-table tr:last-child td{border-bottom:none}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;align-items:center;padding:.22rem .65rem;font-size:.72rem;font-weight:700;display:inline-flex}.badge.attivo,.badge.valido{background:var(--success-soft);color:var(--success);border:1px solid var(--success-border)}.badge.futuro{color:var(--ajax-blue);background:#007aff26;border:1px solid #007aff59}.badge.scaduto{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn-border)}.badge.revocato{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-border)}.created-links{background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.5rem;padding:1rem;display:flex}.copy-field{align-items:center;gap:.5rem;display:flex}.copy-field input{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.guest-logo-wrap{justify-content:center;margin-bottom:.35rem;display:flex}.guest-header-block{text-align:center;flex-direction:column;gap:.25rem;padding-bottom:.25rem;display:flex}.guest-pin-card{border-radius:var(--radius);background:var(--surface-muted);border:1px dashed var(--border-strong);text-align:center;flex-direction:column;align-items:center;gap:.25rem;padding:.85rem 1rem;display:flex}.guest-pin-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.72rem;font-weight:700}.guest-pin-code{letter-spacing:.25em;color:var(--success);padding-left:.25em;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:1.6rem;font-weight:800}.guest-status-icon{color:var(--text-muted);justify-content:center;margin:.35rem 0;display:flex}.opens-warning{color:var(--warn);background:var(--warn-soft);border:1px solid var(--warn-border);border-radius:var(--radius-sm);justify-content:center;align-items:center;gap:.45rem;padding:.55rem .85rem;font-size:.82rem;font-weight:600;display:flex}.booking-list{flex-direction:column;gap:.5rem;display:flex}.booking-row{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-muted);cursor:pointer;justify-content:space-between;align-items:center;gap:.75rem;padding:.8rem 1rem;transition:background .15s,border-color .15s,transform 80ms;display:flex}.booking-row:hover{background:var(--surface-hover);border-color:var(--border-strong);transform:translateY(-1px)}.booking-row-main{flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.booking-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:600;overflow:hidden}.booking-date{color:var(--text-muted);white-space:nowrap;font-size:.83rem}.booking-row-right{flex-shrink:0;align-items:center;gap:.6rem;display:flex}.booking-info-icon{color:var(--text-muted)}.booking-detail{flex-direction:column;gap:.95rem;display:flex}.detail-row{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:.65rem 0;display:flex}.detail-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);min-width:72px;font-size:.76rem;font-weight:700}.icon-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);border-radius:8px;flex-shrink:0;min-height:36px;padding:.38rem .55rem}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}
