.login-page{background:var(--ivory);grid-template-columns:1fr;min-height:100svh;display:grid}.login-visual{background:var(--dark-green);color:var(--ivory);padding:3rem;display:none;position:relative;overflow:hidden}.login-visual:after{content:"";pointer-events:none;background:radial-gradient(at 18% 80%,#c6a15b24,#0000 42%),radial-gradient(at 88% 12%,#ffffff0f,#0000 36%);position:absolute;inset:0}.login-visual-inner{z-index:1;max-width:460px;margin-top:auto;position:relative}.login-visual h2{font-family:var(--font-brand);letter-spacing:-.02em;color:var(--ivory);margin:0 0 1rem;font-size:clamp(2.4rem,4vw,3.6rem);font-weight:500;line-height:.98}.login-logo{border-radius:12px;width:min(108px,40%);height:auto;margin-bottom:1.5rem}.login-visual p{color:#f7f5f0b8;max-width:32ch}.login-panel{justify-content:center;align-items:center;padding:1.5rem;display:flex}.login-card{width:100%;max-width:440px;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-glass);background:#ffffffa3;padding:2rem 1.75rem}.login-card header{margin-bottom:1.5rem}.login-card h1{font-family:var(--font-brand);letter-spacing:-.02em;color:var(--primary-green);font-size:clamp(2.1rem,4vw,2.8rem);font-weight:500}.login-eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--luxury-gold);margin-bottom:.45rem;font-size:.68rem;font-weight:600;display:block}.password-field{position:relative}.password-field .input{padding-right:3rem}.password-toggle{color:var(--text-secondary);position:absolute;top:50%;right:.35rem;transform:translateY(-50%)}.login-footer{font-size:var(--fs-xs);color:var(--text-secondary);margin-top:1.5rem}.login-card-logo{border-radius:12px;width:88px;height:auto;margin-bottom:1.25rem}.login-card .btn--lg{width:100%}@media (width>=900px){.login-card-logo{display:none}.login-page{grid-template-columns:1.05fr 1fr}.login-visual{display:flex}.login-panel{padding:3rem}}:root{--primary-green:#0b3d2e;--dark-green:#062a1e;--gold:#c6a15b;--luxury-gold:#c6a15b;--light-gold:#d8bd7a;--soft-gold:#d8bd7a;--ivory:#f7f5f0;--cream:#efece5;--white:#fff;--background:#f7f5f0;--text-primary:#1a1a1a;--text-secondary:#6b6b6b;--border:#1a1a1a14;--border-subtle:#1a1a1a14;--danger:#8a1f1f;--success:#0b3d2e;--warning:#9a6b1f;--info:#0b3d2e;--sidebar-bg:#062a1e;--sidebar-text:#f7f5f0;--sidebar-muted:#f7f5f09e;--sidebar-hover:#ffffff14;--sidebar-active:#c6a15b29;--header-bg:#ffffffad;--card-bg:#ffffffb8;--overlay:#062a1e47;--glass:#ffffff9e;--glass-strong:#fffc;--glass-border:#ffffff80;--glass-blur:blur(22px) saturate(180%);--shadow-glass:0 8px 32px #00000014;--shadow-float:0 18px 50px #062a1e1f;--font-sans:"Manrope", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-brand:"Cormorant Garamond", Georgia, "Times New Roman", serif;--font-heading:"Cormorant Garamond", Georgia, "Times New Roman", serif;--fs-xs:.75rem;--fs-sm:.8125rem;--fs-base:.875rem;--fs-md:.9375rem;--fs-lg:1.0625rem;--fs-xl:1.25rem;--fs-2xl:1.5rem;--fs-3xl:1.875rem;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-full:999px;--shadow-sm:0 4px 16px #0000000a;--shadow-md:0 12px 32px #062a1e14;--shadow-lg:0 24px 60px #062a1e1f;--sidebar-width:248px;--sidebar-collapsed:76px;--sidebar-inset:12px;--header-height:58px;--ease-out:cubic-bezier(.22, 1, .36, 1);--transition-fast:.15s var(--ease-out);--transition:.18s var(--ease-out);--transition-base:.25s var(--ease-out);--transition-slow:.4s var(--ease-out);--z-header:40;--z-sidebar:50;--z-overlay:60;--z-modal:70;--z-toast:80;--badge-draft-bg:#efece5;--badge-draft-fg:#6b6b6b;--badge-active-bg:#0b3d2e14;--badge-active-fg:#0b3d2e;--badge-inactive-bg:#efece5;--badge-inactive-fg:#6b6b6b;--badge-pending-bg:#c6a15b29;--badge-pending-fg:#7a5c28;--badge-paid-bg:#0b3d2e14;--badge-paid-fg:#0b3d2e;--badge-failed-bg:#f7ecec;--badge-failed-fg:#8a1f1f;--badge-processing-bg:#0b3d2e0f;--badge-processing-fg:#062a1e;--badge-shipped-bg:#c6a15b1f;--badge-shipped-fg:#7a5c28;--badge-low-bg:#c6a15b29;--badge-low-fg:#7a5c28}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--text-primary);background:var(--background);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}:focus-visible{outline-offset:3px;outline:2px solid #0b3d2e47}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{min-height:100vh}.page{flex-direction:column;gap:1.25rem;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.page-header h1{font-family:var(--font-brand);letter-spacing:-.02em;color:var(--primary-green);font-size:clamp(1.8rem,3vw,2.3rem);font-weight:500}.page-header p,.page-subtitle{color:var(--text-secondary);font-size:var(--fs-sm);margin-top:.25rem}.page-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.card{background:var(--card-bg);-webkit-backdrop-filter:blur(18px)saturate(160%);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-glass)}.card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem;display:flex}.card-header h2,.card-title{font-size:var(--fs-md);font-weight:var(--fw-semibold)}.card-body{padding:1.25rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.toolbar .search-input{flex:220px;min-width:180px}.filters{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;display:grid}.field{flex-direction:column;gap:.4rem;display:flex}.field label,.field-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-primary)}.field .hint{font-size:var(--fs-xs);color:var(--text-secondary)}.input-with-action{align-items:stretch;gap:.5rem;display:flex}.input-with-action .input{flex:1}.input-with-action .btn{flex-shrink:0}.field-error{font-size:var(--fs-xs);color:var(--danger)}.input,.select,.textarea{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;min-height:42px;transition:border-color var(--transition), box-shadow var(--transition), background-color var(--transition);background:#ffffffc7;padding:.55rem .85rem}.textarea{resize:vertical;min-height:110px}.input:focus,.select:focus,.textarea:focus{background:var(--white);border-color:#0b3d2e47;outline:none;box-shadow:0 0 0 4px #0b3d2e14}.input.is-invalid,.select.is-invalid,.textarea.is-invalid{border-color:var(--danger)}.checkbox-row{font-size:var(--fs-sm);align-items:center;gap:.5rem;display:flex}.checkbox-row input{width:16px;height:16px;accent-color:var(--primary-green)}.form-grid{grid-template-columns:1fr;gap:1rem;display:grid}.form-section{flex-direction:column;gap:1rem;display:flex}.form-section h2{font-size:var(--fs-md);font-weight:var(--fw-semibold);border-bottom:1px solid var(--border);padding-bottom:.75rem}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:.75rem;display:flex}.btn{border-radius:var(--radius-sm);min-height:42px;font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:.04em;transition:background var(--transition), color var(--transition), border-color var(--transition), opacity var(--transition), transform var(--transition), box-shadow var(--transition);border:1px solid #0000;justify-content:center;align-items:center;gap:.45rem;padding:.5rem 1rem;display:inline-flex;box-shadow:0 1px 2px #0000000a}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 22px #062a1e1f}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--sm{min-height:34px;font-size:var(--fs-xs);padding:.3rem .7rem}.btn--lg{min-height:48px;padding:.7rem 1.25rem}.btn--icon{width:38px;min-height:38px;padding:0}.btn--primary{background:var(--primary-green);color:var(--white)}.btn--primary:hover:not(:disabled){background:var(--dark-green)}.btn--secondary{background:var(--white);color:var(--primary-green);border-color:var(--border)}.btn--secondary:hover:not(:disabled){background:var(--cream)}.btn--ghost{color:var(--text-secondary);box-shadow:none;background:0 0}.btn--ghost:hover:not(:disabled){color:var(--text-primary);box-shadow:none;background:#ffffff73;transform:none}.btn--danger{background:var(--danger);color:var(--white)}.btn--danger:hover:not(:disabled){background:#991b1b}.btn--gold{background:var(--gold);color:var(--dark-green)}.table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:720px;font-size:var(--fs-sm)}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap;padding:.85rem 1rem}.data-table th{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);background:#f7f5f0b8}.data-table tbody tr{transition:background var(--transition)}.data-table tbody tr:hover{background:#f7f5f08c}.data-table .cell-wrap{white-space:normal;max-width:240px}.table-product{align-items:center;gap:.75rem;min-width:180px;display:flex}.thumb,.thumb-lg{object-fit:cover;background:var(--cream);border:1px solid var(--border);border-radius:var(--radius-sm);flex-shrink:0}.thumb{width:42px;height:42px}.thumb-lg{width:64px;height:64px}.thumb-placeholder{color:var(--text-secondary);justify-content:center;align-items:center;display:flex}.row-actions{align-items:center;gap:.35rem;display:flex}.muted{color:var(--text-secondary)}.stack{flex-direction:column;gap:.15rem;display:flex}.badge{border-radius:var(--radius-full);font-size:.7rem;font-weight:var(--fw-semibold);letter-spacing:.02em;text-transform:capitalize;white-space:nowrap;align-items:center;padding:.2rem .55rem;display:inline-flex}.badge-draft,.badge-inactive,.badge-closed,.badge-redeemed{background:var(--badge-draft-bg);color:var(--badge-draft-fg)}.badge-active,.badge-paid,.badge-delivered,.badge-healthy,.badge-open,.badge-confirmed{background:var(--badge-active-bg);color:var(--badge-active-fg)}.badge-pending,.badge-packed,.badge-low_stock,.badge-warning{background:var(--badge-pending-bg);color:var(--badge-pending-fg)}.badge-processing,.badge-info,.badge-promo{background:var(--badge-processing-bg);color:var(--badge-processing-fg)}.badge-shipped,.badge-out_for_delivery,.badge-gift_voucher{background:var(--badge-shipped-bg);color:var(--badge-shipped-fg)}.badge-out_of_stock,.badge-cancelled,.badge-failed,.badge-returned,.badge-refunded,.badge-danger{background:var(--badge-failed-bg);color:var(--badge-failed-fg)}.alert{border-radius:var(--radius-md);font-size:var(--fs-sm);border:1px solid #0000;padding:.85rem 1rem}.alert-error{color:var(--danger);background:#fef2f2;border-color:#fecaca}.alert-info{color:var(--primary-green);background:#f8f5ee;border-color:#ead9a8}.empty-state,.loader-block,.error-state{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:3rem 1.5rem;display:flex}.empty-state h3,.error-state h3{color:var(--text-primary);font-size:var(--fs-lg)}.spinner{background:#e7e3da;border:0;border-radius:999px;width:120px;height:8px;animation:none;position:relative;overflow:hidden}.spinner:after{content:"";background:linear-gradient(90deg,#0000,#ffffffb3,#0000);animation:1.4s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.spinner--lg{width:120px;height:8px}.btn .spinner{background:0 0;border:2px solid #ffffff47;border-top-color:currentColor;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.btn .spinner:after{display:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{transform:translate(100%)}}.modal-overlay{z-index:var(--z-modal);background:var(--overlay);-webkit-backdrop-filter:blur(10px);justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal{width:100%;max-height:92vh;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--shadow-float);background:#ffffffc7;border-radius:16px 16px 0 0;overflow:auto}.modal--md{max-width:560px}.modal--lg{max-width:760px}.modal-header,.modal-footer{justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem;display:flex}.modal-header{border-bottom:1px solid var(--border)}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end}.modal-body{padding:1.25rem}.toast-stack{z-index:var(--z-toast);flex-direction:column;gap:.6rem;width:min(360px,100vw - 2rem);display:flex;position:fixed;top:1rem;right:1rem}.toast{border-radius:var(--radius-md);-webkit-backdrop-filter:blur(20px)saturate(180%);box-shadow:var(--shadow-glass);border:1px solid var(--glass-border);background:#ffffffc7;align-items:flex-start;gap:.7rem;padding:.85rem 1rem;display:flex}.toast-success{border-left:3px solid var(--success)}.toast-error{border-left:3px solid var(--danger)}.toast-warning{border-left:3px solid var(--warning)}.toast-info{border-left:3px solid var(--info)}.toast p{font-size:var(--fs-sm)}.pagination{border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.9rem 1.25rem;display:flex}.pagination-controls{align-items:center;gap:.4rem;display:flex}.detail-grid{grid-template-columns:1fr;gap:1rem;display:grid}.dl-grid{grid-template-columns:1fr;gap:.85rem;display:grid}.dl-grid div span{font-size:var(--fs-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.2rem;display:block}.timeline{flex-direction:column;gap:.85rem;margin:0;padding:0;list-style:none;display:flex}.timeline li{grid-template-columns:14px 1fr;align-items:start;gap:.75rem;display:grid}.timeline-dot{background:var(--border);border-radius:50%;width:12px;height:12px;margin-top:4px}.timeline-dot.is-done{background:var(--primary-green)}.timeline-dot.is-current{background:var(--gold)}.image-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:.75rem;display:grid}.image-tile{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--cream);position:relative;overflow:hidden}.image-tile img{object-fit:cover;width:100%;height:108px}.image-tile.is-primary{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.image-tile-actions{justify-content:space-between;gap:.25rem;padding:.35rem;display:flex}.linkish{color:var(--primary-green);font-weight:var(--fw-medium)}.linkish:hover{text-decoration:underline}.stock-out td{background:#fef8f8}.stock-low td{background:#fffaf3}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation:none!important}}.admin-layout{background:var(--background);min-height:100vh}.sidebar{top:var(--sidebar-inset);left:var(--sidebar-inset);bottom:var(--sidebar-inset);z-index:var(--z-sidebar);width:var(--sidebar-width);background:var(--sidebar-bg);color:var(--sidebar-text);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);transition:width var(--transition-slow);flex-direction:column;display:flex;position:fixed}.sidebar.is-collapsed{width:var(--sidebar-collapsed)}.sidebar-brand{min-height:var(--header-height);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.brand-mark{background:var(--primary-green);border-radius:10px;flex-shrink:0;width:40px;height:40px;overflow:hidden}.brand-mark img{object-fit:cover;width:100%;height:100%}.brand-copy{min-width:0}.brand-copy strong{letter-spacing:.14em;white-space:nowrap;font-size:.68rem;display:block}.brand-copy span{color:var(--soft-gold);letter-spacing:.12em;text-transform:uppercase;font-size:.64rem;display:block}.sidebar-nav{flex-direction:column;flex:1;gap:.2rem;padding:.75rem;display:flex;overflow-y:auto}.nav-link{min-height:42px;color:var(--sidebar-muted);transition:background var(--transition), color var(--transition);border-radius:12px;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.nav-link:hover{background:var(--sidebar-hover);color:var(--ivory)}.nav-link.active{background:var(--sidebar-active);color:var(--ivory)}.nav-link span{white-space:nowrap}.sidebar.is-collapsed .brand-copy,.sidebar.is-collapsed .nav-link span,.sidebar.is-collapsed .sidebar-footer span{display:none}.sidebar.is-collapsed .nav-link,.sidebar.is-collapsed .sidebar-footer .btn{justify-content:center;padding-inline:.5rem}.sidebar-footer{padding:.75rem}.sidebar-footer .btn{width:100%;color:var(--sidebar-muted);box-shadow:none;background:0 0;justify-content:flex-start}.sidebar-footer .btn:hover:not(:disabled){background:var(--sidebar-hover);color:var(--ivory);transform:none}.admin-main{min-height:100vh;margin-left:calc(var(--sidebar-width) + var(--sidebar-inset) * 2);padding:var(--sidebar-inset) var(--sidebar-inset) var(--sidebar-inset) 0;transition:margin-left var(--transition-slow);flex-direction:column;display:flex}.admin-main.is-collapsed{margin-left:calc(var(--sidebar-collapsed) + var(--sidebar-inset) * 2)}.admin-header{top:var(--sidebar-inset);z-index:var(--z-header);min-height:var(--header-height);background:var(--header-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass);justify-content:space-between;align-items:center;gap:1rem;padding:0 1rem;display:flex;position:sticky}.header-left,.header-right{align-items:center;gap:.65rem;display:flex}.header-title{font-family:var(--font-brand);letter-spacing:-.02em;color:var(--primary-green);font-size:1.35rem;font-weight:500}.menu-btn,.collapse-btn{color:var(--text-primary);display:inline-flex}.collapse-btn{display:none}.header-profile{position:relative}.profile-trigger{border:1px solid var(--glass-border);border-radius:var(--radius-full);background:#ffffff80;align-items:center;gap:.55rem;min-height:40px;padding:.25rem .55rem .25rem .25rem;display:flex}.avatar{background:var(--primary-green);width:30px;height:30px;color:var(--ivory);font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:50%;place-items:center;display:grid}.profile-menu{min-width:180px;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-float);background:#ffffffd1;padding:.4rem;position:absolute;top:calc(100% + .5rem);right:0}.profile-menu button{justify-content:flex-start;width:100%}.mobile-overlay{z-index:var(--z-overlay);background:var(--overlay);-webkit-backdrop-filter:blur(10px);position:fixed;inset:0}.mobile-sidebar{top:var(--sidebar-inset);left:var(--sidebar-inset);bottom:var(--sidebar-inset);z-index:calc(var(--z-overlay) + 1);background:var(--sidebar-bg);width:min(280px,86vw);color:var(--sidebar-text);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);transition:transform var(--transition-slow);flex-direction:column;display:flex;position:fixed;transform:translate(calc(-100% - 24px))}.mobile-sidebar.is-open{transform:translate(0)}.mobile-sidebar-header{min-height:var(--header-height);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.page-content{flex:1;padding:1.15rem .15rem .25rem}@media (width>=1024px){.menu-btn{display:none}.collapse-btn{display:inline-flex}}@media (width<=767px){.page-content{padding:.9rem 0 .15rem}.admin-header{padding:0 .75rem}}@media (width>=768px){.form-grid-2,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .full,.form-section .full,.span-2{grid-column:1/-1}.modal-overlay{align-items:center;padding:1.5rem}.modal{border-radius:var(--radius-lg)}.dl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid{grid-template-columns:1.4fr 1fr}}@media (width>=1024px){.dashboard-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-main{grid-template-columns:1.6fr 1fr}}@media (width<=1023px){.sidebar{display:none}.admin-main{padding:var(--sidebar-inset);margin-left:0!important}}@media (width<=767px){.page-header h1{font-size:1.35rem}.card-body,.card-header,.modal-body,.modal-header,.modal-footer{padding:1rem}.data-table th,.data-table td{padding:.75rem .8rem}.header-profile-name{display:none}.form-actions{flex-direction:column;align-items:stretch}.form-actions .btn{width:100%}.toast-stack{width:auto;left:1rem;right:1rem}}@media (width<=479px){.toolbar{flex-direction:column;align-items:stretch}.page-actions{width:100%}.page-actions .btn{flex:1}}
