:root{--color-primary: #1A5276;--color-primary-hover: #154360;--color-primary-active: #0F3047;--color-primary-soft: #EBF3F9;--color-primary-muted: rgba(26,82,118,.1);--color-action: #2563EB;--color-action-hover: #1D4ED8;--color-success: #16A34A;--color-success-soft: #F0FDF4;--color-warning: #D97706;--color-warning-soft: #FFFBEB;--color-danger: #DC2626;--color-danger-soft: #FEF2F2;--color-background: #F8F8FC;--color-surface: #FFFFFF;--color-surface-raised: #FFFFFF;--color-border: #E5E7EB;--color-border-subtle: #F0F1F3;--color-text: #111827;--color-text-secondary: #374151;--color-text-muted: #6B7280;--color-text-disabled: #9CA3AF;--color-text-inverse: #FFFFFF;--color-focus-ring: rgba(26,82,118,.22);--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--text-2xl: 26px;--text-xl: 22px;--text-lg: 18px;--text-md: 16px;--text-sm: 14px;--text-xs: 12px;--text-2xs: 11px;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.25;--leading-snug: 1.4;--leading-normal: 1.55;--leading-relaxed: 1.65;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 9999px;--shadow-none: none;--shadow-xs: 0 1px 2px rgba(0,0,0,.05);--shadow-sm: 0 1px 4px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.04);--shadow-lg: 0 8px 24px rgba(0,0,0,.09), 0 2px 6px rgba(0,0,0,.05);--transition-fast: .12s ease;--transition-base: .18s ease;--tab-bar-height: 60px;--sidebar-width: 220px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);background:var(--color-background);color:var(--color-text)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-primary)!important;box-shadow:0 0 0 3px var(--color-focus-ring)}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@keyframes sb-spin{to{transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-shell__content{flex:1;padding-bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom))}.app-shell__tab-bar{position:fixed;bottom:0;left:0;right:0;height:var(--tab-bar-height);background:var(--color-surface);border-top:1.5px solid var(--color-border);display:flex;padding-bottom:env(safe-area-inset-bottom);z-index:100}@media(min-width:1024px){.app-shell{flex-direction:row}.app-shell__content{flex:1;padding-bottom:0;min-width:0;max-width:920px;margin:0 auto;width:100%}.app-shell__tab-bar{position:sticky;top:0;left:auto;right:auto;bottom:auto;width:var(--sidebar-width);height:100vh;flex-direction:column;border-top:none;border-right:1px solid var(--color-border);background:var(--color-surface);padding-bottom:0;flex-shrink:0;order:-1;gap:0;align-items:stretch;justify-content:flex-start;padding-top:max(24px,env(safe-area-inset-top));padding-left:env(safe-area-inset-left);overflow-y:auto}}.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:none;background:none;cursor:pointer;color:var(--color-text-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-medium);padding:6px 4px;-webkit-tap-highlight-color:transparent;transition:color var(--transition-fast);min-height:44px;min-width:44px}.tab-item--active{color:var(--color-primary);font-weight:var(--weight-semibold)}.tab-item--coming-soon{opacity:.35;cursor:pointer}.tab-item__icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;position:relative}.tab-item--active .tab-item__icon:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--color-primary)}.tab-item__label{line-height:1;white-space:nowrap}@media(min-width:1024px){.app-shell__tab-bar{padding-top:max(20px,env(safe-area-inset-top))}.tab-bar__logo{display:flex;align-items:center;padding:0 20px 20px;font-size:17px;font-weight:var(--weight-bold);color:var(--color-primary);letter-spacing:-.2px;border-bottom:1px solid var(--color-border);margin-bottom:var(--space-2)}.tab-item{flex:0 0 auto;flex-direction:row;justify-content:flex-start;gap:12px;padding:10px 16px;font-size:var(--text-sm);font-weight:var(--weight-medium);border-radius:var(--radius-md);margin:2px 10px;min-height:44px;opacity:1;transition:background var(--transition-fast),color var(--transition-fast)}.tab-item:hover:not(.tab-item--active):not(.tab-item--coming-soon){background:var(--color-border-subtle);color:var(--color-text-secondary)}.tab-item--active{background:var(--color-primary-soft);color:var(--color-primary);font-weight:var(--weight-semibold)}.tab-item--active .tab-item__icon:after{display:none}.tab-item--coming-soon{opacity:.35}.tab-item__icon{width:20px;height:20px}}.tab-bar__logo{display:none}.coming-soon-toast{position:fixed;bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom) + 12px);left:50%;transform:translate(-50%);background:var(--color-text);color:#fff;font-family:var(--font-sans);font-size:13px;font-weight:var(--weight-medium);padding:8px 18px;border-radius:var(--radius-full);white-space:nowrap;z-index:200;pointer-events:none;animation:toast-in .18s ease both,toast-out .25s ease 1.75s forwards}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toast-out{to{opacity:0;transform:translate(-50%) translateY(4px)}}@media(min-width:1024px){.coming-soon-toast{bottom:24px;left:calc(var(--sidebar-width) + 24px);transform:none;animation:toast-in-desktop .18s ease both,toast-out .25s ease 1.75s forwards}}@keyframes toast-in-desktop{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes sb-pulse{0%,to{opacity:.4}50%{opacity:.8}}.skeleton{background:var(--color-border);border-radius:var(--radius-sm);animation:sb-pulse 1.4s ease-in-out infinite}.editor-action-bar{position:sticky;bottom:0;background:var(--color-surface);border-top:1px solid var(--color-border);padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));z-index:40}.textarea-autogrow{resize:none;overflow:hidden;min-height:80px;width:100%;box-sizing:border-box;font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:12px 14px;background:var(--color-surface);-webkit-tap-highlight-color:transparent}.textarea-autogrow::placeholder{color:var(--color-text-disabled)}.t-screen-title{font-size:var(--text-2xl);font-weight:var(--weight-bold);line-height:var(--leading-tight);color:var(--color-primary)}.t-page-title{font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.t-body{font-size:var(--text-md);font-weight:var(--weight-regular);line-height:var(--leading-normal)}.t-label{font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:var(--leading-snug);color:var(--color-text-secondary)}.t-meta{font-size:13px;font-weight:var(--weight-regular);line-height:var(--leading-snug);color:var(--color-text-muted)}.t-caption{font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:var(--leading-tight)}.t-overline{font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1.2;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}button,a,[role=button]{-webkit-tap-highlight-color:transparent}.auth-page{min-height:100dvh;display:flex;flex-direction:column;background:var(--color-primary);font-family:var(--font-sans)}.auth-hero{flex:0 0 auto;background:var(--color-primary);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:max(var(--space-10),env(safe-area-inset-top)) var(--space-6) var(--space-10);gap:var(--space-2);min-height:180px}.auth-hero__wordmark{font-size:32px;font-weight:var(--weight-bold);color:#fff;letter-spacing:-.6px;line-height:var(--leading-tight)}.auth-hero__tagline{font-size:var(--text-sm);color:#ffffffb3;line-height:var(--leading-snug);max-width:280px}.auth-panel{flex:1 1 auto;background:var(--color-background);border-radius:24px 24px 0 0;padding:var(--space-8) var(--space-6);padding-bottom:max(var(--space-8),env(safe-area-inset-bottom));display:flex;flex-direction:column;margin-top:-16px;box-shadow:0 -4px 20px #0000001a;overflow-y:auto}.auth-panel__header{margin-bottom:var(--space-6)}.auth-panel__title{font-size:var(--text-xl);font-weight:var(--weight-bold);color:var(--color-text);margin:0;line-height:var(--leading-tight);letter-spacing:-.3px}.auth-panel__subtitle{font-size:var(--text-sm);color:var(--color-text-muted);margin:var(--space-1) 0 0;line-height:var(--leading-snug)}.auth-panel__body{flex:1}.auth-form{display:flex;flex-direction:column;gap:var(--space-5)}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary);line-height:var(--leading-snug);display:flex;align-items:baseline;gap:var(--space-2)}.auth-field-label__hint{font-weight:var(--weight-regular);font-size:var(--text-xs);color:var(--color-text-muted)}.auth-field-label__required{color:var(--color-danger);font-size:var(--text-xs)}.auth-input-wrap{position:relative}.auth-input{width:100%;min-height:52px;padding:0 var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-regular);color:var(--color-text);background:var(--color-surface);font-family:var(--font-sans);box-sizing:border-box;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none}.auth-input::placeholder{color:var(--color-text-disabled);font-weight:var(--weight-regular)}.auth-input--has-toggle{padding-right:52px}.auth-pw-toggle{position:absolute;right:0;top:0;width:52px;height:100%;min-height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--color-text-muted);padding:0;transition:color var(--transition-fast);-webkit-tap-highlight-color:transparent}.auth-pw-toggle:hover{color:var(--color-text-secondary)}.auth-btn-primary{min-height:52px;width:100%;background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);letter-spacing:.01em;cursor:pointer;box-shadow:0 2px 8px #1a527640;transition:background var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast);margin-top:var(--space-2);-webkit-tap-highlight-color:transparent}.auth-btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 3px 12px #1a527652}.auth-btn-primary:active:not(:disabled){background:var(--color-primary-active)}.auth-btn-primary:disabled{opacity:.5;cursor:not-allowed}.auth-message{padding:12px var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:var(--leading-snug)}.auth-message--error{background:var(--color-danger-soft);color:var(--color-danger);border:1px solid rgba(220,38,38,.25)}.auth-message--success{background:var(--color-success-soft);color:var(--color-success);border:1px solid rgba(22,163,74,.25)}.auth-footer{margin-top:var(--space-6);display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center}.auth-link{color:var(--color-primary);text-decoration:none;font-size:var(--text-sm);line-height:var(--leading-snug);transition:color var(--transition-fast)}.auth-link:hover{color:var(--color-primary-hover);text-decoration:underline}.auth-link--tertiary{color:var(--color-text-muted);font-size:var(--text-xs)}.auth-link--tertiary:hover{color:var(--color-primary)}.auth-link-btn{background:none;border:none;padding:0;color:var(--color-primary);font-size:inherit;font-family:var(--font-sans);cursor:pointer;text-decoration:underline;-webkit-tap-highlight-color:transparent}.auth-link-btn:hover{color:var(--color-primary-hover)}.auth-field-hint{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1);line-height:var(--leading-snug)}.auth-sent-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-6) 0;gap:var(--space-3)}.auth-sent-state__icon{width:56px;height:56px;border-radius:var(--radius-full);background:var(--color-primary-soft);color:var(--color-primary);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-1)}.auth-sent-state__heading{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-text);margin:0;line-height:var(--leading-tight)}.auth-sent-state__body{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0;line-height:var(--leading-relaxed);max-width:300px}.auth-sent-state__note{font-size:var(--text-xs);color:var(--color-text-muted);margin:0;line-height:var(--leading-snug)}.onboarding-icon{width:44px;height:44px;border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-primary);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-3)}.onboarding-color-row{display:flex;align-items:center;gap:var(--space-3);position:relative}.onboarding-color-preview{width:44px;height:44px;border-radius:var(--radius-sm);border:1.5px solid var(--color-border);flex-shrink:0;pointer-events:none}.onboarding-color-input{position:absolute;left:0;top:0;width:44px;height:44px;opacity:0;cursor:pointer;border:none;padding:0}.onboarding-color-value{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;letter-spacing:.02em}.auth-page--onboarding .auth-hero{min-height:160px;padding-bottom:var(--space-8)}@media(min-width:680px){.auth-page{align-items:center;justify-content:center;background:var(--color-background);padding:var(--space-6)}.auth-hero{display:none}.auth-panel{max-width:440px;width:100%;border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);margin-top:0;padding:var(--space-8);flex:0 1 auto;border-top:4px solid var(--color-primary)}.auth-panel:before{content:"SiteBrief";display:block;font-size:20px;font-weight:var(--weight-bold);color:var(--color-primary);letter-spacing:-.3px;margin-bottom:var(--space-6)}.auth-page--onboarding .auth-panel{max-width:480px}}ul,ol{list-style:none;padding:0;margin:0}.projects-page{display:flex;flex-direction:column;min-height:100dvh;background:var(--color-background)}.projects-header{display:flex;justify-content:space-between;align-items:center;padding:max(var(--space-4),env(safe-area-inset-top)) var(--space-4) 14px;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.projects-wordmark{font-size:20px;font-weight:var(--weight-bold);color:var(--color-primary);letter-spacing:-.4px;line-height:var(--leading-tight);margin:0}@media(min-width:1024px){.projects-wordmark{display:none}.projects-header{padding-top:var(--space-6);position:static}}.projects-new-btn{height:44px;padding:0 var(--space-4);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;display:flex;align-items:center;gap:var(--space-1);box-shadow:0 2px 8px #1a527647;flex-shrink:0;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.projects-new-btn:hover{background:var(--color-primary-hover)}.projects-list{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--space-4) var(--space-4)}.project-card-wrap{position:relative;border-radius:var(--radius-lg);overflow:visible}.project-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;cursor:pointer;transition:box-shadow var(--transition-fast),transform var(--transition-fast);-webkit-tap-highlight-color:transparent;outline:none}.project-card:hover{box-shadow:var(--shadow-md)}.project-card:focus-visible{box-shadow:0 0 0 3px var(--color-action)}.project-card__cover{width:100%;height:120px;overflow:hidden;position:relative;background:var(--color-primary-soft);flex-shrink:0}.project-card__cover-img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.project-card__cover-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-primary) 0%,#154360 100%);color:#ffffff47;font-size:64px;font-weight:var(--weight-bold);font-family:var(--font-sans);letter-spacing:-2px;line-height:1;-webkit-user-select:none;user-select:none;pointer-events:none}.project-card__cover-uploading{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center}.project-card__status-chip{position:absolute;top:8px;right:8px;background:var(--color-success);color:#fff;font-size:10px;font-weight:var(--weight-bold);font-family:var(--font-sans);letter-spacing:.04em;padding:3px 10px;border-radius:var(--radius-full);text-transform:uppercase;pointer-events:none}.project-card__cover-error{font-size:var(--text-xs);color:var(--color-danger);background:var(--color-danger-soft);padding:6px var(--space-4);margin:0;line-height:var(--leading-snug)}.project-card__body{flex:1;min-width:0;display:flex;align-items:flex-start;gap:0;padding:12px var(--space-4) var(--space-3);width:100%}.project-card__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.project-card__name{font-size:var(--text-md);font-weight:var(--weight-bold);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:var(--leading-snug);margin:0}.project-card__customer{font-size:var(--text-sm);color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:var(--leading-snug);margin:0}.project-card__meta-row{display:flex;align-items:center;gap:var(--space-1);margin-top:4px}.project-card__meta{font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:var(--leading-snug);margin:0}.project-card__dot{width:3px;height:3px;border-radius:50%;background:var(--color-text-disabled);flex-shrink:0}.project-card__menu-zone{display:flex;align-items:center;flex-shrink:0;margin-left:var(--space-2)}.project-card__menu-btn{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--color-text-muted);border-radius:var(--radius-sm);transition:color var(--transition-fast),background var(--transition-fast);-webkit-tap-highlight-color:transparent}.project-card__menu-btn:hover{background:var(--color-primary-muted);color:var(--color-text-secondary)}.project-card__menu-popover{position:absolute;right:var(--space-3);top:calc(100% - 4px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:50;min-width:160px;overflow:hidden}.project-card__menu-item{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:12px var(--space-4);background:none;border:none;border-bottom:1px solid var(--color-border-subtle);cursor:pointer;font-size:var(--text-sm);font-family:var(--font-sans);color:var(--color-text-secondary);text-align:left;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.project-card__menu-item:last-child{border-bottom:none}.project-card__menu-item:hover{background:var(--color-primary-muted)}.project-card__menu-item--danger{color:var(--color-warning)}.projects-skeleton{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--space-4)}.projects-skeleton__card{background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.projects-skeleton__cover{height:120px}.projects-skeleton__body{padding:12px var(--space-4) var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.projects-skeleton__line{height:14px;border-radius:var(--radius-sm)}.projects-skeleton__line--title{width:60%;height:16px}.projects-skeleton__line--meta{width:40%}.projects-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-6);text-align:center;gap:var(--space-3)}.projects-empty__icon{color:var(--color-border);margin-bottom:var(--space-2)}.projects-empty__heading{font-size:20px;font-weight:var(--weight-bold);color:var(--color-text);margin:0;line-height:var(--leading-tight)}.projects-empty__sub{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:var(--leading-snug)}.projects-empty__btn{min-height:52px;padding:0 var(--space-8);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-full);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;box-shadow:0 2px 8px #1a527647;margin-top:var(--space-2);transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.projects-empty__btn:hover{background:var(--color-primary-hover)}.projects-error{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8) var(--space-6);text-align:center;gap:var(--space-4)}.projects-error__text{font-size:var(--text-md);color:var(--color-danger);margin:0;line-height:var(--leading-snug)}.projects-error__retry{min-height:48px;padding:0 var(--space-8);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.projects-error__retry:hover{background:var(--color-primary-hover)}.new-project-form-wrap{padding:var(--space-2) var(--space-4)}.new-project-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5)}.new-project-form__title{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-primary);margin:0 0 var(--space-4);line-height:var(--leading-tight)}.new-project-form__error{background:var(--color-danger-soft);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);line-height:var(--leading-snug);margin-bottom:var(--space-3)}.new-project-form__fields{display:flex;flex-direction:column;gap:var(--space-3)}.new-project-form__field{display:flex;flex-direction:column;gap:var(--space-1)}.new-project-form__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);line-height:var(--leading-snug)}.new-project-form__required{color:var(--color-danger)}.new-project-form__input{height:48px;padding:0 var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-md);font-family:var(--font-sans);color:var(--color-text);background:var(--color-surface);box-sizing:border-box;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.new-project-form__input::placeholder{color:var(--color-text-disabled)}.new-project-form__actions{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.new-project-form__cancel{flex:1;min-height:48px;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-medium);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast);-webkit-tap-highlight-color:transparent}.new-project-form__cancel:hover{background:var(--color-background);color:var(--color-text-secondary)}.new-project-form__submit{flex:1;min-height:48px;background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;box-shadow:var(--shadow-sm);transition:background var(--transition-fast),opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}.new-project-form__submit:hover:not(:disabled){background:var(--color-primary-hover)}.new-project-form__submit:disabled{opacity:.5;cursor:not-allowed}.spinner-sm{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:sb-spin .8s linear infinite;flex-shrink:0}.detail-page{display:flex;flex-direction:column;min-height:100dvh;background:var(--color-background)}.detail-hero{position:relative;width:100%;height:200px;background:linear-gradient(135deg,var(--color-primary) 0%,#154360 100%);overflow:hidden;flex-shrink:0}.detail-hero__img{width:100%;height:100%;object-fit:cover;display:block}.detail-hero__fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#ffffff26;font-size:80px;font-weight:var(--weight-bold);font-family:var(--font-sans);letter-spacing:-3px;-webkit-user-select:none;user-select:none}.detail-hero__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#00000061,#0000 45%,#00000085);pointer-events:none}.detail-hero__back{position:absolute;top:max(var(--space-3),env(safe-area-inset-top));left:var(--space-3);width:40px;height:40px;border-radius:var(--radius-full);background:#0006;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast);z-index:5}.detail-hero__back:hover{background:#0000009e}.detail-hero__photo-actions{position:absolute;bottom:var(--space-3);right:var(--space-3);display:flex;align-items:center;gap:6px;z-index:5}.detail-hero__photo-btn{height:32px;padding:0 12px;border-radius:var(--radius-full);background:#ffffff38;color:#fff;border:1px solid rgba(255,255,255,.38);font-size:12px;font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;display:flex;align-items:center;gap:5px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast);position:absolute;bottom:var(--space-3);right:var(--space-3);z-index:5}.detail-hero__photo-actions>.detail-hero__photo-btn{position:static}.detail-hero__photo-btn:hover{background:#ffffff57}.detail-hero__photo-popover{position:absolute;bottom:calc(100% + 6px);right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:140px;overflow:hidden;z-index:20}.detail-hero__photo-menu-item{display:block;width:100%;padding:11px var(--space-4);background:none;border:none;border-bottom:1px solid var(--color-border-subtle);font-size:var(--text-sm);font-family:var(--font-sans);color:var(--color-text-secondary);cursor:pointer;text-align:left;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.detail-hero__photo-menu-item:last-child{border-bottom:none}.detail-hero__photo-menu-item:hover{background:var(--color-primary-muted)}.detail-hero__photo-menu-item--remove{color:var(--color-danger)}.detail-hero__photo-menu-item--remove:hover{background:var(--color-danger-soft)}.detail-cover-error{font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-soft);padding:8px var(--space-4);margin:0;line-height:var(--leading-snug)}.detail-hero__file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.detail-hero__uploading{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:10}.detail-identity{background:var(--color-surface);padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-border)}.detail-project-name{font-size:22px;font-weight:var(--weight-bold);color:var(--color-text);margin:0 0 4px;line-height:var(--leading-tight);letter-spacing:-.3px}.detail-meta-line{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:var(--leading-snug);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-report-summary{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:6px;display:flex;align-items:center;gap:var(--space-1)}.detail-upsell{margin:var(--space-3) var(--space-4) 0;padding:var(--space-3) var(--space-4);background:var(--color-warning-soft);border:1px solid var(--color-warning);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.detail-upsell__text{font-size:var(--text-sm);color:var(--color-text);flex:1;line-height:var(--leading-snug)}.detail-upsell__btn{flex-shrink:0;min-height:36px;padding:0 var(--space-4);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.detail-upsell__btn:hover{background:var(--color-primary-hover)}.detail-cta{padding:var(--space-4) var(--space-4) 0}.detail-new-report-btn{width:100%;min-height:52px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;box-shadow:0 2px 8px #1a527647;transition:background var(--transition-fast),opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}.detail-new-report-btn:hover:not(:disabled){background:var(--color-primary-hover)}.detail-new-report-btn:disabled{opacity:.5;cursor:not-allowed}.detail-create-error{margin-top:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-danger-soft);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:var(--leading-snug)}.detail-section{padding:var(--space-4) var(--space-4) var(--space-2)}.detail-section-label{font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 var(--space-3) 0;line-height:var(--leading-tight)}.detail-report-list{display:flex;flex-direction:column;background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);list-style:none;margin:0;padding:0}.detail-report-card{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:14px var(--space-4);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-border-subtle);cursor:pointer;text-align:left;font-family:var(--font-sans);transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.detail-report-card:last-child{border-bottom:none}.detail-report-card:hover{background:var(--color-primary-soft)}.detail-report-card:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.detail-report-icon{color:var(--color-text-muted);flex-shrink:0;display:flex;align-items:center}.detail-report-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.detail-report-number{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text);line-height:var(--leading-snug)}.detail-report-date{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--leading-snug)}.detail-report-right{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0;color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;font-size:var(--text-2xs);font-weight:var(--weight-bold);padding:3px 10px;border-radius:var(--radius-full);line-height:1;letter-spacing:.02em;white-space:nowrap}.badge--draft{color:var(--color-warning);background:var(--color-warning-soft)}.badge--final{color:var(--color-success);background:var(--color-success-soft)}.detail-reports-empty{padding:var(--space-8) var(--space-4);background:var(--color-surface);border-radius:var(--radius-lg);text-align:center;box-shadow:var(--shadow-sm)}.detail-reports-empty__text{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:var(--leading-snug)}.detail-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6);gap:var(--space-4);text-align:center}.detail-error-text{font-size:var(--text-md);color:var(--color-danger);margin:0}.detail-retry-btn{min-height:48px;padding:0 var(--space-8);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.detail-retry-btn:hover{background:var(--color-primary-hover)}.detail-back-link{background:none;border:none;color:var(--color-primary);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;text-decoration:underline;padding:0}.detail-skeleton{display:flex;flex-direction:column;gap:var(--space-2)}.detail-skeleton__hero{height:200px}.detail-skeleton__strip{height:80px;border-radius:var(--radius-md);margin:var(--space-2) var(--space-4) 0}.detail-skeleton__btn{height:52px;border-radius:var(--radius-md);margin:var(--space-3) var(--space-4) 0}.detail-skeleton__card{height:62px;border-radius:var(--radius-md);margin:0 var(--space-4)}.more-page{min-height:100dvh;display:flex;flex-direction:column;background:var(--color-background)}.more-header{padding:max(var(--space-4),env(safe-area-inset-top)) var(--space-4) 14px;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.more-heading{font-size:20px;font-weight:var(--weight-bold);color:var(--color-primary);letter-spacing:-.3px;margin:0;line-height:var(--leading-tight)}.more-body{padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-5);flex:1}.more-section{display:flex;flex-direction:column}.more-section-label{font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 var(--space-2) 2px;line-height:var(--leading-tight)}.more-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.more-row{display:flex;justify-content:space-between;align-items:center;padding:14px var(--space-4);border-bottom:1px solid var(--color-border-subtle);gap:var(--space-3)}.more-row:last-child{border-bottom:none}.more-row__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);flex-shrink:0}.more-row__value{font-size:var(--text-sm);color:var(--color-text-muted);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.more-badge-active{font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--color-success);background:var(--color-success-soft);padding:3px 10px;border-radius:var(--radius-full);flex-shrink:0;white-space:nowrap}.more-badge-trial{font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--color-primary);background:var(--color-primary-soft);padding:3px 10px;border-radius:var(--radius-full);flex-shrink:0;white-space:nowrap}.more-badge-expired{font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--color-danger);background:var(--color-danger-soft);padding:3px 10px;border-radius:var(--radius-full);flex-shrink:0;white-space:nowrap}.more-cancel-notice{padding:12px var(--space-4);background:#d977060f;border-bottom:1px solid var(--color-border-subtle)}.more-cancel-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-warning);margin:0 0 2px}.more-cancel-body{font-size:var(--text-xs);color:var(--color-text-muted);margin:0;line-height:var(--leading-snug)}.more-upgrade-note{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:var(--leading-snug)}.more-plan-row{display:flex;gap:var(--space-2);flex-wrap:wrap;width:100%}.more-plan-btn{flex:1;min-height:44px;padding:0 var(--space-3);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}.more-plan-btn:disabled{opacity:.6;cursor:not-allowed}.more-plan-btn:hover:not(:disabled){opacity:.88}.more-manage-btn{min-height:36px;padding:0 var(--space-4);background:transparent;color:var(--color-primary);border:1.5px solid var(--color-primary);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:opacity var(--transition-fast);-webkit-tap-highlight-color:transparent;flex-shrink:0}.more-manage-btn:disabled{opacity:.6;cursor:not-allowed}.more-manage-btn:hover:not(:disabled){opacity:.78}.more-sign-out-btn{width:100%;min-height:52px;background:var(--color-surface);color:var(--color-danger);border:1.5px solid var(--color-border);border-radius:var(--radius-lg);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast);-webkit-tap-highlight-color:transparent}.more-sign-out-btn:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}.more-sign-out-btn:disabled{opacity:.6;cursor:not-allowed}.more-error{color:var(--color-danger);font-size:var(--text-sm);background:var(--color-danger-soft);padding:10px 14px;border-radius:var(--radius-sm);margin:0 0 10px}.more-spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto}.editor-page{min-height:100dvh;background:var(--color-background);display:flex;flex-direction:column}.editor-header{position:sticky;top:0;z-index:50;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:max(12px,env(safe-area-inset-top)) var(--space-4) 12px;display:flex;align-items:center;gap:var(--space-3)}.editor-header__back{width:48px;height:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.editor-header__back:hover{background:var(--color-primary-muted)}.editor-header__title-block{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.editor-header__report-num{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-primary);margin:0;line-height:var(--leading-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-header__date{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--leading-snug)}.editor-save-status{font-size:var(--text-xs);color:var(--color-text-muted);flex-shrink:0;text-align:right;max-width:100px;line-height:var(--leading-snug)}.editor-save-status--saving{color:var(--color-text-muted)}.editor-save-status--error{color:var(--color-danger);font-weight:var(--weight-semibold)}.editor-save-status--saved{color:var(--color-success)}.editor-recovery{margin:var(--space-2) var(--space-4) 0;padding:10px var(--space-4);background:var(--color-warning-soft);border:1px solid #FCD34D;border-radius:var(--radius-sm);display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary);flex-wrap:wrap}.editor-recovery__text{flex:1;min-width:0;line-height:var(--leading-snug)}.editor-recovery__actions{display:flex;gap:var(--space-2);flex-shrink:0}.editor-recovery__restore{min-height:36px;padding:0 var(--space-3);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.editor-recovery__restore:hover{background:var(--color-primary-hover)}.editor-recovery__dismiss{min-height:36px;padding:0 var(--space-3);background:none;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.editor-recovery__dismiss:hover{background:var(--color-background)}.editor-body{flex:1;padding:var(--space-4);display:flex;flex-direction:column;gap:0;padding-bottom:var(--space-6)}.editor-section{display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-4);margin-bottom:var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.editor-section:last-of-type{border-bottom:none;margin-bottom:0}.editor-section__label{font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-muted);line-height:var(--leading-tight)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:var(--space-2)}.photo-slot{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--color-border-subtle);background:var(--color-surface)}.photo-slot__img{width:100%;height:100%;object-fit:cover;display:block}.photo-slot--uploading{display:flex;align-items:center;justify-content:center;background:var(--color-background)}.photo-slot--error{display:flex;align-items:center;justify-content:center;background:var(--color-danger-soft);color:var(--color-danger);font-size:var(--text-2xs);padding:var(--space-1);text-align:center;line-height:var(--leading-snug)}.photo-delete-btn{position:absolute;top:0;right:0;width:44px;height:44px;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;box-sizing:border-box;transition:opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}.photo-delete-btn:disabled{opacity:.5;cursor:not-allowed}.photo-delete-visual{width:28px;height:28px;border-radius:var(--radius-full);background:#0009;color:var(--color-text-inverse);display:flex;align-items:center;justify-content:center;flex-shrink:0;pointer-events:none}.photo-add-slot{aspect-ratio:1;border-radius:var(--radius-sm);border:2px dashed var(--color-border);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);cursor:pointer;background:var(--color-background);transition:border-color var(--transition-fast),background var(--transition-fast);-webkit-tap-highlight-color:transparent}.photo-add-slot:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.photo-add-slot__label{font-size:var(--text-2xs);color:var(--color-text-muted);line-height:var(--leading-tight)}.editor-finish-error{padding:var(--space-3) var(--space-4);background:var(--color-danger-soft);border-top:1px solid var(--color-danger);font-size:var(--text-sm);color:var(--color-danger);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.editor-finish-error__retry{flex-shrink:0;min-height:36px;padding:0 var(--space-3);background:var(--color-danger);color:var(--color-text-inverse);border:none;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;-webkit-tap-highlight-color:transparent}.editor-finalize-btn{width:100%;min-height:52px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}.editor-finalize-btn:hover:not(:disabled){background:var(--color-primary-hover)}.editor-finalize-btn:disabled{opacity:.6;cursor:not-allowed}.editor-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6);gap:var(--space-4);text-align:center}.editor-error-text{font-size:var(--text-md);color:var(--color-danger);margin:0}.editor-retry-btn{min-height:48px;padding:0 var(--space-8);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);-webkit-tap-highlight-color:transparent}.editor-retry-btn:hover{background:var(--color-primary-hover)}.editor-back-link{background:none;border:none;color:var(--color-primary);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;text-decoration:underline;padding:0}
