:root{color-scheme:light;--c-brand-50: #fff3eb;--c-brand-100: #ffe4d6;--c-brand-200: #ffc5a8;--c-brand-300: #ffa679;--c-brand-400: #ff8a52;--c-brand-500: #ff7129;--c-brand-600: #e45d16;--c-brand-700: #be490f;--c-brand-800: #95380c;--c-brand-900: #6f2a09;--c-neutral-0: #ffffff;--c-neutral-50: #f6f8fb;--c-neutral-100: #eef1f6;--c-neutral-200: #e1e6ee;--c-neutral-300: #cdd5e1;--c-neutral-400: #a7b2c2;--c-neutral-500: #7d8a9c;--c-neutral-600: #5a6677;--c-neutral-700: #404a59;--c-neutral-800: #2a3240;--c-neutral-900: #1a212c;--c-success: #1f8a52;--c-success-bg: #e7f4ec;--c-success-border: #b7dcc5;--c-warning: #b45309;--c-warning-bg: #fbf0e2;--c-warning-border: #eccba0;--c-danger: #c23b30;--c-danger-bg: #fbece9;--c-danger-border: #eebbb4;--c-info: var(--c-brand-600);--c-info-bg: var(--c-brand-50);--c-info-border: var(--c-brand-200);--color-bg: var(--c-neutral-50);--color-surface: var(--c-neutral-0);--color-surface-muted: var(--c-neutral-50);--color-surface-raised: var(--c-neutral-0);--color-border: var(--c-neutral-200);--color-border-strong: var(--c-neutral-300);--color-text: var(--c-neutral-800);--color-text-heading: var(--c-neutral-900);--color-text-muted: var(--c-neutral-600);--color-text-subtle: var(--c-neutral-500);--color-text-on-brand: var(--c-neutral-0);--color-primary: var(--c-brand-600);--color-primary-hover: var(--c-brand-700);--color-primary-active: var(--c-brand-800);--color-primary-soft: var(--c-brand-50);--color-focus-ring: rgba(255, 113, 41, .35);--font-sans: "Inter", "Noto Sans JP", system-ui, -apple-system, "Segoe UI", Roboto, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-base: .9375rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.375rem;--fs-2xl: 1.75rem;--lh-tight: 1.25;--lh-normal: 1.5;--lh-relaxed: 1.7;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 2rem;--space-8: 2.5rem;--space-9: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 999px;--shadow-xs: 0 1px 2px rgba(20, 33, 51, .06);--shadow-sm: 0 1px 3px rgba(20, 33, 51, .08), 0 1px 2px rgba(20, 33, 51, .04);--shadow-md: 0 4px 12px rgba(20, 33, 51, .08), 0 2px 4px rgba(20, 33, 51, .05);--shadow-lg: 0 12px 32px rgba(20, 33, 51, .14);--layout-sidebar-w: 248px;--layout-topbar-h: 60px;--layout-content-max: 1120px;--ease: cubic-bezier(.2, .6, .2, 1);--dur-fast: .12s;--dur-base: .18s;--z-sticky: 50;--z-overlay: 100}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}h1,h2,h3,h4{color:var(--color-text-heading);font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:-.01em}p{line-height:var(--lh-relaxed)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background:var(--c-brand-100)}#root{min-height:100vh}.app-shell{display:grid;grid-template-columns:var(--layout-sidebar-w) 1fr;grid-template-rows:var(--layout-topbar-h) 1fr;grid-template-areas:"sidebar topbar" "sidebar content";min-height:100vh;min-width:0}.app-topbar{grid-area:topbar;position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:0 var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);min-width:0}.app-topbar-title{display:flex;flex-direction:column;gap:2px;min-width:0}.app-topbar-title .eyebrow{font-size:var(--fs-xs);color:var(--color-text-subtle);letter-spacing:.04em;text-transform:uppercase}.app-topbar-title h1{font-size:var(--fs-lg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-topbar-actions{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.app-sidebar{grid-area:sidebar;display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-5) var(--space-4);background:var(--color-surface);color:var(--color-text);border-right:1px solid var(--color-border)}.app-content{grid-area:content;padding:var(--space-7) var(--space-6);min-width:0}.app-content-inner{max-width:var(--layout-content-max);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-6);min-width:0;width:100%}.brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border)}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--c-brand-400),var(--c-brand-600));color:#fff;flex-shrink:0}.brand-logo{width:40px;height:40px;object-fit:contain;flex-shrink:0}.brand-text{display:flex;flex-direction:column;line-height:1.2}.brand-text strong{color:var(--color-text-heading);font-size:var(--fs-md);font-weight:var(--fw-semibold)}.brand-text span{font-size:var(--fs-xs);color:var(--color-text-muted)}.nav{display:flex;flex-direction:column;gap:var(--space-1)}.nav-section-label{padding:var(--space-3) var(--space-3) var(--space-2);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-subtle)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--fs-base);font-weight:var(--fw-medium);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.nav-item:hover{background:var(--color-surface-muted);color:var(--color-text);text-decoration:none}.nav-item.active{background:var(--color-primary-soft);color:var(--color-primary)}.nav-item .nav-icon{flex-shrink:0;opacity:.9}.nav-label{display:inline-flex;align-items:center;gap:var(--space-2);min-width:0}.nav-news-dot{width:8px;height:8px;border-radius:999px;background:var(--color-danger, #dc2626);flex-shrink:0;box-shadow:0 0 0 2px var(--color-surface, #fff)}.sidebar-footer{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--color-border)}.sidebar-user{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2)}.login-screen{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);background:var(--color-bg)}.login-box{width:100%;max-width:380px;display:flex;flex-direction:column;gap:var(--space-4)}.login-brand{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-bottom:var(--space-1)}.login-brand .brand-logo{width:44px;height:44px}.login-brand-text strong{display:block;font-size:var(--fs-lg);color:var(--color-text-heading);font-weight:var(--fw-semibold)}.login-brand-text span{font-size:var(--fs-xs);color:var(--color-text-muted)}.password-change-actions{margin-top:var(--space-4)}.login-title{text-align:center;font-size:var(--fs-md);color:var(--color-text-muted)}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page-head-text h2{font-size:var(--fs-xl);margin-bottom:var(--space-1)}.page-head-text p{color:var(--color-text-muted);font-size:var(--fs-sm)}.page-head-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);flex-wrap:wrap}.card-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);min-width:0;overflow-wrap:anywhere}.card-body{padding:var(--space-5)}.card-body.flush{padding:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:40px;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--fs-base);font-weight:var(--fw-semibold);line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{height:32px;padding:0 var(--space-3);font-size:var(--fs-sm)}.btn-block{width:100%}.btn-primary{background:var(--color-primary);color:var(--color-text-on-brand)}.btn-primary:not(:disabled):hover{background:var(--color-primary-hover)}.btn-primary:not(:disabled):active{background:var(--color-primary-active)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.btn-secondary:not(:disabled):hover{background:var(--color-surface-muted);border-color:var(--c-neutral-400)}.btn-ghost{background:transparent;color:var(--color-text-muted)}.btn-ghost:not(:disabled):hover{background:var(--color-surface-muted);color:var(--color-text)}.btn-danger{background:var(--c-danger);color:#fff}.btn-danger:not(:disabled):hover{filter:brightness(.94)}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.icon-btn:hover{background:var(--color-surface-muted);color:var(--color-text)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text)}.field-required{margin-left:.2em;color:var(--c-danger);font-weight:var(--fw-semibold)}.field-hint{font-size:var(--fs-xs);color:var(--color-text-subtle)}.control{width:100%;height:40px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.control::placeholder{color:var(--color-text-subtle)}.control:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-ring)}select.control{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235a6677' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-7)}.toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.toolbar-spacer{flex:1}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.search-field{position:relative;flex:1;min-width:220px}.search-field .control{padding-left:var(--space-7)}.search-field .search-icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--color-text-subtle);pointer-events:none}.table-wrap{width:100%;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:var(--fs-base)}.data-table thead th{text-align:left;padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);color:var(--color-text-muted);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table tbody td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background var(--dur-fast) var(--ease)}.data-table tbody tr:hover{background:var(--color-surface-muted)}.cell-strong{font-weight:var(--fw-medium);color:var(--color-text-heading)}.link-button{padding:0;border:0;background:none;cursor:pointer;text-align:left}.link-button:hover{text-decoration:underline}.cell-muted{color:var(--color-text-muted)}.cell-mono{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-text-muted)}.file-cell{display:flex;align-items:center;gap:var(--space-3);min-width:0}.file-cell .cell-strong,.file-cell .link-button{min-width:0;overflow-wrap:anywhere}.file-cell .file-icon{color:var(--color-text-subtle);flex-shrink:0}.file-cell .folder-ic{color:#b77945;fill:#e7b981;flex-shrink:0}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:3px var(--space-2);border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:var(--fw-semibold);border:1px solid transparent;white-space:nowrap}.badge-neutral{background:var(--c-neutral-100);color:var(--color-text-muted);border-color:var(--color-border)}.badge-success{background:var(--c-success-bg);color:var(--c-success);border-color:var(--c-success-border)}.badge-warning{background:var(--c-warning-bg);color:var(--c-warning);border-color:var(--c-warning-border)}.badge-danger{background:var(--c-danger-bg);color:var(--c-danger);border-color:var(--c-danger-border)}.badge-info{background:var(--c-info-bg);color:var(--c-info);border-color:var(--c-info-border)}.tag{display:inline-flex;padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-surface-muted);border:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--fs-xs)}.tag-row{display:inline-flex;flex-wrap:wrap;gap:var(--space-1)}.alert{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--fs-sm)}.alert-success{background:var(--c-success-bg);color:var(--c-success);border-color:var(--c-success-border)}.alert-error{background:var(--c-danger-bg);color:var(--c-danger);border-color:var(--c-danger-border)}.alert-warning{background:var(--c-warning-bg);color:var(--c-warning);border-color:var(--c-warning-border)}.alert-info{background:var(--c-info-bg);color:var(--c-brand-700);border-color:var(--c-info-border)}.alert-spinner{flex-shrink:0;width:16px;height:16px;margin-top:2px;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;border-radius:50%;animation:route-loading-spin .8s linear infinite}.detail-grid{display:grid;grid-template-columns:160px 1fr;gap:var(--space-1) var(--space-4)}.detail-grid dt{padding:var(--space-3) 0;color:var(--color-text-muted);font-size:var(--fs-sm);border-bottom:1px solid var(--color-border)}.detail-grid dd{padding:var(--space-3) 0;color:var(--color-text-heading);border-bottom:1px solid var(--color-border)}.menu-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.card-lead{margin-bottom:var(--space-4);color:var(--color-text-muted);font-size:var(--fs-sm)}.member-cell{display:flex;flex-direction:column;gap:var(--space-2)}.member-cell-count{font-size:var(--fs-xs);color:var(--color-text-subtle)}.col-group-name{width:220px}.col-desc{width:520px}.col-actions{width:1%;white-space:nowrap}.menu-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);color:var(--color-text);transition:transform var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease),border-color var(--dur-base) var(--ease)}.menu-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--c-brand-200);text-decoration:none}.menu-card-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-primary)}.menu-card h3{font-size:var(--fs-md)}.menu-card p{font-size:var(--fs-sm);color:var(--color-text-muted);line-height:var(--lh-normal)}.stat-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stat-card{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.stat-card-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-primary);flex-shrink:0}.stat-card-value{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--color-text-heading);line-height:1.1}.stat-card-label{font-size:var(--fs-sm);color:var(--color-text-muted)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-5);color:var(--color-text-muted);text-align:center}.empty-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:var(--radius-full);background:var(--color-surface-muted);color:var(--color-text-subtle)}.dev-users{border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-4);background:var(--color-surface-muted)}.dev-users-head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.dev-users-head strong{font-size:var(--fs-sm);color:var(--color-text)}.dev-users-note{font-size:var(--fs-xs);color:var(--color-text-subtle);margin-bottom:var(--space-3)}.dev-user-list{display:grid;gap:var(--space-2)}.dev-user-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;text-align:left;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.dev-user-item:hover{border-color:var(--c-brand-300);background:var(--color-primary-soft)}.dev-user-item .name{font-weight:var(--fw-medium);color:var(--color-text)}.breadcrumb{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap;font-size:var(--fs-sm)}.breadcrumb button{display:inline-flex;align-items:center;gap:var(--space-1);border:none;background:none;cursor:pointer;color:var(--color-text-muted);padding:3px var(--space-2);border-radius:var(--radius-sm)}.breadcrumb button:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.breadcrumb .sep{display:inline-flex;align-items:center;color:var(--color-text-subtle)}.breadcrumb .current{display:inline-flex;align-items:center;padding:3px var(--space-2);color:var(--color-text-heading);font-weight:var(--fw-medium);cursor:default;overflow-wrap:anywhere}.folder-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.folder-tile{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.folder-tile:hover{border-color:var(--c-brand-300);background:var(--color-primary-soft)}.folder-tile-main{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;padding:var(--space-1) var(--space-1);border:none;background:none;cursor:pointer;text-align:left;color:inherit}.folder-tile-action{display:inline-grid;place-items:center;width:30px;height:30px;flex-shrink:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.folder-tile-action:hover{background:var(--color-surface-muted);color:var(--color-primary);border-color:var(--c-brand-300)}.folder-tile .folder-ic{color:var(--c-brand-600);flex-shrink:0}.folder-tile .folder-name{font-weight:var(--fw-medium);color:var(--color-text-heading)}.folder-picker-destination{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.folder-picker-destination-name{display:inline-flex;align-items:center;gap:var(--space-2);margin:0;font-weight:var(--fw-medium);color:var(--color-text-heading)}.folder-picker-destination-name .folder-ic{color:var(--c-brand-600);flex-shrink:0}.folder-picker-list{display:flex;flex-direction:column;gap:var(--space-2)}.folder-picker-items{list-style:none;margin:0;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;max-height:min(360px,45vh);overflow-y:auto}.folder-picker-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);border:none;border-bottom:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;text-align:left;color:inherit}.folder-picker-items li:last-child .folder-picker-item{border-bottom:none}.folder-picker-item:hover:not(:disabled){background:var(--color-primary-soft)}.folder-picker-item:disabled{opacity:.6;cursor:not-allowed}.folder-picker-item .folder-name{font-weight:var(--fw-medium);color:var(--color-text-heading)}.folder-picker-chevron{color:var(--color-text-subtle);flex-shrink:0}.folder-picker-empty{padding:var(--space-5);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.folder-picker-stale{opacity:.55;pointer-events:none;transition:opacity var(--dur-fast) var(--ease)}.section-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-subtle)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14213373;display:grid;place-items:center;z-index:var(--z-overlay);padding:var(--space-5)}.modal{width:100%;max-width:560px;max-height:90vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.modal.modal-wide{max-width:880px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.modal-title{font-size:var(--fs-md);font-weight:var(--fw-semibold)}.modal-body{padding:var(--space-5)}.modal-foot{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border)}.file-preview-frame{display:block;width:100%;min-height:640px;border:0}.file-preview-image{display:block;max-width:100%;height:auto}.checkbox{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--fs-sm)}.checkbox input{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.check-list{display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.file-drop{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-6);border:1.5px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-muted);text-align:center;cursor:pointer;color:var(--color-text-muted)}.file-drop:hover{border-color:var(--c-brand-300);color:var(--color-text)}.file-drop.drag-over{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-text)}.file-drop.is-enumerating{cursor:progress;border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-text)}.file-drop.is-enumerating:hover{border-color:var(--color-primary);color:var(--color-text)}.file-drop input[type=file]{display:none}.file-drop-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.file-list-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.file-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:240px;overflow-y:auto;padding-right:var(--space-1)}.file-chip{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.file-chip .file-chip-meta{margin-left:auto;font-size:var(--fs-xs);color:var(--color-text-subtle)}.upload-progress-bar{width:100%;height:8px;border-radius:var(--radius-pill, 999px);background:var(--color-surface-muted);border:1px solid var(--color-border);overflow:hidden}.upload-progress-bar-fill{height:100%;background:var(--color-primary);border-radius:inherit;transition:width .2s ease}.upload-active-files{display:block;min-height:1.25rem;line-height:1.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag-input{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;padding:var(--space-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface)}.tag-input input{border:none;outline:none;flex:1;min-width:120px;height:28px;background:transparent}.tag-removable{display:inline-flex;align-items:center;gap:4px;padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-primary-soft);border:1px solid var(--c-info-border);color:var(--c-brand-700);font-size:var(--fs-xs)}.tag-removable button{border:none;background:none;cursor:pointer;color:var(--c-brand-600);padding:0;line-height:1;font-size:var(--fs-sm)}.matrix-section{display:flex;flex-direction:column;gap:var(--space-3)}.matrix-section__head{display:flex;flex-direction:row;align-items:center;gap:var(--space-2)}.matrix-section__title{margin:0;font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-heading)}.hint-tip{position:relative;display:inline-flex;align-items:center;justify-content:center;color:var(--color-text-subtle);cursor:help;border-radius:var(--radius-full)}.hint-tip:hover,.hint-tip:focus-visible{color:var(--color-primary)}.hint-tip:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.hint-tip:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:0;width:max-content;max-width:260px;white-space:normal;text-align:left;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--c-neutral-900);color:var(--color-text-on-brand);font-size:var(--fs-xs);font-weight:var(--fw-regular);line-height:1.6;box-shadow:var(--shadow-md);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease;z-index:var(--z-overlay)}.hint-tip:before{content:"";position:absolute;bottom:calc(100% + 3px);left:10px;border:5px solid transparent;border-top-color:var(--c-neutral-900);opacity:0;visibility:hidden;transition:opacity .12s ease;z-index:var(--z-overlay)}.hint-tip:hover:after,.hint-tip:focus-visible:after,.hint-tip:hover:before,.hint-tip:focus-visible:before{opacity:1;visibility:visible;transform:translateY(0)}.matrix-table td.center,.matrix-table th.center{text-align:center}.matrix-table .group-cell{min-width:160px}.matrix-table .group-name{font-weight:var(--fw-medium);color:var(--color-text-heading)}.matrix-table .group-desc{font-size:var(--fs-xs);color:var(--color-text-subtle)}.perm-summary{display:inline-flex;flex-wrap:wrap;gap:var(--space-1)}.perm-source{font-size:var(--fs-xs);color:var(--color-text-subtle)}.browser-selection-surface{position:relative;-webkit-user-select:none;user-select:none;min-height:12rem;padding-bottom:var(--space-8);touch-action:none}.browser-selection-surface .table-wrap{margin-inline:0}.data-table tbody tr.is-selected,.data-table tbody tr.is-selected:hover{background:var(--color-primary-soft)}.col-actions{width:88px;text-align:right}.item-actions-row{display:inline-flex;align-items:center;justify-content:flex-end;gap:2px}.favorite-toggle{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--color-text-subtle);cursor:pointer}.favorite-toggle.size-md{width:34px;height:34px}.favorite-toggle:hover:not(:disabled){background:var(--color-surface-muted);color:var(--c-brand-500, var(--color-primary));border-color:var(--c-brand-300)}.favorite-toggle.is-active{color:#c9851a}.favorite-toggle.is-active svg{fill:currentColor}.favorite-toggle:disabled{opacity:.55;cursor:not-allowed}.item-action-trigger,.item-lock-trigger{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--color-text-subtle);cursor:pointer}.item-lock-trigger.is-locked{color:var(--color-primary);border-color:var(--c-brand-300);background:var(--color-primary-soft)}.item-lock-trigger:disabled{opacity:.55;cursor:not-allowed}.item-action-trigger:hover,.item-action-trigger[aria-expanded=true],.item-lock-trigger:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-primary);border-color:var(--c-brand-300)}.context-menu{position:fixed;z-index:80;min-width:180px;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-md, 0 8px 24px rgba(15, 23, 42, .12))}.context-menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.context-menu-item:hover,.context-menu-item:focus-visible{background:var(--color-surface-muted);outline:none}.context-menu-item.is-danger{color:var(--color-danger, #b42318)}.marquee-rect{position:absolute;pointer-events:none;border:1px solid var(--color-primary);background:color-mix(in srgb,var(--color-primary) 16%,transparent);z-index:2}.unified-item-table .file-cell{min-width:180px}@media (max-width: 860px){.app-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--layout-topbar-h) auto 1fr;grid-template-areas:"topbar" "sidebar" "content"}.app-topbar{padding:0 var(--space-4);gap:var(--space-2)}.app-topbar-title .eyebrow,.app-topbar-actions .cell-muted{display:none}.app-sidebar{flex-direction:row;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);overflow-x:auto;-webkit-overflow-scrolling:touch;border-right:none;border-bottom:1px solid var(--color-border)}.brand,.nav-section-label,.sidebar-footer{display:none}.nav{flex-direction:row;gap:var(--space-1);width:max-content}.nav-item{flex-shrink:0;white-space:nowrap;padding:var(--space-2) var(--space-3);font-size:var(--fs-sm)}.app-content{padding:var(--space-5) var(--space-4)}.app-content-inner{gap:var(--space-5)}.card-head,.card-body,.modal-head,.modal-body,.modal-foot{padding-left:var(--space-4);padding-right:var(--space-4)}.detail-grid{grid-template-columns:1fr;gap:0}.detail-grid dt{padding-bottom:var(--space-1);border-bottom:none}.detail-grid dd{padding-top:0;margin-bottom:var(--space-2)}.search-field{min-width:0;width:100%}.menu-grid,.stat-grid,.folder-grid{grid-template-columns:1fr}.col-group-name,.col-desc{width:auto}.unified-item-table .file-cell{min-width:0}.unified-item-table th:nth-child(3),.unified-item-table td:nth-child(3),.unified-item-table th:nth-child(5),.unified-item-table td:nth-child(5){display:none}.browser-selection-surface{touch-action:pan-y;min-height:0;padding-bottom:var(--space-4)}.modal-overlay{padding:var(--space-3);align-items:flex-start;padding-top:var(--space-6)}.modal{max-height:calc(100vh - var(--space-8))}}@media (max-width: 640px){.app-topbar-title h1{font-size:var(--fs-md)}.app-topbar-actions .badge{display:none}.app-topbar-actions .btn-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-topbar-actions .btn{width:32px;padding:0}.page-head-text h2{font-size:var(--fs-lg)}.data-table thead th,.data-table tbody td{padding:var(--space-2) var(--space-3)}.unified-item-table th:nth-child(2),.unified-item-table td:nth-child(2),.unified-item-table th:nth-child(4),.unified-item-table td:nth-child(4){display:none}.check-list{grid-template-columns:1fr}.file-preview-frame{min-height:360px}.login-screen{padding:var(--space-4)}.dev-user-item{flex-wrap:wrap}}.route-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:60vh;color:var(--color-text-muted, #64748b);font-size:14px}.route-loading-spinner{width:28px;height:28px;border:3px solid var(--color-border, #e2e8f0);border-top-color:var(--color-primary, #2563eb);border-radius:50%;animation:route-loading-spin .8s linear infinite}@keyframes route-loading-spin{to{transform:rotate(360deg)}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:var(--color-bg, #f8fafc)}.error-boundary-card{max-width:480px;width:100%;padding:32px;background:#fff;border:1px solid var(--color-border, #e2e8f0);border-radius:12px;box-shadow:0 8px 24px #0f172a14;text-align:center}.error-boundary-card h1{margin:0 0 12px;font-size:18px;color:var(--color-text, #0f172a)}.error-boundary-card p{margin:0 0 20px;font-size:14px;line-height:1.7;color:var(--color-text-muted, #64748b)}.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.comment-item{padding:var(--space-3);border:1px solid var(--color-border, #e2e8f0);border-radius:8px;background:var(--color-bg, #f8fafc)}.comment-meta{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2)}.comment-body{margin:0;white-space:pre-wrap;line-height:1.6}textarea.control{resize:vertical;min-height:96px;font:inherit}
