*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f8fafc;color:#0f172a;overflow:hidden;height:100vh}body.dark{background:#0f172a;color:#e2e8f0}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#f1f5f9,#cbd5e1)}.auth-card{background:#fff;border-radius:24px;padding:24px;width:100%;max-width:360px;box-shadow:0 10px 25px -5px #0000001a}.auth-card h2{margin:0 0 4px;font-size:1.5rem}.auth-card p{font-size:.8rem;margin-bottom:16px;color:#475569}.toggle-group{display:flex;gap:8px;background:#f1f5f9;padding:3px;border-radius:40px;margin-bottom:20px}.toggle-btn{flex:1;padding:6px;border-radius:30px;font-size:.8rem;font-weight:600;cursor:pointer;background:transparent;border:none}.toggle-btn.active{background:#2563eb;color:#fff}.auth-card input{width:100%;padding:10px 12px;margin:8px 0;border:1px solid #cbd5e1;border-radius:20px;font-size:.85rem}.auth-card button[type=submit]{width:100%;background:#2563eb;color:#fff;border:none;padding:10px;border-radius:30px;font-weight:600;cursor:pointer;margin-top:12px}.error-message{color:#dc2626;font-size:.7rem;text-align:center;margin-top:8px}.feature-badge{display:flex;justify-content:center;gap:12px;margin-top:20px;flex-wrap:wrap}.feature-badge span{background:#f1f5f9;padding:4px 8px;border-radius:20px;font-size:.65rem}.app{height:100vh;display:flex;flex-direction:column}.main-header{position:fixed;top:0;left:0;right:0;background:#fff;color:#0f172a;padding:4px 12px;display:flex;justify-content:space-between;align-items:center;z-index:100;box-shadow:0 2px 6px #0000001a;flex-wrap:wrap;gap:8px}body.dark .main-header{background:#1e293b;color:#e2e8f0}.header-left,.header-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.header-left h2{font-size:.9rem;margin:0}.project-info{background:#e2e8f0;padding:2px 8px;border-radius:16px;font-size:.7rem}body.dark .project-info{background:#334155}.plan-dropdown{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:20px;padding:4px 8px;font-size:.7rem}body.dark .plan-dropdown{background:#0f172a;border-color:#334155;color:#fff}@media (min-width: 700px){.header-left{flex-wrap:nowrap}.header-left .plan-dropdown{margin-left:6px}}.delete-plan-btn{background:none;border:none;cursor:pointer;color:#ef4444;font-size:.8rem}.header-btn,.mode-btn,.menu-btn{background:#f1f5f9;border:1px solid #cbd5e1;padding:4px 10px;border-radius:20px;cursor:pointer;font-size:.7rem}body.dark .header-btn,body.dark .mode-btn,body.dark .menu-btn{background:#0f172a;border-color:#334155;color:#e2e8f0}.mode-btn.active{background:#10b981;color:#fff;border-color:#10b981}.menu-container{position:relative}.dropdown-menu{position:absolute;top:100%;right:0;background:#fff;border:1px solid #cbd5e1;border-radius:8px;box-shadow:0 4px 12px #0000001a;z-index:110;min-width:140px}body.dark .dropdown-menu{background:#1e293b;border-color:#334155}.dropdown-menu ul{list-style:none;margin:0;padding:8px 0}.dropdown-menu li{padding:6px 16px;cursor:pointer;font-size:.75rem}.dropdown-menu li:hover{background:#f1f5f9}body.dark .dropdown-menu li:hover{background:#334155}.dropdown-divider{height:1px;background:#e2e8f0;margin:6px 0}body.dark .dropdown-divider{background:#334155}.canvas-area{flex:1;overflow:auto;margin-top:48px;background:#e2e8f0;position:relative}body.dark .canvas-area{background:#0f172a}.panel-header{display:flex;justify-content:space-between;align-items:center;background:#f1f5f9e6;border-radius:12px;padding:6px 10px;margin-bottom:8px;font-weight:600;color:#0f172a}body.dark .panel-header{background:#47556929;color:#e2e8f0}@media (max-width: 700px){.right-panel{right:60px;width:260px}.header-left h2{display:none}}.pins-section,.lines-section{padding:10px}.list-header-row{display:grid;grid-template-columns:1.6fr .9fr .9fr;gap:10px;padding:10px 8px;color:#475569;font-size:.75rem;font-weight:700}.pin-item,.line-item{background:#fafafa;margin:8px 0;padding:10px 12px;border-radius:14px;border-left:4px solid;display:grid;grid-template-columns:1.6fr .9fr .9fr;gap:10px;align-items:start}.pin-item:hover,.line-item:hover{transform:none;box-shadow:0 8px 18px #0f172a14}body.dark .pin-item,body.dark .line-item{background:#1e293bc7}.pin-summary,.line-summary{display:flex;flex-direction:column;gap:4px}.pin-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.pin-item-actions{display:flex;justify-content:flex-end;gap:6px;align-items:center}.pin-item-actions button,.line-item button{background:#f1f5f9f2;border:1px solid rgba(148,163,184,.25);color:#0f172a;border-radius:999px;padding:6px 10px;cursor:pointer;transition:background .1s ease;font-size:.72rem}.pin-item-actions button:hover,.line-item button:hover{background:#eef4ff}body.dark .pin-item-actions button,body.dark .line-item button{background:#1e293bd9;border-color:#64748b59;color:#e2e8f0}.pin-note{font-size:.72rem;color:#475569}body.dark .pin-note{color:#cbd5e1}.discipline-badge,.status-badge{padding:3px 7px;border-radius:999px;font-size:.65rem}.status-badge.open{background:#dc2626;color:#fff}.status-badge.in-progress{background:#f59e0b;color:#1e293b}.status-badge.completed{background:#10b981;color:#fff}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200}.modal-content{background:#fff;border-radius:16px;padding:20px;width:90%;max-width:500px;max-height:80vh;overflow-y:auto}body.dark .modal-content{background:#1e293b;color:#fff}.detail-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:210}.detail-modal{background:#fff;border-radius:18px;padding:16px;width:min(380px,calc(100% - 32px));box-shadow:0 16px 40px #0f172a2e}body.dark .detail-modal{background:#0f172a;color:#e2e8f0}.detail-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal-close-btn{border:none;background:transparent;font-size:1.4rem;cursor:pointer;color:inherit}.detail-modal label{display:block;font-size:.78rem;color:#475569;margin-bottom:10px}body.dark .detail-modal label{color:#cbd5e1}.detail-modal textarea,.detail-modal select{width:100%;border:1px solid #cbd5e1;border-radius:12px;padding:8px 10px;font-size:.85rem;margin-top:6px;background:#f8fafc;color:#0f172a}body.dark .detail-modal textarea,body.dark .detail-modal select{background:#1e293b;border-color:#334155;color:#e2e8f0}.detail-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.detail-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}.detail-modal button{border:none;border-radius:999px;padding:8px 14px;cursor:pointer;font-size:.82rem;background:#e2e8f0;color:#0f172a}.detail-modal button:hover{background:#dbeafe}.detail-modal button.danger{background:#f87171;color:#fff}.detail-modal button.danger:hover{background:#ef4444}.line-detail-panel{position:fixed;top:90px;right:20px;width:280px;background:#fffffff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(148,163,184,.2);border-radius:18px;padding:14px;z-index:95;box-shadow:0 18px 40px #0f172a1f}body.dark .line-detail-panel{background:#0f172aeb;border-color:#47556959}.line-detail-panel .panel-header{margin-bottom:10px;color:#0f172a}body.dark .line-detail-panel .panel-header{color:#e2e8f0}.line-detail-panel label{display:block;font-size:.78rem;color:#475569;margin-bottom:10px}body.dark .line-detail-panel label{color:#cbd5e1}.line-detail-panel input,.line-detail-panel textarea,.line-detail-panel select{width:100%;border-radius:12px;border:1px solid #cbd5e1;padding:8px 10px;font-size:.85rem;margin-top:6px}body.dark .line-detail-panel input,body.dark .line-detail-panel textarea,body.dark .line-detail-panel select{background:#1e293b;color:#e2e8f0;border-color:#334155}.line-detail-panel .detail-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.line-detail-panel .detail-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}.line-detail-panel button{border:none;border-radius:999px;padding:8px 12px;cursor:pointer;font-size:.82rem;background:#e2e8f0;color:#0f172a}.line-detail-panel button.danger{background:#f87171;color:#fff}.line-detail-panel button:hover{background:#dbeafe}.line-detail-panel button.danger:hover{background:#ef4444}.modal-header{display:flex;justify-content:space-between;margin-bottom:16px}.project-item{background:#f1f5f9;margin:8px 0;padding:10px;border-radius:8px}body.dark .project-item{background:#0f172a}.badge{background:#e2e8f0;padding:2px 6px;border-radius:12px;font-size:.7rem}.buttons{display:flex;gap:8px;margin-top:6px}.new-form{margin-top:12px;display:flex;flex-direction:column;gap:8px}.member{display:flex;justify-content:space-between;margin:8px 0;align-items:center}.online-btn{background:#2563eb;border-radius:30px;padding:2px 10px;cursor:pointer;font-size:.7rem;color:#fff;border:none;margin-left:8px}.canvas-container{position:relative;width:100%;min-height:100%;background:#e2e8f0;overflow:auto;cursor:crosshair}body.dark .canvas-container{background:#0f172a}.plan-wrapper{position:absolute}.resize-handle{position:absolute;bottom:0;right:0;width:12px;height:12px;background:#2563eb;cursor:se-resize}.pin-marker{position:absolute;width:20px;height:20px;border-radius:50%;border:2px solid white;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff;cursor:pointer;z-index:20}.pin-marker.selected{box-shadow:0 0 0 3px #fffc,0 0 0 4px #3b82f6e6}.pin-tooltip{position:absolute;top:26px;left:50%;transform:translate(-50%);padding:4px 8px;background:#0f172af2;color:#fff;border-radius:8px;font-size:.6rem;white-space:nowrap;pointer-events:none;z-index:40}.pin-cursor-preview{position:absolute;width:24px;height:24px;border:2px solid #2563eb;border-radius:50%;background:#2563eb26;pointer-events:none;z-index:40}.line-svg{position:absolute;top:0;left:0;pointer-events:none}.save-position-btn{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:#10b981;color:#fff;border:none;padding:6px 16px;border-radius:30px;cursor:pointer;z-index:50}.zoom-controls{position:fixed;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:8px;background:#fffc;padding:8px;border-radius:30px;z-index:95}body.dark .zoom-controls{background:#1e293bcc}.zoom-controls button{background:#fff;border:1px solid #ccc;border-radius:30px;width:32px;height:32px;cursor:pointer}body.dark .zoom-controls button{background:#0f172a;border-color:#334155;color:#fff}.line-controls{position:fixed;bottom:90px;left:50%;transform:translate(-50%);z-index:120;display:flex;gap:10px;background:#fffffff2;padding:10px 12px;border-radius:999px;box-shadow:0 12px 30px #0f172a2e}.line-controls button{background:#111827;color:#fff;border:none;padding:8px 14px;border-radius:999px;cursor:pointer;font-weight:600}.line-controls button:last-child{background:#ef4444}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;justify-content:center;align-items:center;z-index:200}.modal-card{width:min(520px,calc(100% - 32px));background:#fff;border-radius:18px;padding:24px;box-shadow:0 32px 80px #0f172a33}body.dark .modal-card{background:#0f172a;color:#e2e8f0}.modal-card h3{margin:0 0 12px}.modal-card label{display:block;margin-top:12px;font-size:.85rem;font-weight:600;color:#334155}body.dark .modal-card label{color:#cbd5e1}.modal-card textarea,.modal-card input,.modal-card select{width:100%;margin-top:6px;padding:10px 12px;border-radius:12px;border:1px solid #cbd5e1;background:#f8fafc;color:#0f172a;font-size:.95rem}body.dark .modal-card textarea,body.dark .modal-card input,body.dark .modal-card select{background:#111827;border-color:#334155;color:#e2e8f0}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.primary-btn{background:#2563eb;color:#fff;border:none;border-radius:999px;padding:10px 16px;cursor:pointer}.secondary-btn{background:#e2e8f0;color:#0f172a;border:none;border-radius:999px;padding:10px 16px;cursor:pointer}body.dark .secondary-btn{background:#1e293b;color:#e2e8f0}.empty-canvas{text-align:center;padding:60px;color:#64748b}textarea,select{width:100%;margin:8px 0;padding:6px}
