/* Shared component styles (plain CSS so they work with both the Tailwind CDN and the production build). */
.input{display:block;width:100%;border:1px solid #cbd5e1;background:#fff;border-radius:.5rem;padding:.625rem .875rem;font-size:.875rem;color:#0f172a;outline:none;box-shadow:0 1px 2px rgba(15,23,42,.04);transition:border-color .15s,box-shadow .15s}
.input:focus{border-color:#0284C7;box-shadow:0 0 0 4px rgba(2,132,199,.15)}
.input[disabled]{background:#f1f5f9;color:#94a3b8}
.label{display:block;margin-bottom:.375rem;font-size:.875rem;font-weight:500;color:#334155}
.hint{margin-top:.25rem;font-size:.75rem;color:#64748b}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border-radius:.5rem;padding:.55rem 1.1rem;font-size:.875rem;font-weight:500;line-height:1.25rem;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.btn-primary{background:#0284C7;color:#fff}.btn-primary:hover{background:#0369a1}
.btn-outline{background:#fff;color:#334155;border-color:#cbd5e1}.btn-outline:hover{border-color:#0284C7;color:#0284C7}
.btn-danger{background:#fff;color:#be123c;border-color:#fecdd3}.btn-danger:hover{background:#fff1f2}
.btn-sm{padding:.3rem .7rem;font-size:.8rem}
.card{background:#fff;border:1px solid #e2e8f0;border-radius:.75rem;box-shadow:0 1px 2px rgba(15,23,42,.05)}

/* Report bars (<progress>, no inline styles needed) */
progress.bar{flex:1;width:100%;height:.6rem;border:0;border-radius:9999px;overflow:hidden;background:#e2e8f0;accent-color:#0284C7;-webkit-appearance:none;appearance:none}
progress.bar::-webkit-progress-bar{background:#e2e8f0}
progress.bar::-webkit-progress-value{background:#0284C7;border-radius:9999px}
progress.bar::-moz-progress-bar{background:#0284C7;border-radius:9999px}
@media print{aside,header,nav,.btn,form{display:none!important}main{padding:0!important}.card{box-shadow:none!important;break-inside:avoid}}

/* Rich text (editor + rendered content) */
.rte-toolbar{display:flex;flex-wrap:wrap;gap:.25rem;border:1px solid #cbd5e1;border-bottom:0;border-radius:.5rem .5rem 0 0;background:#f8fafc;padding:.375rem}
.rte-toolbar button{min-width:2.1rem;height:2.1rem;border-radius:.375rem;border:1px solid transparent;background:transparent;font-size:.85rem;color:#334155;cursor:pointer}
.rte-toolbar button:hover{background:#e2e8f0}
.rte-area{min-height:16rem;max-height:32rem;overflow:auto;border:1px solid #cbd5e1;border-radius:0 0 .5rem .5rem;background:#fff;padding:1rem;outline:none}
.rte-area:focus{border-color:#0284C7;box-shadow:0 0 0 4px rgba(2,132,199,.15)}
.prose-content{line-height:1.85;color:#334155;overflow-wrap:anywhere}
.prose-content>*+*{margin-top:1rem}
.prose-content h2{font-size:1.5rem;font-weight:600;color:#0f172a;margin-top:1.75rem}
.prose-content h3{font-size:1.25rem;font-weight:600;color:#0f172a;margin-top:1.5rem}
.prose-content h4{font-size:1.05rem;font-weight:600;color:#0f172a}
.prose-content ul{list-style:disc;padding-left:1.5rem}
.prose-content ol{list-style:decimal;padding-left:1.5rem}
.prose-content a{color:#0284C7;text-decoration:underline}
.prose-content blockquote{border-left:4px solid #0284C7;background:#f1f5f9;padding:.75rem 1rem;color:#475569}
.prose-content pre{background:#0f172a;color:#e2e8f0;padding:1rem;border-radius:.5rem;overflow:auto;font-size:.85rem}
.prose-content table{width:100%;border-collapse:collapse;font-size:.9rem}
.prose-content th,.prose-content td{border:1px solid #cbd5e1;padding:.4rem .6rem;text-align:left}
.prose-content th{background:#f1f5f9}
.prose-content hr{border-color:#e2e8f0}
/* Booking calendar */
.cal-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem}
.cal-label{margin-left:.5rem;color:#0f172a}
.cal-stamp{margin-left:auto;font-size:.75rem;color:#64748b}.cal-stamp.is-error{color:#be123c}
.cal-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.5rem;font-size:.75rem;color:#475569}
.cal-legend-item{display:inline-flex;align-items:center;gap:.35rem}
.cal-swatch{display:inline-block;width:.8rem;height:.8rem;border-radius:.2rem}
.cal-scroll{overflow-x:auto;border:1px solid #e2e8f0;border-radius:.75rem;background:#fff}
.cal-grid{min-width:620px}
.cal-head,.cal-body{display:grid;grid-template-columns:3rem repeat(7,minmax(0,1fr))}
.cal-head{border-bottom:1px solid #e2e8f0;background:#f8fafc;position:sticky;top:0}
.cal-dayhead{padding:.5rem .25rem;text-align:center;font-size:.8rem;font-weight:500;color:#334155;border-left:1px solid #e2e8f0}
.cal-dayhead.is-today{background:#e0f2fe;color:#0369a1}
.cal-time{height:48px;padding:.1rem .35rem;font-size:.7rem;color:#94a3b8;text-align:right;box-sizing:border-box}
.cal-col{position:relative;border-left:1px solid #e2e8f0;cursor:pointer;background-image:linear-gradient(#eef2f7 1px,transparent 1px);background-size:100% 48px}
.cal-col:hover{background-color:#f8fafc}
.cal-col.is-past{background-color:#f1f5f9;cursor:not-allowed}
.cal-now{position:absolute;left:0;right:0;height:2px;background:#e11d48;z-index:3;pointer-events:none}
.cal-ev{position:absolute;left:2px;right:2px;overflow:hidden;border-radius:.35rem;padding:.1rem .3rem;font-size:.72rem;line-height:1.2;color:#fff;cursor:default;z-index:2}
.cal-ev-approved{background:#0284C7}
.cal-ev-pending{background:#f59e0b}
.cal-ev-mine{background:#059669}
.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pdf-frame{display:block;width:100%;height:80vh;min-height:30rem;border:0;border-radius:.75rem;background:#f1f5f9}
.form-grid{display:grid;gap:1.25rem;grid-template-columns:1fr}
@media (min-width:640px){.form-grid.cols-2{grid-template-columns:repeat(2,1fr)}.form-grid.cols-3{grid-template-columns:repeat(3,1fr)}.form-grid.cols-4{grid-template-columns:repeat(4,1fr)}}
.brand-logo{display:block;background:#fff;border-radius:.5rem;padding:.375rem .5rem;transition:opacity .15s}
.brand-logo:hover{opacity:.9}
.brand-logo img{display:block;width:100%;height:auto}
/* 3D node network on the login / register brand panel (assets/js/home-3d.js) */
.net-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 1.4s ease;pointer-events:none}
.net-canvas.ready{opacity:.9}
.net-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(15,23,42,.55) 0%,rgba(15,23,42,.2) 45%,rgba(15,23,42,0) 70%)}
@media (prefers-reduced-motion: reduce){.net-canvas{transition:none}}
