*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;overflow-x:hidden}#root{width:100%;min-height:100%}.app{font-family:Sarabun,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;width:100%;min-height:100vh;min-height:100dvh;color:#1a202c;box-sizing:border-box}.app:not(.app--dashboard){background:linear-gradient(160deg,#e0e7ff,#f5f3ff 40%,#fefce8)}.app--dashboard{background:#f8fafc;padding:clamp(12px,3vw,24px)}.app--dashboard .app-header{text-align:left}.app-header{margin-bottom:clamp(16px,4vw,24px);text-align:center}.app:not(.app--dashboard) .app-header{padding-top:clamp(24px,6vw,48px);padding-left:16px;padding-right:16px}.app-header h1{margin:0 0 6px;font-size:clamp(1.35rem,4vw,1.85rem);font-weight:700;letter-spacing:-.02em;color:#1e293b}.app-header p{margin:0;font-size:clamp(.875rem,2vw,1rem);color:#64748b}.app-header p:has(button){display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}.admin-nav{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.admin-nav-btn{padding:8px 16px;font-size:.9375rem;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#475569;cursor:pointer;transition:background .2s,color .2s,border-color .2s}.admin-nav-btn:hover{background:#f1f5f9;border-color:#cbd5e1}.admin-nav-btn.active{background:#4f46e5;border-color:#4f46e5;color:#fff}.app--dashboard{background:#e2e8f0;padding:0;min-height:100vh;min-height:100dvh}.dashboard-layout{display:flex;width:100%;min-height:100vh;min-height:100dvh}.dashboard-sidebar{width:240px;min-width:240px;background:#1e293b;color:#e2e8f0;display:flex;flex-direction:column;padding:20px 0}.sidebar-brand{font-size:1.1rem;font-weight:700;color:#fff;padding:0 20px 20px;border-bottom:1px solid #334155;margin-bottom:16px}.sidebar-nav-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;padding:0 20px 8px}.sidebar-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 20px;border:none;background:none;color:#cbd5e1;font-size:.9375rem;cursor:pointer;text-align:left;transition:background .15s,color .15s}.sidebar-item:hover{background:#334155;color:#fff}.sidebar-item.active{background:#4f46e526;color:#fff;border-left:3px solid #6366f1;padding-left:17px}.sidebar-icon{font-size:.85rem;opacity:.9}.sidebar-footer{margin-top:auto;padding-top:16px;border-top:1px solid #334155;padding-left:20px;padding-right:20px}.sidebar-user{display:flex;align-items:center;gap:10px;margin-bottom:10px}.sidebar-user-avatar{width:36px;height:36px;border-radius:50%;background:#475569;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:500;font-size:.9rem}.sidebar-user-name{font-size:.875rem;color:#e2e8f0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{width:100%;padding:8px 12px;font-size:.85rem;border:1px solid #475569;background:transparent;color:#94a3b8;border-radius:8px;cursor:pointer;transition:background .15s,color .15s}.sidebar-logout:hover{background:#334155;color:#e2e8f0}.dashboard-main{flex:1;min-width:0;display:flex;flex-direction:column;background:#f8fafc}.dashboard-topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;background:#fff;border-bottom:1px solid #e5e7eb;flex-shrink:0}.dashboard-title{margin:0;font-size:1.125rem;font-weight:600;color:#374151}.dashboard-topbar-right{display:flex;align-items:center;gap:12px}.dashboard-user{font-size:.875rem;color:#6b7280}.dashboard-content{flex:1;min-height:0;padding:20px 24px;overflow:auto;display:flex;flex-direction:column}.dashboard-content[data-section=map]{overflow:hidden;flex:1;min-height:0}.dashboard-content[data-section=map] .parcel-page{flex:1;min-height:0;display:flex;flex-direction:column}.dashboard-content[data-section=map] .parcel-map-page{flex:1;min-height:0;display:grid;grid-template-rows:auto auto 1fr;gap:12px}.dashboard-content .layout,.dashboard-content .admin-invite{max-width:none}@media (max-width: 768px){.dashboard-layout{flex-direction:column}.dashboard-sidebar{width:100%;min-width:0;flex-direction:row;flex-wrap:wrap;padding:12px 16px;gap:8px;align-items:center}.sidebar-brand{padding:0;margin:0 auto 0 0;border:none}.sidebar-nav{display:flex;gap:4px;order:3;width:100%;margin-top:8px;padding-top:8px;border-top:1px solid #334155}.sidebar-nav-label{display:none}.sidebar-item{padding:8px 12px;flex:1;justify-content:center}.sidebar-footer{margin-top:0;padding:0;border:none;display:flex;flex-direction:row;align-items:center;gap:8px;order:2}.sidebar-user-name{display:none}.sidebar-logout{width:auto;padding:6px 12px}.dashboard-topbar{padding:12px 16px}.dashboard-title{font-size:1.1rem}.dashboard-content{padding:16px}}.admin-main{width:100%;max-width:960px;margin:0 auto}.admin-invite{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:clamp(16px,4vw,22px);overflow:hidden}.admin-invite-top{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.admin-invite-btn{padding:10px 16px;font-size:.9375rem;font-weight:500;border-radius:6px;border:none;background:#4f46e5;color:#fff;cursor:pointer;transition:background .15s}.admin-invite-btn:hover:not(:disabled){background:#4338ca}.admin-invite-btn:disabled{opacity:.6;cursor:not-allowed}.admin-invite-count{font-size:.9rem;color:#64748b}.invite-popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.invite-popup{background:#fff;border-radius:12px;padding:24px;max-width:380px;width:100%;border:1px solid #e2e8f0;box-shadow:0 10px 40px #0000001f}.invite-popup-title{margin:0 0 16px;font-size:1.125rem;font-weight:600;color:#1e293b}.invite-popup-code-wrap{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px;margin-bottom:12px}.invite-popup-code{font-size:1.25rem;font-weight:600;letter-spacing:.08em;color:#334155;font-family:ui-monospace,monospace}.invite-popup-hint{margin:0 0 20px;font-size:.875rem;color:#64748b}.invite-popup-actions{display:flex;gap:10px;justify-content:flex-end}.invite-popup-btn{padding:10px 18px;font-size:.9375rem;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:background .2s,color .2s}.invite-popup-btn-copy{background:#4f46e5;color:#fff}.invite-popup-btn-copy:hover{background:#4338ca}.invite-popup-btn-copy:active{transform:scale(.98)}.invite-popup-btn-copy.copied{background:#059669}.invite-popup-btn-close{background:#f1f5f9;color:#475569}.invite-popup-btn-close:hover{background:#e2e8f0}.admin-invite-loading,.admin-invite-empty{text-align:center;padding:32px 16px;color:#64748b;font-size:.95rem}.admin-invite-empty p{margin:0 0 4px}.admin-invite-empty p:last-child{font-size:.875rem;margin-bottom:0}.admin-invite-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px}.admin-invite-table{width:100%;min-width:420px;border-collapse:collapse;font-size:.9rem}.admin-invite-table th,.admin-invite-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #f3f4f6}.admin-invite-table th{background:#fafafa;font-weight:500;color:#6b7280}.admin-invite-table code{font-size:.9em;background:#f3f4f6;padding:3px 6px}.admin-invite-th-action,.admin-invite-td-action{width:1%;white-space:nowrap;text-align:right;padding-left:8px}.admin-invite-btn-delete{padding:6px 12px;font-size:.8125rem;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;cursor:pointer;transition:background .2s,color .2s}.admin-invite-btn-delete:hover:not(:disabled){background:#fee2e2;color:#991b1b}.admin-invite-btn-delete:disabled{opacity:.7;cursor:not-allowed}.invite-card-actions{margin-top:10px;padding-top:10px;border-top:1px solid #e2e8f0}.invite-used{color:#059669;font-weight:500}.invite-unused{color:#64748b}.admin-invite-cards{display:none;list-style:none;margin:0;padding:0;gap:12px}.invite-card{background:#fafafa;border-radius:6px;padding:12px 14px;border:1px solid #e5e7eb}.invite-card-code{margin-bottom:6px}.invite-card-code code{font-size:1rem;font-weight:600;background:#e2e8f0;padding:4px 10px;border-radius:8px}.invite-card-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:.85rem;color:#64748b;margin-bottom:4px}.invite-card-expires{color:#475569}.invite-card-who{font-size:.875rem;color:#334155;margin-top:6px;padding-top:6px;border-top:1px solid #e2e8f0}@media (max-width: 640px){.admin-invite-table-wrap{display:none}.admin-invite-cards{display:flex;flex-direction:column}}@media (min-width: 641px){.admin-invite-cards{display:none!important}}.table-wrap{overflow:auto}.table code{font-size:.9em;background:#f1f5f9;padding:2px 6px;border-radius:4px}.parcel-page{display:flex;flex-direction:column;gap:16px;flex:1;min-height:0}.parcel-form-wrap{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:18px 20px}.parcel-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a2e;display:flex;align-items:center;justify-content:center;padding:24px 16px;z-index:1000}.parcel-modal{max-width:720px;width:100%;background:#fff;border-radius:12px;border:1px solid #e5e7eb;box-shadow:0 18px 45px #0f172a40;padding:18px 20px}.parcel-form-title{margin:0 0 14px;font-size:1rem;font-weight:600;color:#374151}.parcel-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px 20px;margin-bottom:16px}.parcel-form-grid label{display:flex;flex-direction:column;gap:4px;font-size:.875rem;color:#6b7280}.parcel-form-grid input{padding:8px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:.9375rem}.parcel-form-grid input[readonly]{background:#f3f4f6;color:#6b7280;cursor:default}.parcel-form-grid select{padding:8px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:.9375rem;background-color:#fff}.parcel-form-actions{display:flex;gap:10px}.parcel-form-btn{padding:8px 16px;font-size:.9375rem;font-weight:500;border-radius:6px;border:none;cursor:pointer}.parcel-form-btn-submit{background:#4f46e5;color:#fff}.parcel-form-btn-submit:hover{background:#4338ca}.parcel-form-btn-cancel{background:#f1f5f9;color:#475569}.parcel-form-btn-cancel:hover{background:#e2e8f0}.parcel-form-btn-small{padding:7px 12px;font-size:.8rem}.parcel-form-polygon{margin-top:16px;padding-top:12px;border-top:1px solid #e5e7eb}.parcel-form-polygon-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.1fr);gap:12px 16px;align-items:flex-start}.parcel-form-polygon-right{min-height:180px}.parcel-form-polygon-head{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-bottom:10px}.parcel-form-polygon-title{font-size:.9rem;font-weight:600;color:#374151}.parcel-form-polygon-hint{font-size:.8rem;color:#9ca3af}.parcel-form-polygon-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.parcel-form-polygon-row input{flex:1 1 140px;padding:8px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:.9rem}.parcel-form-polygon-list{margin:4px 0 0;padding-left:18px;max-height:180px;overflow:auto;font-size:.85rem;color:#4b5563}.parcel-form-polygon-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.parcel-form-point-main{display:inline-flex;align-items:center;gap:6px}.parcel-form-point-dot{width:10px;height:10px;border-radius:999px;flex-shrink:0}.parcel-form-polygon-remove{border:none;background:transparent;color:#b91c1c;font-size:.78rem;cursor:pointer}.parcel-form-polygon-remove:hover{text-decoration:underline}.parcel-form-polygon-actions{display:flex;align-items:center;gap:6px}.parcel-form-polygon-move{border:none;background:transparent;color:#4b5563;font-size:.78rem;cursor:pointer}.parcel-form-polygon-move[disabled]{opacity:.4;cursor:default}.parcel-form-polygon-move:hover:not(:disabled){text-decoration:underline}.parcel-preview-map{width:100%;height:220px;border-radius:8px;border:1px solid #e5e7eb;overflow:hidden}@media (max-width: 768px){.parcel-form-polygon-layout{grid-template-columns:minmax(0,1fr)}.parcel-preview-map{height:200px}}.parcel-map-page{display:grid;grid-template-rows:auto auto 1fr;gap:12px;flex:1;min-height:0}.parcel-map-filters{flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:12px 16px}.parcel-map-filters-row{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end}.parcel-map-filter{display:flex;flex-direction:column;gap:4px;min-width:160px;font-size:.85rem;color:#4b5563}.parcel-map-filter input,.parcel-map-filter select{padding:7px 10px;border-radius:6px;border:1px solid #e5e7eb;font-size:.9rem}.parcel-map-base-toggle{margin-left:auto;display:flex;gap:6px}.parcel-map-base-btn{padding:7px 12px;font-size:.8rem;border-radius:999px;border:1px solid #e5e7eb;background:#f9fafb;color:#4b5563;cursor:pointer}.parcel-map-base-btn.active{background:#4f46e5;border-color:#4f46e5;color:#fff}.parcel-map-filter-toggle{padding:7px 12px;font-size:.8rem;border-radius:6px;border:1px solid #d1d5db;background:#f9fafb;color:#6b7280;cursor:pointer;white-space:nowrap}.parcel-map-filter-toggle:hover{background:#f3f4f6}.parcel-map-filters-expanded{margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb}.parcel-map-filter-range{display:flex;align-items:center;gap:6px}.parcel-map-filter-range input{width:80px;padding:7px 10px;border-radius:6px;border:1px solid #e5e7eb;font-size:.9rem}.parcel-map-filter-range span{color:#9ca3af;font-size:.85rem}.parcel-map-filter-checkbox{display:flex;align-items:center;gap:8px;font-size:.9rem;color:#374151;cursor:pointer;padding:7px 0}.parcel-map-filter-checkbox input{width:18px;height:18px;cursor:pointer}.parcel-map-simulation-block{flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.parcel-map-simulation-row{display:flex;align-items:center;flex-wrap:wrap;gap:14px}.parcel-map-simulation-toggle{display:flex;align-items:center;gap:8px;font-size:.9rem;color:#374151;cursor:pointer}.parcel-map-simulation-toggle input{width:18px;height:18px;cursor:pointer}.parcel-map-simulation-toggle input:disabled{cursor:not-allowed;opacity:.6}.parcel-map-simulation-hint{font-size:.85rem;color:#6b7280}.parcel-map-simulation-info{width:100%;margin-top:4px}.parcel-map-simulation-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:8px}.parcel-map-reserve-btn{margin-right:8px;padding:6px 14px;font-size:.85rem;border-radius:999px;border:1px solid #2563eb;background:#3b82f6;color:#fff;font-weight:500;cursor:pointer}.parcel-map-reserve-btn:hover{background:#2563eb}.parcel-map-btn-add-building{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;font-size:1rem;font-weight:600;color:#fff;background:#059669;border:none;border-radius:8px;cursor:pointer;box-shadow:0 2px 4px #05966959;min-height:40px}.parcel-map-btn-add-building:hover{background:#047857}.parcel-map-waiting-hint{font-size:.9rem;color:#059669;font-weight:500}.parcel-map-simulation-site{margin:0 0 8px;font-size:.875rem;color:#4b5563}.parcel-map-simulation-area{margin:0 0 8px;font-size:.875rem;color:#059669}.parcel-map-sim-actions-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.parcel-map-save-btn{margin:4px 0 10px;padding:6px 14px;font-size:.8rem;border-radius:999px;border:1px solid #d1fae5;background:#ecfdf5;color:#047857;font-weight:500;cursor:pointer}.parcel-map-save-btn:hover{background:#a7f3d0}.parcel-map-load-btn{margin:4px 0 10px;padding:6px 12px;font-size:.8rem;border-radius:999px;border:1px solid #e5e7eb;background:#f9fafb;color:#374151;cursor:pointer}.parcel-map-load-btn:hover{background:#e5e7eb}.parcel-map-template-select select{margin:4px 0 10px;padding:6px 12px;font-size:.8rem;border-radius:6px;border:1px solid #e5e7eb;background:#fff;color:#374151;cursor:pointer;min-width:140px}.parcel-map-buildings-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.parcel-map-buildings-list li{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f9fafb;border-radius:6px;border:1px solid #e5e7eb;font-size:.85rem}.parcel-map-building-size{color:#6b7280}.parcel-map-building-edit,.parcel-map-building-delete{padding:4px 8px;font-size:.75rem;border-radius:4px;cursor:pointer;border:1px solid #e5e7eb;background:#fff}.parcel-map-building-align-btn{padding:4px 10px;font-size:.75rem;border-radius:999px;cursor:pointer;border:1px solid #e5e7eb;background:#ecfdf5;color:#047857;font-weight:500}.parcel-map-building-align-btn.active{background:#4f46e5;border-color:#4f46e5;color:#fff}.parcel-align-handle{cursor:pointer}.parcel-map-building-edit:hover{background:#eff6ff;border-color:#3b82f6;color:#1d4ed8}.parcel-map-building-delete:hover{background:#fef2f2;border-color:#f87171;color:#b91c1c}.parcel-map-building-rotate div{width:12px;height:12px;border-radius:999px;background:#fff;border:2px solid #f97316;box-shadow:0 0 0 2px #f9731640}.building-popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto;z-index:1000}.building-popup{background:#fff;border-radius:12px;padding:20px 24px;min-width:280px;max-width:480px;width:100%;max-height:calc(100vh - 32px);overflow-y:auto;box-shadow:0 10px 40px #00000026;margin:auto}.building-popup-hint{margin:0 0 12px;font-size:.85rem;color:#6b7280}.building-popup h3{margin:0 0 16px;font-size:1.1rem;color:#111827}.building-popup-field{margin-bottom:12px}.building-popup-field label{display:block;font-size:.85rem;color:#4b5563;margin-bottom:4px}.building-popup-field input{width:100%;padding:8px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:.9rem;box-sizing:border-box}.building-popup-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.building-popup-actions button{padding:8px 16px;font-size:.875rem;border-radius:6px;cursor:pointer}.building-popup-actions button[type=button]{background:#f3f4f6;border:1px solid #e5e7eb;color:#4b5563}.building-popup-actions button[type=submit]{background:#4f46e5;border:none;color:#fff}.building-popup-actions button[type=submit]:hover{background:#059669}@media (max-width: 640px){.building-popup{max-width:min(480px,calc(100vw - 24px))}}@media (max-width: 480px){.building-popup-backdrop{padding:12px;align-items:flex-start}.building-popup{padding:16px;min-width:0;max-width:100%;max-height:calc(100vh - 24px)}.building-popup h3{font-size:1rem}.building-popup-field input{font-size:16px}.building-popup-actions{flex-direction:column;gap:8px}.building-popup-actions button{width:100%}.building-popup--reservation .reservation-section{margin-bottom:12px}.reservation-land-details{padding:8px 10px}.reservation-land-details p{font-size:.8125rem}.contract-preview{max-width:100%;max-height:calc(100vh - 24px);padding:16px}.contract-preview-actions{flex-direction:column}.contract-preview-confirm,.contract-preview-download{width:100%}.reservation-success{padding:20px 16px}}.reservation-section{margin-bottom:16px}.reservation-section-title{margin:0 0 8px;font-size:.9rem;font-weight:600;color:#374151}.reservation-land-details{padding:10px 12px;background:#f9fafb;border-radius:6px;border:1px solid #e5e7eb}.reservation-land-details p{margin:4px 0;font-size:.875rem}.contract-preview{max-width:480px;max-height:90vh;overflow-y:auto;padding:20px;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026}.contract-preview h3{margin:0 0 16px;font-size:1.25rem}.contract-preview-meta{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.contract-preview-meta p{margin:4px 0;font-size:.9rem}.contract-conditions{margin:0;padding-left:20px;font-size:.875rem;color:#374151}.contract-conditions li{margin:6px 0}.contract-preview-actions{display:flex;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid #e5e7eb}.contract-preview-confirm{flex:1;padding:10px 16px;font-size:.9rem;font-weight:500;border:none;border-radius:6px;background:#2563eb;color:#fff;cursor:pointer}.contract-preview-confirm:hover{background:#1d4ed8}.contract-preview-download{padding:10px 16px;font-size:.9rem;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;cursor:pointer}.contract-preview-download:hover{background:#f9fafb}.reservation-success{padding:32px;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;text-align:center}.reservation-success h3{margin:0 0 12px;font-size:1.25rem;color:#059669}.reservation-success-message{margin:0 0 24px;font-size:.95rem;color:#374151}.reservation-success-back{padding:10px 24px;font-size:.9rem;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;cursor:pointer}.reservation-success-back:hover{background:#f9fafb}background: #4338ca; } .parcel-map-container{background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:8px;min-height:0;flex:1;display:flex;flex-direction:column;width:100%}.parcel-map-leaflet{width:100%;flex:1;min-height:0;height:100%;border-radius:6px;overflow:hidden;position:relative}@media (max-width: 768px){.parcel-map-base-toggle{margin-left:0}}.parcel-panel-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px}.parcel-panel-head h2{margin:0}.parcel-panel-head-actions{display:flex;align-items:center;gap:8px}.parcel-btn-add{padding:8px 14px;font-size:.875rem;font-weight:500;background:#4f46e5;color:#fff;border:none;border-radius:6px;cursor:pointer}.parcel-btn-add:hover{background:#4338ca}.parcel-table .th-actions,.parcel-table .td-actions{width:1%;white-space:nowrap;text-align:right}.parcel-table .td-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.parcel-btn-view{padding:5px 10px;font-size:.8125rem;background:#4f46e5;color:#fff;border:none;border-radius:6px;cursor:pointer}.parcel-btn-view:hover{background:#4338ca}.parcel-btn-edit{padding:5px 10px;font-size:.8125rem;background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer}.parcel-btn-edit:hover{background:#e2e8f0}.parcel-btn-delete{padding:5px 10px;font-size:.8125rem;background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:6px;cursor:pointer}.parcel-btn-delete:hover{background:#fee2e2}.parcel-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.parcel-detail-head h2{margin:0}.parcel-btn-edit-inline{padding:6px 12px;font-size:.8125rem;background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer}.parcel-btn-edit-inline:hover{background:#e2e8f0}.layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px}.layout.layout--single{grid-template-columns:minmax(0,1fr)}.panel{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:18px 20px;overflow:auto}.panel h2{margin:0 0 14px;font-size:1.0625rem;font-weight:600;color:#374151}.table{width:100%;border-collapse:collapse;font-size:.875rem}.table th,.table td{border-bottom:1px solid #f3f4f6;padding:10px 12px;text-align:left}.table th{background:#fafafa;font-weight:500;color:#6b7280;position:sticky;top:0;z-index:1}.table tbody tr:hover{background:#fafafa}.dashboard-content .panel button{border-radius:6px;padding:6px 12px;font-size:.8125rem;font-weight:500;background:#4f46e5;color:#fff;border:none;cursor:pointer;transition:background .15s}.dashboard-content .panel button:hover{background:#4338ca}button{border-radius:6px;border:none;padding:6px 12px;cursor:pointer;font-size:.875rem;font-weight:500;background:#4f46e5;color:#fff;transition:background .15s}button:hover{background:#4338ca}button:active{background:#3730a3}.coords-list{max-height:320px;overflow:auto;padding-left:20px;margin:0 0 8px;font-family:ui-monospace,SF Mono,Menlo,Monaco,Consolas,monospace;font-size:.8125rem;color:#4b5563;line-height:1.6}.panel h3{margin:0 0 6px;font-size:1rem;font-weight:600;color:#374151}.panel h4{margin:12px 0 6px;font-size:.875rem;font-weight:600;color:#6b7280}.panel p{margin:0 0 8px;font-size:.875rem;color:#6b7280}.panel-placeholder{color:#9ca3af!important;font-size:.875rem}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:clamp(16px,4vw,32px) 16px;box-sizing:border-box}.auth-page-inner{width:100%;max-width:420px}.auth-card{background:#fff;border-radius:20px;box-shadow:0 25px 50px -12px #0f172a1f,0 0 0 1px #0f172a0a;padding:clamp(24px,6vw,36px);overflow:hidden}.auth-card-header{margin-bottom:24px}.auth-title{margin:0 0 6px;font-size:clamp(1.25rem,3vw,1.5rem);font-weight:700;color:#1e293b;letter-spacing:-.02em}.auth-subtitle{margin:0;font-size:.9375rem;color:#64748b;line-height:1.4}.auth-error{padding:12px 14px;margin-bottom:16px;background:#fef2f2;color:#b91c1c;font-size:.875rem;border-radius:12px;border:1px solid #fecaca}.auth-form{display:flex;flex-direction:column;gap:18px}.auth-form .form-row{gap:6px}.auth-form .form-row label{font-size:.875rem;font-weight:500;color:#334155}.auth-form input{width:100%;box-sizing:border-box;padding:12px 16px;font-size:1rem;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;transition:border-color .2s,box-shadow .2s}.auth-form input::placeholder{color:#94a3b8}.auth-form input:focus{outline:none;border-color:#6366f1;background:#fff;box-shadow:0 0 0 3px #6366f126}.auth-submit{margin-top:8px;padding:14px 20px;font-size:1rem;font-weight:600;border-radius:12px;background:linear-gradient(135deg,#4f46e5,#6366f1);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 14px #4f46e566;transition:transform .15s,box-shadow .15s}.auth-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #4f46e573}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{opacity:.7;cursor:not-allowed}.auth-footer{margin-top:24px;padding-top:20px;border-top:1px solid #f1f5f9;text-align:center}.auth-link{background:none;border:none;padding:0;font-size:.9375rem;color:#6366f1;cursor:pointer;text-decoration:none;transition:color .2s,text-decoration .2s}.auth-link:hover{color:#4f46e5;text-decoration:underline}.form{display:flex;flex-direction:column;gap:10px;margin-bottom:8px}.form-row{display:flex;flex-direction:column;gap:4px}.form-row label{font-size:.85rem;color:#52606d}input{border-radius:8px;border:1px solid #d9e2ec;padding:8px 12px;font-size:.9rem;outline:none}input:focus{border-color:#2563eb;box-shadow:0 0 0 1px #2563eb33}.error{color:#b91c1c;font-size:.9rem}.link-button{background:transparent;box-shadow:none;color:#2563eb;padding:0;margin-top:4px}.link-button:hover{transform:none;box-shadow:none;text-decoration:underline}@media (max-width: 900px){.layout{grid-template-columns:minmax(0,1fr)}}@media (max-width: 480px){.auth-card{padding:20px 18px}.auth-form input{padding:12px 14px;font-size:16px}.auth-submit{padding:14px 16px}}@media (max-width: 640px){.app--dashboard .app-header h1{font-size:1.2rem}.admin-main{padding:0 8px}}.reservation-dashboard{display:flex;flex-direction:column;gap:24px}.reservation-dashboard-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px}.reservation-card{padding:16px;background:#fff;border-radius:8px;border:1px solid #e5e7eb;display:flex;flex-direction:column;gap:4px}.reservation-card-label{font-size:.8rem;color:#6b7280}.reservation-card-value{font-size:1.5rem;font-weight:600;color:#1a202c}.reservation-section{background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:20px}.reservation-section-title{margin:0 0 16px;font-size:1.1rem;font-weight:600;color:#374151}.reservation-error{padding:12px;background:#fef2f2;border-radius:6px;color:#dc2626;font-size:.9rem;margin:0 0 12px}.reservation-loading{margin:0;color:#6b7280;font-size:.9rem}.reservation-table-wrap{overflow-x:auto}.reservation-table{width:100%;border-collapse:collapse;font-size:.9rem}.reservation-table th,.reservation-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb}.reservation-table th{background:#f9fafb;font-weight:600;color:#374151}.reservation-table-empty{color:#9ca3af;text-align:center;padding:24px}.reservation-status-select{padding:6px 10px;border-radius:6px;border:1px solid #d1d5db;font-size:.85rem;background:#fff;cursor:pointer}.reservation-detail-btn{padding:6px 12px;font-size:.85rem;border-radius:6px;border:1px solid #e5e7eb;background:#f9fafb;color:#374151;cursor:pointer}.reservation-detail-btn:hover{background:#f3f4f6}.reservation-detail-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.reservation-detail-panel{background:#fff;border-radius:8px;padding:24px;max-width:400px;width:90%;box-shadow:0 4px 20px #00000026}.reservation-detail-title{margin:0 0 16px;font-size:1.1rem;font-weight:600;color:#374151}.reservation-detail-list{margin:0 0 20px;display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:.9rem}.reservation-detail-list dt{color:#6b7280;font-weight:500}.reservation-detail-list dd{margin:0;color:#1a202c}.reservation-detail-close{padding:8px 20px;font-size:.9rem;border-radius:6px;border:1px solid #d1d5db;background:#fff;color:#374151;cursor:pointer}.reservation-detail-close:hover{background:#f9fafb}
